h$ ɩ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu vwxyz{|}~                                                !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#$%%%%&&&&&&&&&&&&&&&&&&'''''''''''''''''(((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))*+++++++++++++++++++++,,,,,,,,,,,,,----------------    ./00000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111112222                                 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3                 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7                8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % : : : : ; ; ; ; < < < < < < < < < < < < < < < < = = = = = = = = = = = = = = = = = = = = = = = = = > > > > > > > > > > > > > > ? ? ? ? ? ? ? ? ? ? ? @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAABBBBBBBBBBBBBCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRSSTTTTTTTTTTTTTTTTTTTTTTTTUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666WWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\                                      ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !_!_!_!_!_!_!_!_!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`!`"`"a"a"a"a"a"a"a"a"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$"$#$#$#$#$#$#$#$#$#$#$#$#$#$#$#$# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #b#b#b#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#B#c#d#d$d$d$d$d$d$d$d$d$d$d$d$d$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$e$f$f$f$f$f$g$g$g$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$h$i$i$i$i$i$i$i$i$i$i$i$i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&i&j&j&j&j&j&j&j&j&j&j&j&j&k&k&k&k&k&k&l&l&l&m&n&o&o&o&n&o&m&n&n&o&o&o&m&p&p&p&p&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#&#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'#'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'q'o'q'q'q'q'q'q'q'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(7(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(r(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(s(t(t(t(t(t(t(t(u(u(u(u(u(u(u(u(u(u(u(u(u)u)u)u)u)u)u)u)u)u)u)u)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)v)w)w)w)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)x)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y)y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*y*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W+W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W/W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W0W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W1W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2W2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z2z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z3z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z4z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z5z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6z6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{6{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7{7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|7|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|8|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|9|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:|:}:}:}:}:}:}:}:}:}:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l:l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;l;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<================================================================================================================================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????@@@@@@@@@@@@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBB2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2CoCoCoCoCoDoDoDoDoDoDoDoDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFnFnFnFnFmFmFmFmFnFnFnFmFnFnFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFmFoFmFmFmFmFmFmFmFmFmFmFmFmFmFoFoFoFoFoFpFpF:FmFoFoFoFmFoFoF:F:FoFoFoFoFoFoFoFoFnGnGoGnGmGmGmGmGmGmGmGmGmGmGmGmGmGmGmGmGmGmGmGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIpIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoJoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKoKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnMnNnNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqTqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUqUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*Z*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*[*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^________________________________________________________________________________________________________________________________````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:m:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:n:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:o:oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                        € À Ā ŀ ƀ ǀ Ȁ ɀ ʀ ˀ ̀ ̀ ΀ π Ѐ р Ҁ Ӏ Ԁ Հ ր ׀ ؀ ـ ڀ ۀ ܀ ݀ ހ ߀                                                                                                    Á ā Ł Ɓ ǁ ȁ Ɂ ʁ ˁ ́ ́ ΁ ρ Ё с ҁ Ӂ ԁ Ձ ց ׁ ؁ ف ځ ہ ܁ ݁ ށ ߁                                                                                                   ‚  à ł Ƃ ǂ Ȃ ɂ ʂ ˂ ̂ ͂ ΂ ς Ђ т ҂ ӂ Ԃ Ղ ւ ׂ ؂ ق ڂ ۂ ܂ ݂ ނ ߂                                                                                                   ƒ à ă Ń ƃ ǃ ȃ Ƀ ʃ ˃ ̃ ̓ ΃ σ Ѓ у ҃ Ӄ ԃ Ճ փ ׃ ؃ ك ڃ ۃ ܃ ݃ ރ ߃                                 „ÄĄńƄDŽȄɄʄ˄̄̈́΄τЄф҄ӄԄՄքׄ؄لڄۄ܄݄ބ߄bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb…bÅbąbŅbƅbDžbȅbɅbʅb˅b̅bͅb΅bυbЅbхb҅bӅbԅbՅbօbׅb؅bمbڅbۅb܅b݅bޅb߅bbbbbbbbbbbbbbbbbbbb†ÆĆņƆdžȆɆʆˆ̆͆ΆφІц҆ӆԆՆֆ׆؆نچۆ܆݆ކ߆‡ÇćŇƇLJȇɇʇˇ͇̇·χЇч҇ӇԇՇևׇ؇هڇۇ܇݇އ߇ˆÈĈňƈLjȈɈʈˈ͈̈ΈψЈш҈ӈԈՈֈ׈؈وڈۈ܈݈ވ߈‰ÉĉʼnƉljȉɉʉˉ͉̉ΉωЉщ҉ӉԉՉ։׉؉ىډۉ܉݉މ߉ŠÊĊŊƊNJȊɊʊˊ̊͊ΊϊЊъҊӊԊՊ֊׊؊يڊۊ܊݊ފߊ‹ËċŋƋNjȋɋʋˋ̋͋΋ϋЋыҋӋԋՋ֋׋؋ًڋۋ܋݋ދߋŒÌČŌƌnjȌɌʌˌ̌͌ΌόЌьҌӌԌՌ֌׌،ٌڌی܌݌ތߌÍčōƍǍȍɍʍˍ͍̍΍ύЍэҍӍԍՍ֍׍؍ٍڍۍ܍ݍލߍŽÎĎŎƎǎȎɎʎˎ͎̎ΎώЎюҎӎԎՎ֎׎؎َڎێ܎ݎގߎÏďŏƏǏȏɏʏˏ̏͏ΏϏЏяҏӏԏՏ֏׏؏ُڏۏ܏ݏޏߏ              ÐĐŐƐǐȐɐʐː̐͐ΐϐАѐҐӐԐՐ֐אِؐڐېܐݐސߐ‘ÑđőƑǑȑɑʑˑ̑͑ΑϑБёґӑԑՑ֑בّؑڑۑܑݑޑߑ’ÒĒŒƒǒȒɒʒ˒̒͒ΒϒВђҒӒԒՒ֒גْؒڒےܒݒޒߒ“ÓēœƓǓȓɓʓ˓͓̓ΓϓГѓғӓԓՓ֓דؓٓړۓܓݓޓߓ////////////////////////”/Ô/Ĕ/Ŕ/Ɣ/ǔ/Ȕ/ɔ/ʔ/˔/̔/͔/Δ/ϔ/Д/є/ҔӔԔՔ֔הؔٔڔ۔ܔݔޔߔ•ÕĕŕƕǕȕɕʕ˕͕̕ΕϕЕѕҕӕԕՕ֕וٕؕڕەܕݕޕߕ–ÖĖŖƖǖȖɖʖ˖̖͖ΖϖЖіҖӖԖՖ֖זٖؖږۖܖݖޖߖ—×ėŗƗǗȗɗʗ˗̗͗ΗϗЗїҗӗԗ՗֗חؗٗڗۗܗݗޗߗ˜ØĘŘƘǘȘɘʘ˘̘͘ΘϘИјҘӘԘ՘֘טؘ٘ژۘܘݘޘߘ™ÙęřƙǙșəʙ˙̙͙ΙϙЙљҙәԙՙ֙יؙٙڙۙܙݙޙߙšÚĚŚƚǚȚɚʚ˚͚̚ΚϚКњҚӚԚ՚֚ךؚٚښۚܚݚޚߚ›ÛěśƛǛțɛʛ˛̛͛ΛϛЛћқӛԛ՛֛כ؛ٛڛۛܛݛޛߛœÜĜŜƜǜȜɜʜ˜̜͜ΜϜМќҜӜԜ՜֜ל؜ٜڜۜܜݜޜߜÝĝŝƝǝȝɝʝ˝̝͝ΝϝНѝҝӝԝ՝֝ם؝ٝڝ۝ܝݝޝߝžÞĞŞƞǞȞɞʞ˞̞͞ΞϞОўҞӞԞ՞֞מ؞ٞڞ۞ܞݞޞߞŸßğşƟǟȟɟʟ˟̟͟ΟϟПџҟӟԟ՟֟ן؟ٟڟ۟ܟݟޟߟ àĠŠƠǠȠɠʠˠ̠͠ΠϠРѠҠӠԠՠ֠נؠ٠ڠ۠ܠݠޠߠ¡áġšơǡȡɡʡˡ̡͡ΡϡСѡҡӡԡա֡סء١ڡۡܡݡޡߡ¢âĢŢƢǢȢɢʢˢ̢͢΢ϢТѢҢӢԢբ֢עآ٢ڢۢܢݢޢߢ£ãģţƣǣȣɣʣˣ̣ͣΣϣУѣңӣԣգ֣ףأ٣ڣۣܣݣޣߣ¤äĤŤƤǤȤɤʤˤ̤ͤΤϤФѤҤӤԤդ֤פؤ٤ڤۤܤݤޤߤ¥åĥťƥǥȥɥʥ˥̥ͥΥϥХѥҥӥԥե֥ץإ٥ڥۥܥݥޥߥ¦æĦŦƦǦȦɦʦ˦̦ͦΦϦЦѦҦӦԦզ֦צئ٦ڦۦܦݦަߦ§çħŧƧǧȧɧʧ˧̧ͧΧϧЧѧҧӧԧէ֧קا٧ڧۧܧݧާߧ¨èĨŨƨǨȨɨʨ˨̨ͨΨϨШѨҨӨԨը֨רب٨ڨۨܨݨިߨ©éĩũƩǩȩ Safe-Inferredd %&'() *+,-  ./012356$#"78_ab`9:! ;IL<=>?@AJKBQOPCDEFMNfghijklmnopqtvwx}~ %&'() *+,-  ./012356$#"78_ab`9:! ;IL<=>?@AJKBQOPCDEFMNfghijklmnopqtvwx}~ Safe-InferredghcSettings for what GHC this is. Safe-Inferred#NoneU cdeR Redc Safe-InferredghcPaths to various files and directories used by GHC, including those that provide more settings.NoneDNone Safe-InferredghcA monad that can catch exceptions. A minimal definition requires a definition of .Implementations on top of D should implement # to eventually call the primitive ɩ. These are used for implementations that support asynchronous exceptions. The default implementations of  and  use ! thus rarely require overriding.ghcGeneralised version of ʩ, allowing an arbitrary exception handling monad instead of just D.ghcGeneralised version of ˩, allowing an arbitrary exception handling monad instead of just D.ghcGeneralised version of ̩, allowing an arbitrary exception handling monad instead of just D.ghcGeneralised version of ͩ, allowing an arbitrary exception handling monad instead of just D.ghcGeneralised version of Ω, allowing an arbitrary exception handling monad instead of just D.ghcAlways executes the first argument. If this throws an exception the second argument is executed and the exception is raised again.ϩЩѩҩөԩթ̩ͩ֩שrة٩Ωک۩ܩݩީߩstɩ˩ʩ|y{z  Safe-InferredbNoneghc,Converts a 64-bit word into a base-62 string Safe-Inferred5  Safe-InferredIghcDefault maximum depth for both class instance search and type family reduction. See also #5395.ghcDefault maximum constraint-solver iterations Typically there should be very few   Safe-InferredDghcWhen invoking external tools as part of the compilation pipeline, we pass these a sequence of options on the command-line. Rather than just using a list of Strings, we use a type that allows us to distinguish between filepaths and 'other stuff'. The reason for this is that this type gives us a handle on transforming filenames, and filenames only, to whatever format they're expected to be on a particular platform.None ghc File name.ghcFile modification time.ghc File owner.ghc File group.ghc File mode.ghc File size.ghc File bytes.! Safe-Inferred '(./25$ ghc2A sequence of nodes. May be any of four shapes (OO, OC, CO, CC). Open at the entry means single entry, mutatis mutandis for exit. A closedclosed block is a basic/ block and can't be extended further. Clients should avoid manipulating blocks and should stick to either nodes or graphs.ghc!Maybe type indexed by open/closedghc6Either type indexed by closed/open using type familiesghcUsed at the type level to indicate "open" vs "closed" structure.ghcAn "open" structure with a unique, unnamed control-flow edge flowing in or out.  Fallthrough2 and concatenation are permitted at an open point.ghcA "closed" structure which supports control transfer only through the use of named labels---no "fallthrough" is permitted. The number of control-flow edges is unconstrained.ghcSplit a closed block into its entry node, open middle block, and exit node.ghc#map a function over the nodes of a ghc A strict ghcmap over a block, with different functions to apply to first nodes, middle nodes and last nodes respectively. The map is strict.))"None567:: Safe-InferredghcmapAndUnzipM for triplesghcMonadic version of mapAccumLghcMonadic version of mapSndghcMonadic version of concatMapghcApplicative version of mapMaybeghcMonadic version of fmapghcMonadic version of fmapghcMonadic version of &, aborts the computation at the first True valueghcMonad version of ~&, aborts the computation at the first False valueghcMonadic version of orghc1Monadic version of foldl that discards its resultghc-Monadic version of fmap specialised for MaybeghcMonadic version of when#, taking the condition in the monadghcMonadic version of unless#, taking the condition in the monadghcLike ), only it reverses the sense of the test.ghccombining functionghc initial stateghcinputsghcfinal state, outputs#46#"$YXZ#6#"$4YXZ&NoneQghcThis type is very similar to , but it omits the constructors that involve pretty-printing via % . Due to the implementation of z for  , this type can be caught as a .Note that this should only be used for throwing exceptions, not for catching, as 3 will not be converted to this type when catching.ghc(Some other fatal signal (SIGHUP,SIGTERM)ghc*Prints the short usage msg after the errorghcA problem with the command line arguments, but don't print usage.ghcThe  impossible happened.ghcThe user tickled something that's known not to work yet, but we're not counting it as a bug.ghcAn installation problem.ghc&An error in the user's code, probably.ghcThe name of this GHC.ghc;Append a description of the given exception to this string.ghcPanics and asserts.ghcPanics and asserts.ghcPanics and asserts.ghcThrow a failed assertion exception for a given filename and line number.None) ghc=GHC's own exception type error messages all take the form:   location:  error If the location is on the command line, or in GHC itself, then  location9="ghc". All of the error types below correspond to a  location of "ghc", except for ProgramError (where the string is assumed to contain a location already, so we don't print one).ghc(Some other fatal signal (SIGHUP,SIGTERM)ghc*Prints the short usage msg after the errorghcA problem with the command line arguments, but don't print usage.ghcThe  impossible happened.ghcThe user tickled something that's known not to work yet, but we're not counting it as a bug.ghcAn installation problem.ghc&An error in the user's code, probably.ghcShow an exception as a string.ghcShow an exception which can possibly throw other exceptions. Used when displaying exception thrown within TH code.ghc;Append a description of the given exception to this string.Note that this uses  >, which may have some uninitialized fields if invoked before  has been called. If the error message to be printed includes a pretty-printer document which forces one of these fields this call may bottom.ghcLike try, but pass through UserInterrupt and Panic exceptions. Used when we want soft failures when reading interface files, for example. TODO: I'm not entirely sure if this is catching what we really want to catchghcTemporarily install standard signal handlers for catching ^C, which just throw an exception in the current thread.$rs|{zy$|{zyrs'None(None&) Safe-Inferred+ Safe-InferredghcBranch condition codes., Safe-Inferred5[  - Safe-Inferredghc Stream m a b is a computation in some Monad m/ that delivers a sequence of elements of type a followed by a result of type b.!More concretely, a value of type  Stream m a b can be run using  runStream in the Monad m, and it delivers eitherthe final result: Left b, or Right (a,str), where a( is the next element in the stream, and str4 is a computation to get the rest of the stream.4Stream is itself a Monad, and provides an operation  that produces a new element of the stream. This makes it convenient to turn existing monadic computations into streams.The idea is that Stream is useful for making a monadic computation that produces values from time to time. This can be used for knitting together two complex monadic operations, so that the producer does not have to produce all its values before the consumer starts consuming them. We make the producer into a Stream, and the consumer pulls on the stream each time it wants a new value.ghcTurn a Stream into an ordinary list, by demanding all the elements.ghcTurn a Stream into an ordinary list, by demanding all the elements.ghcTurn a list into a #, by yielding each element in turn.ghc&Apply a function to each element of a , lazilyghc/Apply a monadic operation to each element of a , lazilyghcanalog of the list-based  on Streams. This is a simple way to map over a Stream while carrying some state around.   NoneZghcExpand occurrences of the $tooldir interpolation in a string on Windows, leave the string untouched otherwise.ghc.Returns a Unix-format path pointing to TopDir.ghc,Maybe TopDir path (without the '-B' prefix).ghcTopDir (in Unix format  separated)ghctopdir. Safe-InferredghcCheck if ANSI escape sequences can be used to control color in stderr.0None ghc)Settings for other executables GHC calls.Probably should futher split down by phase, or split between platform-specific and platform-agnostic.ghcLLVM: opt llvm optimiserghcLLVM: llc static compilerghcLLVM: c compilerghc?cached Fingerprint of sOpt_P See Note [Repeated -optP hashing]ghcLLVM: llvm optimiserghcLLVM: llc static compilerghcLLVM: c compilerghc iserv options''1NoneNone-3 !ghc'A call stack constraint, but only when  isDebugOn.ghc+Apply a function iff some condition is met.ghcA for loop: Compose a function with itself n times. (nth rather than twice)ghc3Like filter, only it reverses the sense of the testghcUses a function to determine which of two output lists an input element should joinghc is a kind of 0 that is lazy in the second list (observe the ~)ghc is like  but is lazy in the second list. The length of the output is always the same as the length of the first list.ghc is like  but is lazy in the second and third lists. The length of the output is always the same as the length of the first list.ghc takes a list of Bools and a list of some elements and filters out these elements for which the corresponding value in the list of Bools is False. This function does not check whether the lists have equal length.ghc takes a list of Bools and two lists as input, and outputs a new list consisting of elements from the last two input lists. For each Bool in the list, if it is L;, then it takes an element from the former list. If it is I, it takes an element from the latter list. The elements taken correspond to the index of the Bool in its list. For example: filterByLists [True, False, True, False] "abcd" "wxyz" = "axcz" This function does not check whether the lists have equal length.ghc takes a list of Bools and a list of some elements and partitions the list according to the list of Bools. Elements corresponding to L+ go to the left; elements corresponding to I go to the right. For example, ;partitionByList [True, False, True] [1,2,3] == ([1,3], [2]) This function does not check whether the lists have equal length; when one list runs out, the function stops.ghcstretchZipWith p z f xs ys stretches ys by inserting z in the places where p returns TrueghcThis has the effect of making the two lists have equal length by dropping the tail of the longer one.ghcatLength atLen atEnd ls n unravels list ls to position n . Precisely:  atLength atLenPred atEndPred ls n | n < 0 = atLenPred ls | length ls < n = atEndPred (n - length ls) | otherwise = atLenPred (drop n ls) ghc &(lengthExceeds xs n) = (length xs > n)ghc '(lengthAtLeast xs n) = (length xs >= n)ghc "(lengthIs xs n) = (length xs == n)ghc %(lengthIsNot xs n) = (length xs /= n)ghc &(lengthAtMost xs n) = (length xs <= n)ghc ((lengthLessThan xs n) == (length xs < n)ghcTrue if length xs == length ysghcTrue if length xs <= length ysghcTrue if length xs < length ysghcSplit a list into chunks of n elementsghc8Replace the last element of a list with another element.ghc=Remove duplicates but keep elements in order. O(n * log n)ghc+spanEnd p l == reverse (span p (reverse l)). The first list returns actually comes after the second list (when you look at the input list).ghc-Get the last two elements in a list. Partial!ghcSplit a list into its last element and the initial part of the list. %snocView xs = Just (init xs, last xs) for non-empty lists. snocView xs = Nothing otherwise. Unless both parts of the result are guaranteed to be used prefer separate calls to last + init. If you are guaranteed to use both, this will be more efficient.ghc=Convert a word to title case by capitalising the first letter ghcSearch for possible matches to the users input in the given list, returning a small number of ranked results ghc*Determine the $log_2$ of exact powers of 2 ghcA sample hash function for Strings. We keep multiplying by the golden ratio and adding. The implementation is: hashString = foldl' f golden where f m c = fromIntegral (ord c) * magic + hashInt32 m magic = 0xdeadbeef2Where hashInt32 works just as hashInt shown above.Knuth argues that repeated multiplication by the golden ratio will minimize gaps in the hash space, and thus it's a good choice for combining together multiple keys to form one.Here we know that individual characters c are often small, and this produces frequent collisions if we use ord c alone. A particular problem are the shorter low ASCII and ISO-8859-1 character strings. We pre-multiply by a magic twiddle factor to obtain a good distribution. In fact, given the following test: testp :: Int32 -> Int testp k = (n - ) . length . group . sort . map hs . take n $ ls where ls = [] : [c : l | l <- ls, c <- ['\0'..'\xff']] hs = foldl' f golden f m c = fromIntegral (ord c) * k + hashInt32 m n = 100000!We discover that testp magic = 0.SW  S    W  9 3 23None6^ ghcA colour/style for use with coloured. ghc;Parse the colour scheme from a string (presumably from the  GHC_COLORS environment variable). ghcAllow colours to be combined (e.g. bold + red); In case of conflict, right side takes precedence.  None-5?7 ghcTakes a list of Maybes and returns the first Just if there is one, or Nothing otherwise. ghcFlipped version of  fromMaybe, useful for chaining. ghcTry performing an D action, failing on error.AJK    44None? ghcA  5 is a pointer to some array of Latin-1 encoded chars. ghcA  : is a UTF-8 encoded string together with a unique ID. All  s are stored in a global hashtable to support fast O(1) comparison.It is also associated with a lazy reference to the Z-encoding of this string which is used by the compiler internally. ghc*Lazily computed z-encoding of this string.Since  s are globally memoized this is computed at most once for any given string. ghc1Gives the UTF-8 encoded bytes corresponding to a  ghc Create a   from an existing #; the difference between this and   is that we don't have to copy the bytes if the string is new to the table. ghc Create a   from an existing #; the difference between this and   is that we don't have to copy the bytes if the string is new to the table. ghcCreates a UTF-8 encoded   from a  ghc Creates a   from a UTF-8 encoded [Word8] ghcReturns the length of the   in characters ghcReturns True if the   is empty ghc"Unpacks and decodes the FastString ghc!Returns a Z-encoded version of a  . This might be the original, if it was already Z-encoded. The first time this function is applied to a particular  , the results are memoized. ghc Outputs a   with no decoding at all,, that is, you get the actual bytes in the   written to the . ghcWrap an unboxed address into a  . ghc Encode a  into a newly allocated   using Latin-1 encoding. The original string must not contain non-Latin-1 characters (above codepoint 0xff). ghc Decode a   back into a  using Latin-1 encoding. This does not free the memory associated with  . ghcReturn the length of a  + + 5NoneJ ghcA StringBuffer is an internal pointer to a sized chunk of bytes. The bytes are intended to be *immutable*. There are pure operations to read the contents of a StringBuffer.A StringBuffer may have a finalizer, depending on how it was obtained. ghcRead a file into a  . The resulting buffer is automatically managed by the garbage collector. ghc Encode a  into a   as UTF-8. The resulting buffer is automatically managed by the garbage collector. ghc/Return the first UTF-8 character of a nonempty  2 and as well the remaining portion (analogous to ). Warning:# The behavior is undefined if the   is empty. The result shares the same buffer as the original. Similar to 0, if the character cannot be decoded as UTF-8, '\0' is returned. ghc/Return the first UTF-8 character of a nonempty   (analogous to ). Warning:# The behavior is undefined if the   is empty. Similar to 0, if the character cannot be decoded as UTF-8, '\0' is returned. ghc Return a  7 with the first UTF-8 character removed (analogous to ). Warning:# The behavior is undefined if the  ? is empty. The result shares the same buffer as the original. ghc Return a   with the first n bytes removed. Warning:2 If there aren't enough characters, the returned   will be invalid and any use of it may lead to undefined behavior. The result shares the same buffer as the original. ghc-Compute the difference in offset between two   s that share the same buffer. Warning:# The behavior is undefined if the  s use separate buffers. ghcCheck whether a   is empty (analogous to ). ghc Computes a   which points to the first character of the wanted line. Lines begin at 1. ghcDecode the first n bytes of a   as UTF-8 into a . Similar to , if the character cannot be decoded as UTF-8, they will be replaced with '\0'. ghcReturn the previous n* characters (or fewer if we are less than n characters into the buffer. ghcn, the number of bytes ghcn, the number of bytes ghcn, the number of bytes  NoneL ghc$Is this an acceptable variable name? ghc'Is this an acceptable constructor name? ghc Is this an acceptable type name? ghcIs this an acceptable alphanumeric variable name, assuming it starts with an acceptable letter? ghcIs this an acceptable symbolic variable name, assuming it starts with an acceptable character? ghcIs this an acceptable alphanumeric constructor name, assuming it starts with an acceptable letter? ghcIs this an acceptable symbolic constructor name, assuming it starts with an acceptable character?   8NoneMS ghcReplicate an 8-bit character 9"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableNone_p' ghcRendering mode. ghcNormal ghcWith zig-zag cuts ghc%No indentation, infinitely long lines ghcAll on one line ghcA rendering style. ghcThe rendering mode ghcLength of line, in chars ghc%Ratio of line length to ribbon length ghcThe TextDetails data typeA TextDetails represents a fragment of text that will be output at some point. ghcA single Char fragment ghcA whole String fragment ghcThe abstract type of documents. A Doc represents a *set* of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout. ghcA document of height and width 1, containing a literal character. ghc5A document of height 1 containing a literal string.   satisfies the following laws:   s     t =   (st)  ""   x = x, if x non-empty8The side condition on the last law is necessary because   "" has height 1, while   has no height. ghcSome text with any width. (text s = sizedText (length s) s) ghcSome text, but without any width. Use for non-printing text such as a HTML or Latex tags ghc2The empty document, with no height and no width.   is the identity for  ,  ,   and  ), and anywhere in the argument list for  ,  ,  ,  ,   etc. ghcReturns L if the document is empty ghcApply   to   if boolean is true. ghcList version of  . ghcList version of  . ghcList version of  . ghcNest (or indent) a document by a given number of positions (which may also be negative).   satisfies the laws:   0 x = x   k (  k' x) =   (k+k') x   k (x   y) =   k z     k y   k (x   y) =   k x     k y   k   =  x     k y = x   y, if x non-empty6The side condition on the last law is needed because   is a left identity for  . ghc "hang d1 n d2 = sep [d1, nest n d2] ghcApply   to the arguments if the first   is not empty. ghc punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn] ghcAbove, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example: % text "hi" $$ nest 5 (text "there") lays out as  hi there rather than  hi there  is associative, with identity  , and also satisfies(x   y)   z = x   (y   z), if y non-empty. ghcAbove, with no overlapping.   is associative, with identity  . ghc Beside.   is associative, with identity  . ghc;Beside, separated by space, unless one of the arguments is  .   is associative, with identity  . ghcEither   or  . ghcEither   or  . ghc"Paragraph fill" version of  . ghc"Paragraph fill" version of  . ghcThe default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5). ghc Render the Doc to a String using the given Style. ghcDefault TextDetails printer ghc The general rendering interface. ghcA ';' character ghcA ',' character ghcA : character ghcA space character ghcA '=' character ghcA '(' character ghcA ')' character ghcA '[' character ghcA ']' character ghcA '{' character ghcA '}' character ghc int n = text (show n) ghc integer n = text (show n) ghc float n = text (show n) ghc double n = text (show n) ghc rational n = text (show n) ghc%See Note [Print Hexadecimal Literals] ghcWrap document in '...' ghcWrap document in "..." ghcWrap document in (...) ghcWrap document in [...] ghcWrap document in {...} ghcRendering modeghc Line lengthghcRibbons per lineghcWhat to do with textghcWhat to do at the endghc The documentghcResult  5 5 6 6%None{=ghc'Represents a pretty-printable document.To display an , use  ,  ,  , or  . Avoid calling  . directly as it breaks the abstraction layer.ghcJust warn about an assertion failure, recording the given file and line number. Should typically be accessed with the WARN macros ghcWhen we print a binder, we often want to print its type too. The OutputableBndr class encapsulates this idea. ghc  is used to tell the thing that prints binder what language construct is binding the identifier. This can be used to decide how much info to print. Also see Note [Binding-site specific printing] in PprCore ghcThe x in (x. e) ghc+The x in case scrut of x { (y,z) -> ... } ghc+The y,z in case scrut of x { (y,z) -> ... } ghcThe x in (let x = rhs in e) ghc(Class designating that some type has an  representation ghcFor a given package, we need to know whether to print it with the component id to disambiguate it. ghcFor a given module, we need to know whether to print it with a package name to disambiguate it. ghcGiven a Name's   and (, decide whether and how to qualify it. ghcWhen printing code that contains original names, we need to map the original names back to something the user understands. This is the purpose of the triple of functions that gets passed around when rendering . ghc$NB: This won't ever show package IDs ghc!Style for printing error messages ghc(This is not a recommended way to render ,, since it breaks the abstraction layer of . Prefer to use  ,  ,  , or   instead. ghc6Truncate a list that is longer than the current depth. ghc,Says what to do with and without -dppr-debug ghc7Says what to do with -dppr-debug; without, return empty ghcThe analog of   for , which tries to make sure the terminal doesn't get screwed up by the ANSI color codes if an exception is thrown during pretty-printing. ghcLike   but appends an extra newline. ghcLike   but specialized with   and   -. This is typically used to output C-- code. ghcAn efficient variant of   specialized for   that outputs to a  . ghcdoublePrec p n shows a floating point number n with p. digits of precision after the decimal point. ghcIndent  some specified amount ghc Join two $ together horizontally without a gap ghc Join two . together horizontally with a gap between them ghc Join two  together vertically; if there is no vertical overlap it "dovetails" the two onto one line ghc Join two  together vertically ghc Concatenate  horizontally ghc Concatenate + horizontally with a space between each one ghc Concatenate  vertically with dovetailing ghcSeparate: is either like   or like  , depending on what fits ghcCatenate: is either like   or like  , depending on what fits ghcA paragraph-fill combinator. It's much like sep, only it keeps fitting things on one line until it can't fit any more. ghcThis behaves like  , but it uses  ( for horizontal conposition rather than  ghcThis behaves like  , but does not indent the second document when the header is empty. ghc.Apply the given colour/style for the argument.)Only takes effect if colours are enabled. ghc2Special combinator for showing character literals. ghc/Special combinator for showing string literals. ghc3Special combinator for showing bytestring literals. ghc0Special combinator for showing unboxed literals. ghc9Normalise, escape and render a string representing a pathe.g. "c:\whatever" ghcReturns the separated concatenation of the pretty printed things. ghcReturns the comma-separated concatenation of the pretty printed things. ghcReturns the comma-separated concatenation of the quoted pretty printed things. ,y,z] ==> `x', `y', `z' ghc&Converts an integer to a verbal index: speakNth 1 = text "first" speakNth 5 = text "fifth" speakNth 21 = text "21st" ghc-Converts an integer to a verbal multiplicity: speakN 0 = text "none" speakN 5 = text "five" speakN 10 = text "10" ghcConverts an integer and object description to a statement about the multiplicity of those objects: speakNOf 0 (text "melon") = text "no melons" speakNOf 1 (text "melon") = text "one melon" speakNOf 3 (text "melon") = text "three melons" ghcDetermines the pluralisation suffix appropriate for the length of a list: plural [] = char 's' plural ["Hello"] = empty plural ["Hello", "World"] = char 's' ghcDetermines the form of to be appropriate for the length of a list: isOrAre [] = text "are" isOrAre ["Hello"] = text "is" isOrAre ["Hello", "World"] = text "are" ghcDetermines the form of to do appropriate for the length of a list: doOrDoes [] = text "do" doOrDoes ["Hello"] = text "does" doOrDoes ["Hello", "World"] = text "do" ghc&Throw an exception saying "bug in GHC" ghc3Throw an exception saying "this isn't finished yet" ghcThrow an exception saying "bug in pgm being compiled" (used for unusual program errors) ghc!If debug output is on, show some  on the screen ghcpprTraceWith desc f x is equivalent to pprTrace desc (f x) x. This allows you to print details from the returned value as well as from ambient variables. ghcpprTraceIt desc x is equivalent to pprTrace desc (ppr x) x ghcpprTraceException desc x action< runs action, printing a message if it throws an exception. ghc!If debug output is on, show some 7 on the screen along with a call stack when available. ghcPanic with an assertation failure, recording the given file and line number. Should typically be accessed with the ASSERT family of macros ghc The headerghcAmount to indent the hung bodyghc3The hung body, indented and placed below the header ghcThe punctuationghcThe list that will have punctuation added between every adjacent pair of elementsghcPunctuated list ghc#The pretty printing function to useghcThe things to be pretty printedghc where the things have been pretty printed, comma-separated and finally packed into a paragraph. ghc#The pretty printing function to useghcThe things to be pretty printedghc where the things have been pretty printed, bar-separated and finally packed into a paragraph.        ;NoneS ghc TopDir path  <None5 =None5u ghcStrict left fold. ghc?Compare not only the values but also the structure of two lists ghc?Compare not only the values but also the structure of two lists   5 5 5>Noneu ghc0Assumes that the arguments contain no duplicates ghc4Calculate the set difference of two lists. This is O((m + n) log n), where we subtract a list of n elements from a list of m elements.3Extremely short cases are handled specially: When m or n is 0, this takes O(1) time. When m is 1, it takes O(n) time.  ?None'( ghc-Simple data type to represent JSON documents. @None#$&23567>?!, ghcA typeclass to set/get SrcSpans ghc Composes a   decoration with an undecorated syntactic entity to form its decorated variant ghc1Decomposes a decorated syntactic entity into its  * decoration and its undecorated variant ghcDetermines the type of undecorated syntactic entities For most syntactic entities E, where source location spans are introduced by a wrapper construtor of the same syntactic entity, we have `SrcSpanLess E = E`. However, some syntactic entities have a different type compared to a syntactic entity `e :: E` may have the type `Located E` when decorated by wrapping it with `L sp e` for a source span sp. ghcWe attach SrcSpans to lots of things, so let's have a datatype for it. ghc Source SpanA   identifies either a specific portion of a text file or a human-readable description of a location. ghcA   delimits a portion of a text file. It could be represented by a pair of (line,column) coordinates, but in fact we optimise slightly by using more compact representations for single-line and zero-length spans, both of which are quite common.-The end position is defined to be the column after the end of the span. That is, a span of (1,1)-(1,2) is one character long, and a span of (1,1)-(1,1) is zero characters long.Real Source Span ghcSource Location ghcReal Source Location'Represents a single point within a file ghc%A Pattern Synonym to Set/Get SrcSpans ghcBuilt-in "bad"   values for particular locations ghcBuilt-in "bad"   values for particular locations ghcBuilt-in "bad"   values for particular locations ghcCreates a "bad"  4 that has no detailed information about its location ghcGives the filename of the  ghc%Raises an error when used on a "bad"  ghc%Raises an error when used on a "bad"  ghc Move the   down by one line if the character is a newline, to the next 8-char tabstop if it is a tab, and across by one character in any other case ghcBuilt-in "bad"  ,s for common sources of location uncertainty ghcBuilt-in "bad"  ,s for common sources of location uncertainty ghcBuilt-in "bad"  ,s for common sources of location uncertainty ghcCreate a "bad"  " that has not location information ghc Create a   corresponding to a single point ghc Create a   between two points in a file ghc Create a   between two points in a file ghc Combines two   into one that spans at least all the characters within both spans. Returns UnhelpfulSpan if the files differ. ghcConvert a SrcSpan into one that represents only its first character ghc Test if a  1 is "good", i.e. has precise location information ghcTrue if the span is known to straddle only one line. For "bad"  , it returns False ghcTests whether the first span "contains" the other span, meaning that it covers at least as much source code. True where spans are equal. ghc)Returns the location at the start of the   or a "bad"   if that is unavailable ghc'Returns the location at the end of the   or a "bad"   if that is unavailable ghcObtains the filename for a   if it is "good" ghcCombine locations from two  % things and add them to a third thing ghc.Tests whether the two located things are equal ghc,Tests the ordering of the two located things ghc$Alternative strategies for ordering  sghc$Alternative strategies for ordering  sghc$Alternative strategies for ordering  sghcDetermines whether a span encloses a given line and column indexghc4Determines whether a span is enclosed by another oneghcAn abbreviated form of decomposeSrcSpan, mainly to be used in ViewPatternsghcAn abbreviated form of composeSrcSpan, mainly to replace the hardcoded  ghcLifts a function of undecorated entities to one of decorated onesghc*The span that may be enclosed by the otherghcThe span it may be enclosed by      CNoneghcGenerate a section type (e.g.  @progbits). See #13937.ghc section typeghcpretty assembler fragmentDNone3/ghcFlag to see whether we're type-checking terms or kind-checking typesghc = $(f x y)ghc =* f x y, i.e. a naked top level expressionghcAn integer or infinityghcFractional LiteralUsed (instead of Rational) to represent exactly the floating point literal that we encountered in the user's source program. This allows us to pretty-print exactly what the user wrote, which is important e.g. for floating point numbers that can't represented as Doubles (we used to via Double for pretty-printing). See also #2245.ghcIntegral LiteralUsed (instead of Integer) to represent negative zegative zero which is required for NegativeLiterals extension to correctly parse `-0::Double` as negative zero. See also #13211.ghcInline SpecificationghcRule Match Informationghc Phase NumberghcFor when code is generated, e.g. TH, deriving. The pretty printer will then make its own representation of the item.ghcDefault Method Specificationghc Inside LambdaghcInteresting Contextghc!identifier Occurrence Informationghc2There are many occurrences, or unknown occurrencesghcMarks unused variables. Sometimes useful for lambda and case-bound variables.ghc3Occurs exactly once (per branch), not inside a ruleghcThis identifier breaks a loop of mutually recursive functions. The field marks whether it is only a loop breaker due to a reference in a ruleghcEmbedding Projection pairghc2A general-purpose pretty-printing precedence type.ghc'This instance must not overlap another - instance. However, it may be overlapped by  instances, and it may overlap  instances.ghcSilently ignore this instance if you find a more specific one that matches the constraint you are trying to resolveExample: constraint (Foo [Int]) instance Foo [Int] instance {- OVERLAPPABLE  -} Foo [a]Since the second instance has the Overlappable flag, the first instance will be chosen (otherwise its ambiguous which to choose)ghcSilently ignore any more general instances that may be used to solve the constraint..Example: constraint (Foo [Int]) instance {- OVERLAPPING 4-} Foo [Int] instance Foo [a]Since the first instance has the Overlapping flag, the second---more general---instance will be ignored (otherwise it is ambiguous which to choose)ghcEquivalent to having both  and  flags.ghcBehave like Overlappable and Overlapping, and in addition pick an an arbitrary one if there are multiple matching candidates, and don't worry about later instantiationExample: constraint (Foo [b]) instance {-# INCOHERENT -} Foo [Int] instance Foo [a] Without the Incoherent flag, we'd complain that instantiating b would change which instance was chosen. See also note [Incoherent instances] in InstEnvghcThe semantics allowed for overlapping instances for a particular instance. See Note [Safe Haskell isSafeOverlap] (in ) for a explanation of the  field.{ : { '{-# OVERLAPPABLE'" or '{-# OVERLAPPING'" or '{-# OVERLAPS'" or '{-# INCOHERENT', { `#-}`,ghcRecursivity FlagghcCaptures the fixity of declarations as they are parsed. This is not necessarily the same as the fixity declaration, as the normal fixity may be overridden using parens or backticks.ghc Warning Text6reason/explanation from a WARNING or DEPRECATED pragmaghcA String Literal in the source, including its original raw format for use by source to source manipulation tools.ghcIs a TyCon a promoted data constructor or just a normal type constructor?ghcIf the Id is a lambda-bound variable then it may have lambda-bound variable info. Sometimes we know whether the lambda binding this variable is a "one-shot" lambda; that is, whether it is applied at most once.This information may be useful in optimisation, as computations may safely be floated inside such a lambda without risk of duplicating work.ghcNo informationghc#The lambda is applied at most once.ghcA power-of-two alignmentghc A *zero-indexed* constructor tagghcConstructor TagType of the tags associated with each constructor possibility or superclass selectorghcThe number of arguments that a join point takes. Unlike the arity of a function, this is a purely syntactic property and is fixed when the join point is created (or converted from a value). Both type and value arguments are counted.ghcRepresentation ArityThe number of represented arguments that can be applied to a value before it does "real work". So: fib 100 has representation arity 0 x -> fib x has representation arity 1 ( x, y +) -> fib (x + y) has representation arity 2ghcThe number of value arguments that can be applied to a value before it does "real work". So: fib 100 has arity 0 x -> fib x has arity 1 See also Note [Definition of arity] in CoreArityghcTags are allocated from here for real constructors or for superclass selectorsghc$It is always safe to assume that an Id) has no lambda-bound variable informationghc=Pretty print an alternative in an unboxed sum e.g. "| a | |".ghc/Special combinator for showing string literals.ghcA representation of infinityghcTurn a positive number into an , where 0 represents infinityghcInject any integer into an ghc#The pretty printing function to useghcThe things to be pretty printedghcAlternative (one-based)ghcArityghc where the alternative havs been pretty printed and finally packed into a paragraph.ENoneghc%Class of things that we can obtain a  fromghcUnique identifier.The type of unique identifiers that are used in many places in GHC for fast ordering and equality tests. You should generate these with the functions from the  UniqSupply moduleThese are sometimes also referred to as "keys" in comments in GHC.ghcThe interface file symbol-table encoding assumes that known-key uniques fit in 30-bits; verify this.See Note [Symbol table representation of names] in BinIface for details.**FNone5ghc)A monad for generating unique identifiersghcGet a new UniqueSupplyghcGet a new unique identifierghc.Get an infinite list of new unique identifiersghc/A monad which just gives the ability to obtain sghc Unique SupplyA value of type  is unique, and it can supply one distinct . Also, from the supply, one can also manufacture an arbitrary number of further  UniqueSupply values, which will be distinct from the first and from all others.ghcCreate a unique supply out of thin air. The character given must be distinct from those of all calls to this function in the compiler for the values generated to be truly unique.ghc Build two 6 from a single one, each of which can supply its own .ghcCreate an infinite list of  from a single oneghc Obtain the  from this particular ghcObtain an infinite list of : that can be generated by constant splitting of the supplyghc Obtain the  from this particular , and a new supplyghcRun the  action, returning the final ghcRun the  action, discarding the final GNone3ghcA wrapper around  with the sole purpose of informing call sites that the provided 7 and 8 instances are nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in UniqDFM to learn about determinism.ghc1`plusUFM_CD f m1 d1 m2 d2` merges the maps using f! as the combinding function and d1 resp. d2/ as the default value if there is no entry in m1 reps. m2-. The domain is the union of the domains of m1 and m2.Representative example: plusUFM_CD f {A: 1, B: 2} 23 {B: 3, C: 4} 42 == {A: f 1 42, B: f 2 3, C: f 23 4 } ghcPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetEltsUFM.ghcPretty-print a non-deterministic set. The order of variables is non-deterministic and for pretty-printing that shouldn't be a problem. Having this function helps contain the non-determinism created with nonDetUFMToList.ghcDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.ghcInherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in UniqDFM to learn about determinism.ghcInherently nondeterministic. If you use this please provide a justification why it doesn't introduce nondeterminism. See Note [Deterministic UniqFM] in UniqDFM to learn about determinism.ghcThe things to be pretty printedghc3The pretty printing function to use on the elementsghc+ where the things have been pretty printedghcThe things to be pretty printedghc3The pretty printing function to use on the elementsghc+ where the things have been pretty printed??HNone3ghc converts a  a into a  a0 assuming, without checking, that it maps each  to a value that has that . See Note [UniqSet invariant].##INone35ĘghcMaps indexed by  keysJNoneˤghcGraph nodes. Represents a thing that can conflict with another thing. For the register allocater the nodes represent registers.ghc"A unique identifier for this node.ghcThe class of this node, determines the set of colors that can be used.ghcThe color of this node, if any.ghc9Neighbors which must be colored differently to this node.ghc(Colors that cannot be used by this node.ghc=Colors that this node would prefer to be, in decending order.ghc>Neighbors that this node would like to be colored the same as.ghcThe Interference graph. There used to be more fields, but they were turfed out in a previous revision. maybe we'll want more later..ghcAll active nodes in the graph.ghcA fn to check if a node is trivially colorable For graphs who's color classes are disjoint then a node is 'trivially colorable' when it has less neighbors and exclusions than available colors for that node.For graph's who's color classes overlap, ie some colors alias other colors, then this can be a bit more tricky. There is a general way to calculate this, but it's likely be too slow for use in the code. The coloring algorithm takes a canned function which can be optimised by the user to be specific to the specific graph being colored.for details, see "A Generalised Algorithm for Graph-Coloring Register Allocation" Smith, Ramsey, Holloway - PLDI 2004.ghcAn empty graph.ghc5Modify the finite map holding the nodes in the graph.ghcAn empty node.KNone35?2 ghc(Type of unique deterministic finite mapsghcPerforms a deterministic fold over the UniqDFM. It's O(n log n) while the corresponding function on  is O(n).ghcPerforms a nondeterministic fold over the UniqDFM. It's O(n), same as the corresponding function on . If you use this please provide a justification why it doesn't introduce nondeterminism.ghc Converts  to a list, with elements in deterministic order. It's O(n log n) while the corresponding function on  is O(n).ghc>Partition UniqDFM into two UniqDFMs according to the predicateghc(Delete a list of elements from a UniqDFMghc7This allows for lossy conversion from UniqDFM to UniqFMghc(Apply a function to a particular elementghcThe expression (alterUDFM f k map) alters value x at k, or absence thereof. alterUDFM can be used to insert, delete, or update a value in UniqDFM. Use addToUDFM, delFromUDFM or adjustUDFM when possible, they are more efficient.ghc,Map a function over every value in a UniqDFMghcDeterministic, in O(n log n).ghcDeterministic, in O(n log n).ghcThe things to be pretty printedghc3The pretty printing function to use on the elementsghc+ where the things have been pretty printed((LNone3MNoneӜghcA non-deterministic set of FastStrings. See Note [Deterministic UniqFM] in UniqDFM for explanation why it's not deterministic and why it matters. Use DFastStringEnv if the set eventually gets converted into a list or folded over in a way where the order changes the generated code.NNoneԤghcThe class of a register. Used in the register allocator. We treat all registers in a class as being interchangable.ONone؂ghc"A subcomponent of another registerghcA register of some classghcWorst case displacementa node N of classN has some number of neighbors, all of which are from classC.(worst neighbors classN classC) is the maximum number of potential colors for N that can be lost by coloring its neighbors.This should be hand coded/cached for each particular architecture, because the compute time is very long..ghcFor a node N of classN and neighbors of classesC (bound classN classesC) is the maximum number of potential colors for N that can be lost by coloring its neighbors.ghcThe total squeese on a particular node with a list of neighbors.A version of this should be constructed for each particular architecture, possibly including uses of bound, so that alised registers don't get counted twice, as per the paper.ghcso we can put regs in UniqSetsPNone-ghc!Determine the class of a registerghc4Determine all the regs that make up a certain class.ghcDetermine the common name of a reg returns Nothing if this reg is not part of the machine.ghc!Which regs alias what other regs.ghcOptimised versions of RegColorBase.{worst, squeese} specific to x86QNoneGghc"A register, either virtual or realghcRealRegs are machine regs which are available for allocation, in the usual way. We know what class they are, because that's part of the processor's architecture.RealRegPairs are pairs of real registers that are allocated together to hold a larger value, such as with Double regs on SPARC.ghc4An identifier for a primitive real machine register.ghcThe patch function supplied by the allocator maps VirtualReg to RealReg regs, but sometimes we want to apply it to plain old Reg.ghcPrint a reg in a generic manner If you want the architecture specific names, then use the pprReg function from the appropriate Ppr module.RNoneSNoneSghc9Pretty print a graph in a somewhat human readable format.ghcPretty print a graph in graphviz .dot format. Conflicts get solid edges. Coalescences get dashed edges.ghcWhat graphviz color to use for each node color It's usually safe to return X11 style colors here, ie "red", "green" etc or a hex triplet #aaff55 etcTNoneKghcLookup a node from the graph.ghc>Get a node from the graph, throwing an error if it's not thereghc-Add a node to the graph, linking up its edgesghc/Delete a node and all its edges from the graph.ghcModify a node in the graph. returns Nothing if the node isn't present.ghcGet the size of the graph, O(n)ghcUnion two graphs together.ghcAdd a conflict between nodes to the graph, creating the nodes required. Conflicts are virtual regs which need to be colored differently.ghcDelete a conflict edge. k1 -> k2 returns Nothing if the node isn't in the graphghcAdd some conflicts to the graph, creating nodes if required. All the nodes in the set are taken to conflict with each other.ghcAdd an exclusion to the graph, creating nodes if required. These are extra colors that the node cannot use.ghcAdd a coalescence edge to the graph, creating nodes if requried. It is considered adventageous to assign the same color to nodes in a coalesence.ghc4Delete a coalescence edge (k1 -> k2) from the graph.ghcAdd a color preference to the graph, creating nodes if required. The most recently added preference is the most prefered. The algorithm tries to assign a node it's prefered color if possible.ghcDo aggressive coalescing on this graph. returns the new graph and the list of pairs of nodes that got coalesced together. for each pair, the resulting node will have the least key and be second in the pair.ghcCoalesce this pair of nodes unconditionally / aggressively. The resulting node is the one with the least key.returns: Just the pair of keys if the nodes were coalesced the second element of the pair being the least one3Nothing if either of the nodes weren't in the graphghcFreeze a node This is for the iterative coalescer. By freezing a node we give up on ever coalescing it. Move all its coalesce edges into the frozen set - and update back edges from other nodes.ghcFreeze one node in the graph This if for the iterative coalescer. Look for a move related node of low degree and freeze it.We probably don't need to scan the whole graph looking for the node of absolute lowest degree. Just sample the first few and choose the one with the lowest degree out of those. Also, we don't make any distinction between conflicts of different classes.. this is just a heuristic, after all.IDEA: freezing a node might free it up for Simplify.. would be good to check for triv right here, and add it to a worklist if known triv/non-move nodes.ghcFreeze all the nodes in the graph for debugging the iterative allocator.ghc7Find all the nodes in the graph that meet some criteriaghcvalidate the internal structure of a graph all its edges should point to valid nodes If they don't then throw an errorghcSlurp out a map of how many nodes had a certain number of conflict neighboursghcSet the color of a certain nodeghcIf True, coalesce nodes even if this might make the graph less colorable (aggressive coalescing)ghcIf True, coalesce nodes even if this might make the graph less colorable (aggressive coalescing)ghc!keys of the nodes to be coalescedghckey of the node to freezeghc the graphghcgraph with that node frozenghc(extra debugging info to display on errorghc-whether this graph is supposed to be colored.ghcgraph to validateghcvalidated graphghc9(conflict neighbours, num nodes with that many conflicts)UNoneghcTry to color a graph with this set of colors. Uses Chaitin's algorithm to color the graph. The graph is scanned for nodes which are deamed 'trivially colorable'. These nodes are pushed onto a stack and removed from the graph. Once this process is complete the graph can be colored by removing nodes from the stack (ie in reverse order) and assigning them colors different to their neighbors.ghc"whether to do iterative coalescingghc6how many times we've tried to color this graph so far.ghc>map of (node class -> set of colors available for this class).ghc3fn to decide whether a node is trivially colorable.ghcfn to choose a node to potentially leave uncolored if nothing is trivially colorable.ghcthe graph to color.+VNone '(.>ghcInformation we keep around during interface file serialization/deserialization. Namely we keep the functions for serializing and deserializing s and  s. We do this because we actually use serialization in two distinct settings,+When serializing interface files themselvesWhen computing the fingerprint of an IfaceDecl (which we computing by hashing its Binary serialization)These two settings have different needs while serializing Names:Names in interface files are serialized via a symbol table (see Note [Symbol table representation of names] in BinIface).During fingerprinting a binding Name is serialized as the OccName and a non-binding Name is serialized as the fingerprint of the thing they represent. See Note [Fingerprinting IfaceDecls] for further discussion.ghcserialize a non-binding ( (e.g. a reference to another binding).ghcserialize a binding  (e.g. the name of an IfaceDecl)ghcDo not rely on instance sizes for general types, we use variable length encoding for many of them.ghc$Get access to the underlying buffer.0It is quite important that no references to the ; leak out of the continuation lest terrible things happen.ghchow to deserialize sghchow to serialize non-binding sghchow to serialize binding s))6None#$5 ghcA   consists of the package name, package version, component ID, the transitive dependencies of the component, and other information to uniquely identify the source code and build configuration of a component.This used to be known as an InstalledPackageId7, but a package can contain multiple components and a   uniquely identifies a component within a package. When a package only has one component, the   coincides with the InstalledPackageId ghcAn installed unit identifier identifies a library which has been installed to the package database. These strings are provided to us via the  -this-unit-id flag. The library in question may be definite or indefinite; if it is indefinite, none of the holes have been filled (we never install partially instantiated libraries.) Put another way, an installed unit id is either fully instantiated, or not instantiated at all./Installed unit identifiers look something like p+af23SAj2dZ219, or maybe just p if they don't use Backpack. ghcA unit identifier identifies a (possibly partially) instantiated library. It is primarily used as part of  , which in turn is used in Name=, which is used to give names to entities when typechecking.#There are two possible forms for a  . It can be a , in which case we just have a string that uniquely identifies some fully compiled, installed library we have on disk. However, when we are typechecking a library with missing holes, we may need to instantiate a library on the fly (in which case we don't have any on-disk representation.) In that case, you have an , which explicitly records the instantiation, so that we can substitute over it. ghc2A ModuleName is essentially a simple string, e.g.  Data.List. ghcA Module is a pair of a   and a  .Module variables (i.e.  H) which can be instantiated to a specific module at some later point in time are represented with   set to * (this allows us to avoid having to make   a partial operation.)ghcA map keyed off of  s (actually, their s) Has deterministic folds and can be deterministically converted to a listghcA map keyed off of  s (actually, their s)ghc A set of  sghcA map keyed off of  sghcSubstitution on module variables, mapping module names to module identifiers.ghcA map keyed off of ghcA  is an   with the invariant that it only refers to a definite library; i.e., one we have generated code for.ghcA  is a   which contains a  .ghcThe full hashed unit identifier, including the component id and the hash.ghcA unit identifier which identifies an indefinite library (with holes) that has been *on-the-fly* instantiated with a substitution . In fact, an indefinite unit identifier could have no holes, but we haven't gotten around to compiling the actual library yet.?An indefinite unit identifier pretty-prints to something like p[H= H ,A=aimpl:A>] (p is the  5, and the brackets enclose the module substitution).ghcA private, uniquely identifying representation of a UnitId. This string is completely private to GHC and is just used to get a unique; in particular, we don't use it for symbols (indefinite libraries are not compiled).ghcCached unique of .ghcThe component identity of the indefinite library that is being instantiated.ghcThe sorted (by  !) instantiations of this library.ghc(A cache of the free module variables of  unitIdInsts&. This lets us efficiently tell if a   has been fully instantiated (free module variables are empty) and whether or not a substitution can have any effect.ghcModule LocationWhere a module lives on the file system: the actual locations of the .hs, .hi and .o files, if we have themghcAdd the -boot suffix to .hs, .hi and .o filesghcAdd the -boot suffix if the Bool argument is TrueghcAdd the -boot4 suffix to all file paths associated with the moduleghcAdd the -boot suffix to all output file paths associated with the module, not including the input file itselfghc6Compares module names lexically, rather than by their sghc!Get a string representation of a   that's unique and stable across recompilations. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal"ghcReturns the string version of the module name, with dots replaced by slashes.ghcReturns the string version of the module name, with dots replaced by colons.ghcCalculate the free holes of a  . If this set is non-empty, this module was defined in an indefinite library that had required signatures.If a module has free holes, that means that substitutions can operate on it; if it has no free holes, substituting over a module has no effect.ghcA  % is definite if it has no free holes.ghc!Create a module variable at some  5. See Note [Representation of module/name variables]ghcThis gives a stable ordering, as opposed to the Ord instance which gives an ordering based on the s of the components, which may not be stable from run to run of the compiler.ghc Create a new ' given an explicit module substitution.ghc Injects an > (indefinite library which was on-the-fly instantiated) to a  - (either an indefinite or definite library).ghc Injects an  to   (see also .ghc Lossy conversion to the on-disk   for a component.ghc Test if a   corresponds to a given , modulo instantiation.ghc Test if a   corresponds to a given  , modulo instantiation.ghc$Retrieve the set of free holes of a  .ghcA  % is definite if it has no free holes.ghc Generate a uniquely identifying   for a unit identifier. This is a one-way function. You can rely on one special property: if a unit identifier is in most general form, its   coincides with its  . This hash is completely internal to GHC and is not used for symbol names or file paths.ghc(Create a new, un-hashed unit identifier.ghc5Compares package ids lexically, rather than by their sghc6Create a new simple unit identifier (no holes) from a  .ghc+Create a new simple unit identifier from a  . Internally, this is primarily used to specify wired-in unit identifiers.ghcSubstitutes holes in a  0. NOT suitable for being called directly on a  nameModule6, see Note [Representation of module/name variable]. p[A= A]:B maps to  p[A=q():A]:B with A=q():A; similarly,  A maps to q():A.ghcSubstitutes holes in a  , suitable for renaming when an include occurs; see Note [Representation of module/name variable].p[A= A] maps to p[A= B] with A= B.ghcLike , but requires only   so it can be used by Packages.ghc*Like 'renameHoleUnitId, but requires only   so it can be used by Packages.ghcGiven a possibly on-the-fly instantiated module, split it into a   that we definitely can find on-disk, as well as an instantiation if we need to instantiate it on the fly. If the instantiation is Nothing" no on-the-fly renaming is needed.ghcSee .ghcThis is the package Id for the current program. It is the default package Id if you don't specify a package name. We don't add this prefix to symbol names, since there can be only one main package per program.          None#$>ghc Get the GHC   right out of a Cabalish 2^]\[ 2 ^]\[XNone3tghc A C type, used in CAPI FFI calls{ : {  '{-# CTYPE' , {,{ , { '#-}',ghc,How to call a particular function in C-land.!!YNone3/ghc9An index into a given cost centre module,name,flavour setghc2Per-module state for tracking cost centre indices.See documentation of  for more details.ghcInitialize cost centre state.ghc-Get a new index for a given cost centre name.ZNone3567d[None ghcWhen we are given files (modified by -x arguments) we need to determine if they are Haskellish or not to figure out how we should try to compile it. The rules are: If no -x flag was specified, we check to see if the file looks like a module name, has no extension, or has a Haskell source extension.If an -x flag was specified, we just make sure the specified suffix is a Haskell one.11\(c) Matt Morrow 2009BSD3 experimentalportableNone?$ghc Dominators. Complexity as for idomghcPost-dominators. Complexity as for idom.ghcDominator tree. Complexity as for idom.ghcPost-dominator tree. Complexity as for idom.ghcImmediate dominators. O(|E|*alpha(|E|,|V|)), where  alpha(m,n)4 is "a functional inverse of Ackermann's function".This Complexity bound assumes O(1) indexing. Since we're using IntMap, it has an additional lg |V|0 factor somewhere in there. I'm not sure where.ghcImmediate post-dominators. Complexity as for idom.ghc!Post-dominated depth-first search.ghc)Reverse post-dominated depth-first search.29 None&( ghc*Edge direction based on DFS Classificationghc7Loop back towards the root node. Eg backjumps in loopsghcv -> vghc&Representation for nodes of the Graph.The payload1 is user data, just carried around in this moduleThe key is the node identifier. Key has an Ord instance for performance reasons.The [key] are the dependencies of the node; it's ok to have extra keys in the dependencies that are not the key of any Node in the graphghc User dataghcUser defined node idghc#Dependencies/successors of the nodeghcFind a reasonably short cycle a->b->c->a, in a strongly connected component. The input nodes are presumed to be a SCC, so you can start anywhere.ghc1Given a list of roots return all reachable nodes.ghcGiven a start vertex, a way to get successors from a node and a list of (directed) edges classify the types of edges.!!]None5*Jghccombining functionghc initial stateghcinputsghcfinal state, outputsghccombining functionghc initial stateghcinputsghcfinal state, outputs""33^None5,ghc6A command-line warning message and the reason it aroseghcA command-line error messageghcUsed when filtering warnings: if a reason is given it can be filtered out when displaying.ghc4GHC flag modes describing when a flag has an effect.ghc-The flag only affects the non-interactive GHCghc)The flag only affects the interactive GHCghc#The flag affects multiple ghc modesghc.This flag should not be seen in cli completion44 None>oghc-Enumerates the simple on-or-off dynamic flagsghc"Contains not only a collection of s but also a plethora of information relating to the compilation of a single file or GHC sessionghcAn internal helper to check whether to use unicode syntax for output.&Note: You should very likely be using   instead of this function.ghcA collection of files that must be deleted before ghc exits. The current collection is stored in an IORef in DynFlags, .ghc2Files that will be deleted at the end of runGhc(T)ghc*Files that will be deleted the next time d4 is called, or otherwise at the end of the session.ghcFlag in string formghcFlag in internal formghcExtra action to run when the flag is found Typically, emit a warning or errorghc%In which ghc mode the flag has effectghc+Flags for manipulating packages visibility.ghc-package,  -package-idghc  -hide-packageghc%Flags for manipulating package trust.ghc -trustghc  -distrustghc6Flags for manipulating the set of non-broken packages.ghc -ignore-packageghcRepresents the renaming that may be associated with an exposed package, e.g. the rns part of -package "foo (rns)".Here are some example parsings of the package flags (where a string literal is punned to be a  : -package foo is ModRenaming True []-package foo () is ModRenaming False []-package foo (A) is ModRenaming False [(A, A)]-package foo (A as B) is ModRenaming False [(A, B)]-package foo with (A as B) is ModRenaming True [(A, B)]ghc%Bring all exposed modules into scope?ghc Bring module m into scope under name n.ghcWe accept flags which make packages visible, but how they select the package varies; this data type reflects what selection criterion is used.ghc-package, by ghc -package-id, by  ghc-What to do in the link step, if there is one.ghcDon't link at allghcLink object code into a binaryghcUse the in-memory dynamic linker (works for both bytecode and object code).ghcLink objects into a dynamic lib (DLL on Windows, DSO on ELF platforms)ghcLink objects into a static libghcThe  tells us whether we're doing multi-module compilation (controlled via the GHC API) or one-shot (single-module) compilation. This makes a difference primarily to the Finder: in one-shot mode we look for interface files for imported modules, but in multi-module mode we look for source files in order to check whether they need to be recompiled.ghc--make , GHCi, etc.ghc  ghc -c Foo.hsghcghc -M, see Finder for why we need thisghc1The target code type of the compilation (if any).6Whenever you change the target, also make sure to set  to something sensible. can be used to avoid generating any output, however, note that:If a program uses Template Haskell the typechecker may need to run code from an imported module. To facilitate this, code generation is enabled for modules imported by modules that use template haskell. See Note [-fno-code mode].ghcGenerate C code.ghc2Generate assembly using the native code generator.ghc0Generate assembly using the llvm code generator.ghcGenerate bytecode. (Requires )ghc*Don't generate any code. See notes above.ghc*See Note [LLVM Configuration] in SysTools.ghcno SCC annotations addedghc,top-level and nested functions are annotatedghc"top-level functions annotated onlyghc!exported functions annotated onlyghcannotate call-sitesghc2Edge weights to use when generating a CFG from CMMghcIntegerGMP or IntegerSimple. Set at configure time, but may be overriden by GHC-API users. See Note [The integer library] in PrelNamesghcN.B. It's important that this field is lazy since we load the LLVM configuration lazily. See Note [LLVM Configuration] in SysTools.ghc,Verbosity level: see Note [Verbosity levels]ghcOptimisation levelghc%How much debug information to produceghcNumber of simplifier phasesghcMax simplifier iterationsghc+A prefix to report inlining decisions aboutghcAdditional demand analysisghcThe number of modules to compile in parallel in --make mode, where Nothing ==> compile as many in parallel as there are CPUs.ghcEnable RTS timing statistics?ghcThe heap size to set.ghcMaximum number of bindings from the type envt to show in type error messagesghcMaximum number of hole fits to show in typed hole error messagesghcMaximum number of refinement hole fits to show in typed hole error messagesghcMaximum level of refinement for refinement hole fits in typed hole error messagesghcMaximum number of unmatched patterns to show in non-exhaustiveness warningsghcSoft limit on the number of models the pattern match checker checks a pattern against. A safe guard against exponential blow-up.ghcMultiplier for simplifier ticksghcThreshold for SpecConstrghc2Max number of specialisations for any one functionghcMax number of specialisations for recursive types Not optional; otherwise ForceSpecConstr can diverge.ghcBinary literals (e.g. strings) whose size is above this threshold will be dumped in a binary file by the assembler code generator (0 to disable)ghcThreshold for LiberateCaseghc?Arg count for lambda floating See CoreMonad.FloatOutSwitchesghcMaximum number of arguments after lambda lifting a recursive function.ghcMaximum number of arguments after lambda lifting a non-recursive function.ghcLambda lift even when this turns a known call into an unknown call.ghc4Align Cmm functions at this boundary or use default.ghcSimplification history sizeghcTypechecker maximum stack depthghcNumber of iterations in the constraints solver Typically only 1 is neededghcWay flags from the command lineghc$The global "way" (e.g. "p" for prof)ghcThis is set by ( based on where its output is going.ghc Override the  set by  . Set by -ddump-file-prefixghcPath to store the .mix filesghcthe -ffrontend-opt flags given on the command line, in *reverse* order that they're specified on the command line.ghcplugins dynamically loaded after processing arguments. What will be loaded here is directed by pluginModNames. Arguments are loaded from pluginModNameOpts. The purpose of this field is to cache the plugins so they don't have to be loaded each time they are needed. See .ghcstaic plugins which do not need dynamic loading. These plugins are intended to be added by GHC API users directly to this list.;To add dynamically loaded plugins through the GHC API see  instead.ghcThe  -package-db flags given on the command line, In *reverse* order that they're specified on the command line. This is intended to be applied with the list of "initial" package databases derived from GHC_PACKAGE_PATH; see getPackageConfRefs.ghcThe -ignore-package flags from the command line. In *reverse* order that they're specified on the command line.ghcThe -package and  -hide-package flags from the command-line. In *reverse* order that they're specified on the command line.ghcThe -plugin-package-id flags from command line. In *reverse* order that they're specified on the command line.ghcThe -trust and  -distrust flags. In *reverse* order that they're specified on the command line.ghcFilepath to the package environment file (if overriding default)ghcSafe Haskell modeghcMsgDoc output action: use ErrUtils instead of this if you canghc8GHCi scripts specified by -ghci-script, in reverse orderghcwhat kind of {- SCC -} to add automaticallyghcMachine dependent flags (-m blah stuff)ghc8Run-time linker information (what options we need, etc.)ghcRun-time compiler informationghc0Max size, in bytes, of inline array allocations.ghcOnly inline memcpy if it generates no more than this many pseudo (roughly: Cmm) instructions.ghcOnly inline memset if it generates no more than this many pseudo (roughly: Cmm) instructions.ghc/Reverse the order of error messages in GHC/GHCighc*Limit the maximum number of errors to showghc9Unique supply configuration for testing build determinismghc/Temporary: CFG Edge weights for fast iterationsghcThe various Safe Haskell modesghcinferred unsafeghcdeclared and checkedghcdeclared and checkedghcdeclared and checkedghcinferred as safeghc-fno-safe-haskell stateghcUsed to differentiate the scope an include needs to apply to. We have to split the include paths to avoid accidentally forcing recursive includes since -I overrides the system search paths. See #14312.ghcUsed when outputting warnings: if a reason is given, it is displayed. If a warning isn't controlled by a flag, this is made explicit at the point of use.ghc!Warning was enabled with the flagghcWarning was made an error because of -Werror or -Werror=WarningFlagghc.Append dump output to files instead of stdout.ghc)Use the cfg based block layout algorithm.ghc+Layout based on last instruction per block.ghc -fPICghc -fPIEghc -pieghcSuppress timestamps in dumpsghc#Dump the cfg used for block layout.ghcAppend to the list of includes a path that shall be included using `-I` when the C compiler is called. These paths override system search paths.ghcAppend to the list of includes a path that shall be included using `-iquote` when the C compiler is called. These paths only apply when quoted includes are used. e.g. #include "foo.h"ghcConcatenate and flatten the list of global and quoted includes returning just a flat list of paths.ghc "unbuild" a  from a . This shouldn't be needed in the vast majority of code. But GHCi questionably uses this to produce a default 1 from which to compute a flags diff for printing.ghcThe directory for this version of ghc in the user's app directory (typically something like ~.ghcx86_64-linux-7.6.3)ghc6Will this target result in an object file on the disk?ghcDoes this target retain *all* top-level bindings for a module, rather than just the exported bindings, in the TypeEnv and compiled code (if any)? In interpreted mode we do this, so that GHCi can call functions inside a module. In HscNothing mode we also do it, so that Haddock can get access to the GlobalRdrEnv for a module after typechecking it.ghcAre we building with -fPIE or -fPIC enabled?ghcCompute the path of the dynamic object corresponding to an object file.ghcUsed by  to partially initialize a new  valueghc The normal . Note that they are not suitable for use in this form and must be fully initialized by  first.ghcLike  but appends an extra newline.ghcThe language extensions implied by the various language variants. When updating this be sure to update the flag documentation in docs users-guideglasgow_exts.rst.ghcTest whether a  is setghcSet a ghcUnset a ghcTest whether a  is setghcSet a ghcUnset a ghcTest whether a  is setghcSet a ghcUnset a ghcTest whether a  is set as fatalghcMark a  as fatal (do not set the flag)ghcMark a  as not fatalghcTest whether a  is setghcSet a ghcUnset a ghcSet or unset a 7, unless it has been explicitly set or unset before.ghcSome modules have dependencies on others through the DynFlags rather than textual importsghcIs the -fpackage-trust mode onghc9Is Safe Haskell on in some way (including inference mode)ghc(Is the Safe Haskell safe language in useghc.Is the Safe Haskell safe inference mode activeghc(Test if Safe Imports are on in some formghcAre all direct imports required to be safe for this Safe Haskell mode? Direct imports are when the code explicitly imports a moduleghcAre all implicit imports required to be safe for this Safe Haskell mode? Implicit imports are things in the prelude. e.g System.IO when print is used.ghcA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offghcA list of unsafe flags under Safe Haskell. Tuple elements are: * name of the flag * function to get srcspan that enabled the flag * function to test if the flag is on * function to turn the flag offghc3Retrieve the options corresponding to a particular opt_* field in the correct orderghcGets the verbosity flag for the current verbosity level. This is fed to other tools, so GHC-specific verbosity flags like  -ddump-most are not includedghc Sets the , to be appropriate to the optimisation levelghcParse dynamic flags from a list of command line arguments. Returns the parsed =, the left-over arguments, and a list of warnings. Throws a  if errors occurred during parsing (such as unknown flags or missing arguments).ghcLike  but does not allow the package flags (-package, -hide-package, -ignore-package, -hide-all-packages, -package-db). Used to parse flags set in a modules pragma.ghcParses the dynamically set flags for GHC. This is the most general form of the dynamic flag parser that the other methods simply wrap. It allows saying which flags are valid flags and indicating if we are parsing arguments from the command line or from a file pragma.ghc!Write an error or warning to the  LogOutput.ghcAll dynamic flags option strings without the deprecated ones. These are the user facing strings for enabling and disabling options.ghcMake a list of flags for shell completion. Filter all available flags into two groups, for interactive GHC vs all other.ghcThese -W flags can all be reversed with  -Wno-ghcThese -f flags can all be reversed with  -fno-ghcThese -f flags can all be reversed with  -fno-ghcThese -X blah$ flags can all be reversed with -XNo blahghcWarning groups.As all warnings are in the Weverything set, it is ignored when displaying to the user which group a warning is in.ghcWarning group hierarchies, where there is an explicit inclusion relation.Each inner list is a hierarchy of warning groups, ordered from smallest to largest, where each group is a superset of the one before it.Separating this from  allows for multiple hierarchies with no inherent relation to be defined.3The special-case Weverything group is not included.ghc4Was the runtime system built with profiling enabled?ghcGiven a   of a signature in the home library, find out how it is instantiated. E.g., the canonical form of A in  p[A=q[]:A] is q[]:A. ghc1Resolve any internal inconsistencies in a set of . Returns the consistent 6 as well as a list of warnings to report to the user. ghcAn empty FilesToCleanghc to retrieve the options fromghc%Relevant record accessor: one of the opt_* accessorsghc#Correctly ordered extracted optionsghcUpdated -, left-over arguments, and list of warnings.ghcUpdated -, left-over arguments, and list of warnings.ghcvalid flags to match againstghc(are the arguments from the command line?ghccurrent dynamic flagsghcarguments to parse      _None!ghc9We need 8 bytes because our largest registers are 64 bit.!ghcWe (allegedly) put the first six C-call arguments in registers; where do we start putting the rest of them?!ghc6Check whether an offset is representable with 13 bits.!ghcCheck whether an integer will fit in 32 bits. A CmmInt is intended to be truncated to the appropriate number of bits, so here we truncate it to Int64. This is important because e.g. -1 as a CmmInt might be either -1 or 18446744073709551615.!ghcSadness.!!!!!!!!!!!!!!!!`None!ghcTrue  = This is a static closure. Affects how we garbage-collect it. Static closure have an extra static link field at the end. Constructors do not have a static variant; see Note [static constructors]!ghcA description of the layout of a closure. Corresponds directly to the closure types in includesrtsstorage/ClosureTypes.h.!ghcByte offset, or byte count!ghcWord offset, or word count!ghcRound up the given byte count to the next byte count that's a multiple of the machine's word size.!ghc Round up base to a multiple of size.!ghc7Convert the given number of words to a number of bytes.This function morally has type WordOff -> ByteOff , but uses Num a to allow for overloading.!ghcFirst round the given byte count up to a multiple of the machine's word size and then convert the result to words.!ghcHalf word size in bytes!ghc/Size of a closure header (StgHeader in includesrtsstorage/Closures.h)!ghcSize of the profiling part of a closure header (StgProfHeader in includesrtsstorage/Closures.h)!ghc(The total size of the closure, in words.!ghcThe byte offset into the card table of the card for a given element!ghc>Convert a number of elements to a number of cards, rounding up!ghc"The size of a card table, in bytes!ghc"The size of a card table, in words!ghc%Derives the RTS closure type from an !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!aNone|"ghc3The slots that are still available to be allocated."ghc#Assignment of vregs to stack slots."ghcIdentifier for a stack slot."ghc-An empty stack map, with all slots available."ghcIf this vreg unique already has a stack assignment then return the slot number, otherwise allocate a new slot, and update the map."ghc4Return the number of stack slots that were allocated""""""""""""""""$None 3 ghcOccurrence NameIn this context that means: "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved""ghcOther names in the compiler add additional information to an OccName. This class provides a consistent way to access the underlying OccName. "ghcValue OccNamess are those that are either in the variable or data constructor namespaces"ghc Test if the 8 is a data constructor that starts with a symbol (e.g. :, or [])"ghc Test if the  is that for any operator (whether it is a data constructor or variable or whatever)"ghcWrap parens around an operator"ghcHaskell 98 encourages compilers to suppress warnings about unsed names in a pattern if they start with _: this implements that test"ghcTest for definitions internally generated by GHC. This predicte is used to suppress printing of internal definitions in some debug prints"ghcIs an  one of a Typeable TyCon or Module binding? This is needed as these bindings are renamed differently. See Note [Grand plan for Typeable] in TcTypeable."ghc is used; it is not used to decide whether to dump the output#ghcTime a compilation phase.(When timings are enabled (e.g. with the -v2 flag), the allocations and CPU time used by the phase will be reported to stderr. Consider a typical usage: withTiming getDynFlags (text "simplify") force PrintTimings pass. When timings are enabled the following costs are included in the produced accounting,The cost of executing pass to a result r in WHNFThe cost of evaluating force r to WHNF (e.g. ())The choice of the force function depends upon the amount of forcing desired; the goal here is to ensure that the cost of evaluating the result is, to the greatest extent possible, included in the accounting provided by #. Often the pass already sufficiently forces its result during construction; in this case const () is a reasonable choice. In other cases, it is necessary to evaluate the result to normal form, in which case something like Control.DeepSeq.rnf is appropriate.To avoid adversely affecting compiler performance when timings are not requested, the result is only forced when timings are enabled.See Note [withTiming] for more.#ghc0Like withTiming but get DynFlags from the Monad.#ghcSame as #:, but doesn't print timings in the console (when given -vN, N >= 2 or -ddump-timings).See Note [withTiming] for more.#ghcSame as #:, but doesn't print timings in the console (when given -vN, N >= 2 or -ddump-timings0) and gets the DynFlags from the given Monad.See Note [withTiming] for more.#ghcLike # but with  rather then #ghcChecks if given # is a fatal warning.ghcoptional annotationghcseverityghclocationghcmessage#ghcDynFlagsghcThe name of the phaseghc.A function to force the result (often either const () or rnf)ghc!The body of the phase to be timed#ghcThe name of the phaseghc.A function to force the result (often either const () or rnf)ghc!The body of the phase to be timed#ghcDynFlagsghcThe name of the phaseghc.A function to force the result (often either const () or rnf)ghc!The body of the phase to be timed#ghcThe name of the phaseghc.A function to force the result (often either const () or rnf)ghc!The body of the phase to be timed##########################################################################################################################################cNoneD#ghc!Read in assembly file and process##dNone1 #ghcUsed when a temp file is created. This determines which component Set of FilesToClean will get the temp file#ghcA file with lifetime TFL_CurrentModule will be cleaned up at the end of upweep_mod$ghcA file with lifetime TFL_GhcSession will be cleaned up at the end of runGhc(T)$ghcDelete all files in filesToClean dflags.$ghcDelete all files in filesToClean dflags. That have lifetime TFL_CurrentModule. If a file must be cleaned eventually, but must survive a cleanCurrentModuleTempFiles, ensure it has lifetime TFL_GhcSession.$ghc7Ensure that new_files are cleaned on the next call of $ or $, depending on lifetime. If any of new_files are already tracked, they will have their lifetime updated.$ghcUpdate the lifetime of files already being tracked. If any files are not being tracked they will be discarded.$ghcCreate and use a temporary directory in the system standard temporary directory.Behaves exactly the same as $, except that the parent temporary directory will be that returned by .$ghc%Create and use a temporary directory.Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: 4withTempDirectory "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342.$ghcDirectory name template. See  openTempFile.ghc#Callback that can use the directory$ghc)Temp directory to create the directory inghcDirectory name template. See  openTempFile.ghc#Callback that can use the directory ##$$$$$$$$$$$ ##$$$$$$$$$$$eNoneL$ghc Version of &System.Process.readProcessWithExitCode> that takes a key-value tuple to insert into the environment.$ghcRun a command, placing the arguments in an external response file.This command is used in order to avoid overlong command line arguments on Windows. The command line arguments are first written to an external, temporary response file, and then passed to the linker via @filepath. response files for passing them in. See: 'https://gcc.gnu.org/wiki/Response_Files /https://gitlab.haskell.org/ghc/ghc/issues/10777$ghcstdout$ghc program pathghc program argsghcaddition to the environmentghc(exit_code, stdout, stderr)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$fNone$$$$$$$$$$gNone$ghc8Given a section name, read its contents as a ByteString.If the section isn't found or if there is any parsing error, we return Nothing$ghcread a Note as a StringIf you try to read a note from a section which does not support the Note format, the parsing is likely to fail and Nothing will be returned$ghc.Generate the GAS code to create a Note sectionHeader fields for notes are 32-bit long (see Note [ELF specification]).It seems there is no easy way to force GNU AS to generate a 32-bit word in every case. Hence we use .int directive to create them: however "The byte order and bit size of the number depends on what kind of target the assembly is for." (https:/sourceware.orgbinutilsdocsas/Int.html#Int)If we add new target platforms, we need to check that the generated words are 32-bit long, otherwise we need to use platform specific directives to force 32-bit .int in asWord32.$$$$$$hNone$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$iNoneV $ghc$The operation to perform atomically.%ghcMachine-level primops; ones which we can reasonably delegate to the native code generators to handle.)Most operations are parameterised by the $ that they operate on. Some operations have separate signed and unsigned versions, and float and integer versions.Note that there are variety of places in the native code generator where we assume that the code produced for a MachOp does not introduce new blocks.&ghcReturns L if the MachOp has commutable arguments. This is used in the platform-independent Cmm optimisations.If in doubt, return I. This generates worse code on the native routes, but is otherwise harmless.&ghcReturns L$ if the MachOp is associative (i.e. (x+y)+z == x+(y+z)=) This is used in the platform-independent Cmm optimisations.If in doubt, return I. This generates worse code on the native routes, but is otherwise harmless.&ghcReturns L if the MachOp is a comparison.If in doubt, return False. This generates worse code on the native routes, but is otherwise harmless.&ghcReturns Just w6 if the operation is an integer comparison with width w, or Nothing otherwise.&ghc.Returns the MachRep of the result of a MachOp.&ghcThis function is used for debugging only: we can check whether an application of a MachOp is "type-correct" by checking that the MachReps of its arguments are the same as the MachOp expects. This is used when linting a CmmExpr.&ghcThe alignment of a memcpy-ish operation.$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&$$$$$$$jNoneq &&&&&&&&&&&& &&&&&&&&&&&&kNoneT&ghc&A bitmap represented by a sequence of ! s on the target architecture. These are used for bitmaps in info tables and other generated code which need to be emitted as sequences of StgWords.&ghc%Make a bitmap from a sequence of bits&ghc0Make a bitmap where the slots specified are the ones in the bitmap. eg. [0,1,3], size 4 ==> 0xb. The list of Ints must be already sorted.&ghc0Make a bitmap where the slots specified are the zeros in the bitmap. eg. [0,1,3], size 4 ==> 0x4 (we leave any bits outside the size as zero, just to make the bitmap easier to read). The list of Ints must& be already sorted and duplicate-free.&ghcMagic number, must agree with BITMAP_BITS_SHIFT in InfoTables.h. Some kinds of bitmap pack a size/bitmap into a single word if possible, or fall back to an external pointer when the bitmap is too large. This value represents the largest size of bitmap that can be packed into a single word.&ghc size in bitsghcsorted indices of ones&ghc size in bitsghc*sorted indices of zeros free of duplicates&&&&&&&&&&&&#None #$>׻ghcA unique, unambiguous name for something, containing information about where that thing originated.&ghc*A class allowing convenient access to the  of various datatypes&ghc!BuiltInSyntax is for things like (:), [] and tuples, which have special syntactic forms. They aren't in scope as such.&ghcReturns True if the name is (a) Internal (b) External but from the specified module (c) External but from the  interactive packageThe key idea is that False means: the entity is defined in some other module you can find the details (type, fixity, instances) in some interface file those details will be stored in the EPT or HPTTrue means: the entity is defined in this module or earlier in the GHCi session you can find details (type, fixity, instances) in the TcGblEnv or TcLclEnvThe isInteractiveModule part is because successive interactions of a GHCi session each give rise to a fresh module (Ghci1, Ghci2, etc), but they all come from the magic  interactive package; and all the details are kept in the TcLclEnv, TcGblEnv, NOT in the HPT or EPT. See Note [The interactive package] in HscTypes&ghcReturns True if the Name comes from some other package: neither this package nor the interactive package.&ghcCreate a name which is (for now at least) local to the current module and hence does not need a   to disambiguate it from other s'ghc=Create a name which definitely originates in the given module'ghc>Create a name which is actually defined by the compiler itself'ghc0Create a name brought into being by the compiler'ghcMake a name for a foreign call'ghc Make the ? into an internal name, regardless of what it was to begin with'ghcCompare Names lexicographically This only works for Names that originate in the source code or have been tidied.'ghc0Print the string of Name unqualifiedly directly.'ghc!Get a string representation of a  that's unique and stable across recompilations. Used for deterministic generation of binds for derived instances. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal$String"'ghcAssumes that the  is a non-binding one. See  and  for serializing binding s. See ( for the rationale for this distinction.'ghcCaution#: This instance is implemented via , which means that the ordering is not stable across deserialization or rebuilds.See  for further information, and trac #15240 for a bug caused by improper use of this instance.'ghcThe same comments as for 's . instance apply."""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''''''''''''''8&&&''&&&'''''&'&&&&'''&&''&&&&&&&&&&&&&&&&'&&&'''''''''7None?0 ghc map from   to 3, plus the transitive closure of preload packages. ghc Retrieve the   from ; used in the hs-boot loop-breaker. ghcGiven a fully instantiated  , improve it into a  + if we can find it in the package database.'ghc!The result of performing a lookup'ghc-Found the module uniquely, nothing else to do'ghc,Multiple modules with the same name in scope'ghcNo modules found, but there were some hidden ones with an exact name match. First is due to package hidden, second is due to module being hidden'ghcNo modules found, but there were some unusable ones with an exact name match'ghc6Nothing found, here are some suggested different names'ghc%The reason why a package is unusable.'ghcWe ignored it explicitly using -ignore-package.'ghcThis package transitively depends on a package that was never present in any of the provided databases.'ghcThis package transitively depends on a package involved in a cycle. Note that the list of   reports the direct dependencies of this package that (transitively) depended on the cycle, and not the actual cycle itself (which we report separately at high verbosity.)'ghcThis package transitively depends on a package which was ignored.'ghcThis package transitively depends on a package which was shadowed by an ABI-incompatible package.'ghcThe packages we're going to link in eagerly. This list should be in reverse dependency order; that is, a package is always mentioned before the packages it depends on.'ghcPackages which we explicitly depend on (from a command line flag). We'll use this to generate version macros.'ghcThis is a full map from   to all modules which may possibly be providing it. These providers may be hidden (but we'll still want to report them in error messages), or it may be an ambiguous import.'ghcA map saying, for each requirement, what interfaces must be merged together when we use them. For example, if our dependencies are p[A= A] and q[A= A,B=r[C= A]:B]*, then the interfaces to merge for A are p[A= A]:A, q[A= A,B=r[C= A]:B]:A and r[C= A]:C.?There's an entry in this map for each hole in our home library.'ghcPackage state is all stored in , including the details of all packages, which packages are exposed, and which modules they provide.!The package state is computed by ', and kept in DynFlags. It is influenced by various package flags: -package pkg and  -package-id pkg cause  pkg to become exposed. If -hide-all-packages was not specified, these commands also cause all other packages with the same name to become hidden.-hide-package pkg causes  pkg to become hidden.=(there are a few more flags, check below for their semantics)/The package state has the following properties.Let exposedPackages/ be the set of packages thus exposed. Let depExposedPackages be the transitive closure from exposedPackages of their dependencies.When searching for a module from a preload import declaration, only the exposed modules in exposedPackages are valid.When searching for a module from an implicit import, all modules from depExposedPackages are valid.When linking in a compilation manager mode, we link in packages the program depends on (the compiler knows this list by the time it gets to the link step). Also, we link in all packages which were mentioned with preload -package flags on the command-line, or are a transitive dependency of same, or are "base"/"rts". The reason for this is that we might need packages which don't contain any Haskell modules, and therefore won't be discovered by the normal mechanism of dependency tracking.Given a module name, there may be multiple ways it came into scope, possibly simultaneously. This data type tracks all the possible ways it could have come into scope. Warning: don't use the record functions, they're partial!'ghcModule is hidden, and thus never will be available for import. (But maybe the user didn't realize), so we'll still keep track of these modules.)'ghc6Module is unavailable because the package is unusable.'ghc7Module is public, and could have come from some places.'ghc Just False) means that this module is in someone's exported-modules$ list, but that package is hidden;  Just True means that it is available; Nothing means neither applies.'ghcIs the module available from a reexport of an exposed package? There could be multiple.'ghc