h$ K ƨ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                     !!!!!!!!!!!!!!"""""""""""""""""""""""""""""""#########$$%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))***********************++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-.////000000000000000000111111111111112222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455567777777777777788889:;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<                ===================================================>>>>>>>>>>>>>>>>>>>>>>>?????????@@@@@@@AAAAAAAAAAAAAAABBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////DEFGFEFDFEEFFFFFHHHHIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNOOOOOOOOOOOOOPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX??????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!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![![![![![![![![![!\!\!\!\!\!\!\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"]"""""""""""""""""""""""""""""""""""""""^"^"^"^"^"^"^"^"^"^"^"^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#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#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$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$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$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$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$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%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%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%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%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&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&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&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&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&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'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'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'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'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'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(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(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(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(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(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)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)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)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)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*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*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*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*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*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+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+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+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+3+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,------------------------------------------------------------------------`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-`-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-b-b-b-b-b-b-b-c-c-c-c-c-c-c-c-c-c-c-c-c-c-c.c.c.c.c.c.c.c.c.c.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.e.e.e.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f..................................g.g.g.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.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/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/@/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/i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0i0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0j0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k0k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1k1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y1Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y2Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y3Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y4Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y5Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y7Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y8Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9Y9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l9l: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: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;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;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;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;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<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<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<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<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=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=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>o>o>o>o>o>F>o>o>o>o>o>o>o>o>o>p>p>q>q>q>q>q>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>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>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?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?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?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?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@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@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@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@sAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAsAtAtAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAuAvAvAvAvAvAvAvAvAvAvAvAvAvAwAwAwAwAwAwAwAwAwAwAwAwAwAwAxAxAxAxAyAyAyAyByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByByBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzBzCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEC{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C{C|C|C|C|C|C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}C}D}D}D}D}D}D}D}D}D}D}D}D}D}D}D}D}D}D}D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~D~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;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;E;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;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;FFFFFFFFFFFFFFFFFFFFFFFFFrFrFrFrFrFrFrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrHrHHHHHHHHHHHHHHHHHHHHHHHEHFHFHEHEHEHEHDHDHDHDHEHEHEHDHEHEHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHDHFHDHDHDHDHDHDHDHDHDHDHFHFHFHFHFHFHFHHHDHFHFHFHDHDHFHFHHHHHFHFHDHFHFHFHFHFHFHFHFHGHGHDHDHFHEHEHFHFHEHEHDHDHFHHHHHHHFHFHFHFHHHEHDHEHEHFIFIEIDIDIDIDIFIDIFIEIFIFIFIFIFIFIHIDIFIEIFIFIFIFIFIDIFIFIFIFIFIFIFIFIFIFIDIFIFIFIFIFIDIFIFIFIFIFIFIDIEIFIHIFIDIFIDIDIFIFIFIFIFIFIFIFIDIFIEIFIEIDIDIEIEIEIFIFIFIFIEIDIFIFIFIFIDIDIFIEIEIFIFIHIFIFIFIFIFIFIFIFIDIDIFIFIFIFIDIFIFIFIFIFIFIFIFIFIFIFIFIFIEIEIFIEIDIDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJDJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKGKGKGKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFKFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFLFMFMFMFMFMFMFMFMFMFMFMFMFMFMqMqMqMqMqMqMqMqMqMqMqMqMqMqMqMqMqMqMqMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENENEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwOwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPwPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQxQxQxQxQxQxQxQxQxQxQxQxQxQxQxQxQxQxQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTNTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoUoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVoVVVVVVVVVV6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6V6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6W6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Y6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6Z6[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[6[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^________________________________________________________________________________________________________________________________``````````````````````````````````````````````````````````````````````````````````````````````````````````````````H`H`H`H`H`H`H`H`H`H`H`H`H`H`HaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHaHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteteeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvhvivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivivjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkvkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr: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: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: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: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:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t: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:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u:u: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:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:v:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:w:wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwx5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5x5xgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxgygygygygygygygygygygygygygygygygygygygygygyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy$y$y$y$y$y$y$y$y$y$y$y$y$y$yyyyyyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|{|{|{|{|{|{|{|{|{||||||||||||||||||||||||||||||||||||||||||||||||||||||  Safe-Inferred8E~ghc-lib-parser/Return the size of the closures header in words  Safe-InferredF  Safe-Inferred8Gghc-lib-parserThis is a somewhat faithful representation of an info table. See  http://ghc.haskell.org/trac/ghc/browser/includes/rts/storage/InfoTables.h* for more details on this data structure.    Safe-InferredI@ghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.ghc-lib-parser%Size in bytes of a standard InfoTable Safe-InferredJghc-lib-parserRead an InfoTable from the heap into a haskell type. WARNING: This code assumes it is passed a pointer to a "standard" info table. If tables_next_to_code is enabled, it will look 1 byte before the start for the entry field.None #$5678Z9ghc-lib-parserThis is the representation of a Haskell value on the heap. It reflects http://ghc.haskell.org/trac/ghc/browser/includes/rts/storage/Closures.hThe data type is parametrized by the type to store references in. Usually this is a  with the type synonym .All Heap objects have the same basic layout. A header containing a pointer to the info table and a payload with various fields. The info field below always refers to the info table pointed to by the header. The remaining fields are the payload.See  https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/HeapObjects for more information.ghc-lib-parserA data constructorghc-lib-parser A functionghc-lib-parser8A thunk, an expression not obviously in head normal formghc-lib-parser3A thunk which performs a simple selection operationghc-lib-parser#An unsaturated function applicationghc-lib-parserA function applicationghc-lib-parserA suspended thunk evaluationghc-lib-parserA pointer to another closure, introduced when a thunk is updated to point at its valueghc-lib-parserA byte-code object (BCO) which can be interpreted by GHC's byte-code interpreter (e.g. as used by GHCi)ghc-lib-parser*A thunk under evaluation by another threadghc-lib-parserA  ByteArray#ghc-lib-parserA MutableByteArray#ghc-lib-parserAn MVar#7, with a queue of thread state objects blocking on themghc-lib-parserA MutVar#ghc-lib-parserAn STM blocking queue.ghc-lib-parser Primitive Intghc-lib-parserPrimitive Wordghc-lib-parserPrimitive Int64ghc-lib-parserPrimitive Word64ghc-lib-parserPrimitive Addrghc-lib-parserPrimitive Floatghc-lib-parserPrimitive Doubleghc-lib-parserAnother kind of closureghc-lib-parserPointer argumentsghc-lib-parserNon-pointer argumentsghc-lib-parser Package nameghc-lib-parser Module nameghc-lib-parserConstructor nameghc-lib-parser,Pointer to the object being selected fromghc-lib-parser Arity of the partial applicationghc-lib-parserSize of the payload in wordsghc-lib-parser Pointer to a ghc-lib-parser(Sequence of already applied argumentsghc-lib-parserTarget closureghc-lib-parser+A pointer to an ArrWords of instructionsghc-lib-parser'A pointer to an ArrWords of literalsghc-lib-parser0A pointer to an ArrWords of byte code objectsghc-lib-parserThe size of this BCO in wordsghc-lib-parserAn StgLargeBitmap describing the pointerhood of its args/free varsghc-lib-parserSize of array in bytesghc-lib-parser Array payloadghc-lib-parserNumber of pointersghc-lib-parser ?? Closures.h vs ClosureMacros.hghc-lib-parser!Array payload Card table ignoredghc-lib-parserPointer to head of queueghc-lib-parserPointer to tail of queueghc-lib-parserPointer to closureghc-lib-parserPointer to contentsghc-lib-parser?? Here so it looks like an INDghc-lib-parserThe blackhole closureghc-lib-parserThe owning thread state objectghc-lib-parser??ghc-lib-parserAn arbitrary Haskell value in a safe Box. The point is that even unevaluated thunks can safely be moved around inside the Box, and when required, e.g. in getBoxedClosureData>, the function knows how far it has to evaluate the argument.ghc-lib-parserThis takes an arbitrary value and puts it into a box. Note that calls like asBox (head list)-will put the thunk "head list" into the box, not the element at the head of the list. For that, use careful case expressions: case list of x:_ -> asBox xghc-lib-parserBoxes can be compared, but this is not pure, as different heap objects can, after garbage collection, become the same object.ghc-lib-parserFor generic code, this function returns all referenced closures.None\/(c) 2012 Joachim BreitnerBSD3+Joachim Breitner None ./>]ghc-lib-parserLike , but taking a , so it is easier to work with. Safe-Inferred8`ghc-lib-parser'Foreign formats supported by GHC via THghc-lib-parserCghc-lib-parserC++ghc-lib-parser Objective Cghc-lib-parser Objective C++ghc-lib-parserAssembly language (.s)ghc-lib-parser Object (.o) Safe-Inferred`(c) The GHC Teamghc-devs@haskell.orgportable Safe-Inferred8bghc-lib-parser%The language extensions known to GHC.Note that there is an orphan Binary) instance for this type supplied by the GHC.LanguageExtensions module provided by ghc-boot. We can't provide here as this would require adding transitive dependencies to the template-haskell3 package, which must have a minimal dependency set. Safe-Inferredd(c) The GHC Teamghc-devs@haskell.orgportable Safe-Inferredftghc-lib-parserIs this character acceptable in a symbol (after the first char)? See alexGetByte in Lexer.x6(c) The University of Glasgow 2009, Duncan Coutts 2014ghc-devs@haskell.orgportableNone'(-/2567o ghc-lib-parser holds a value of type t but only in  mode. So it is like A but with a type argument for the mode to enforce that the mode is used consistently.ghc-lib-parserMode to open a package db in.ghc-lib-parser"Represents a lock of a package db.ghc-lib-parserghc-boot 's copy of UnitId0, i.e. what is serialized to the database. Use  to convert it into an actual UnitId. It has phantom type parameters as this is the most convenient way to avoid undecidable instances.ghc-lib-parserghc-boot 's copy of Module0, i.e. what is serialized to the database. Use  to convert it into an actual Module. It has phantom type parameters as this is the most convenient way to avoid undecidable instances.ghc-lib-parser7A type-class for the types which can be converted into /. There is only one type class because these types are mutually recursive. NB: The functional dependency helps out type inference in cases where types would be ambiguous.ghc-lib-parserThis is a subset of Cabal's , with just the bits that GHC is interested in. See Cabal's documentation for a more detailed description of all of the fields.ghc-lib-parserLike , but each dependency is annotated with the ABI hash we expect the dependency to respect.ghc-lib-parserAcquire an exclusive lock related to package DB under given location.ghc-lib-parser'Release the lock related to package DB.ghc-lib-parser:Read the part of the package DB that GHC is interested in.ghc-lib-parser=Read the part of the package DB that ghc-pkg is interested inNote that the Binary instance for ghc-pkg's representation of packages is not defined in this package. This is because ghc-pkg uses Cabal types (and Binary instances for these) which this package does not depend on.If we open the package db in read only mode, we get its contents. Otherwise we additionally receive a PackageDbLock that represents a lock on the database, so that we can safely update it later.ghc-lib-parser.Write the whole of the package DB, both parts.>> Safe-Inferred'(svghc-lib-parserRepresents a serialized value of a particular type. Attempts can be made to deserialize it at certain typesghc-lib-parserPut a Typeable value that we are able to actually turn into bytes into a & value ready for deserialization laterghc-lib-parserIf the  value contains something of the given type, then use the specified deserializer to return Just that. Otherwise return Nothing.ghc-lib-parserUse a |> instance to implement a serialization scheme dual to that of ghc-lib-parserUse a | instance to implement a deserialization scheme dual to that of Nones Safe-Inferred8:sNone2wghc-lib-parserAn HValueRef with a finalizerghc-lib-parserA reference to a remote value. These are allocated and freed explicitly.ghc-lib-parserMake a reference to a local value that we can send remotely. This reference will keep the value that it refers to alive until  is called.ghc-lib-parserConvert an HValueRef to an HValue. Should only be used if the HValue originated in this process.ghc-lib-parser4Release an HValueRef that originated in this processghc-lib-parser Create a  from a ). The finalizer should arrange to call  freeHValueRef on the . (since this function needs to be called in the process that created the 3, it cannot be called directly from the finalizer).ghc-lib-parserUse a  Safe-Inferredx %&'() *+,-  ./012356$#"78Z\][9:! ;GJ<=>?@AHIBOMNCDEFKLabcdefghijkloqrsxyz{|}~ %&'() *+,-  ./012356$#"78Z\][9:! ;GJ<=>?@AHIBOMNCDEFKLabcdefghijkloqrsxyz{|}~ Safe-Inferred{XNone{ ^_`P P`_^None{None| Safe-Inferredghc-lib-parserA 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.ghc-lib-parserGeneralised version of |, allowing an arbitrary exception handling monad instead of just D.ghc-lib-parserGeneralised version of |, allowing an arbitrary exception handling monad instead of just D.ghc-lib-parserGeneralised version of |, allowing an arbitrary exception handling monad instead of just D.ghc-lib-parserGeneralised version of |, allowing an arbitrary exception handling monad instead of just D.ghc-lib-parserGeneralised version of |, allowing an arbitrary exception handling monad instead of just D.ghc-lib-parserAlways executes the first argument. If this throws an exception the second argument is executed and the exception is raised again.|||||||||||m||||||||||||||||||||no||||||||||||||||||||||||||||||||||||||||||wtvu|||||||||   Safe-Inferred!NoneYghc-lib-parser,Converts a 64-bit word into a base-62 string" Safe-Inferred# Safe-Inferred9ghc-lib-parserDefault maximum depth for both class instance search and type family reduction. See also Trac #5395.ghc-lib-parserDefault maximum constraint-solver iterations Typically there should be very few  "(c) The University of Glasgow 2015/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportable Safe-Inferred% Safe-Inferred&"(c) The University of Glasgow 2003/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.org experimentalportable Trustworthy 389>aghc-lib-parserTo avoid duplication between kinds and types, they are defined to be the same. Naturally, you would never have a type be % and you would never have a kind be , but many of the other constructors are shared. Note that the kind Bool is denoted with , not '. Similarly, tuple kinds are made with , not .ghc-lib-parser&Annotation target for reifyAnnotationsghc-lib-parserRole annotationsghc-lib-parser nominalghc-lib-parser representationalghc-lib-parser phantomghc-lib-parser _ghc-lib-parser 2ghc-lib-parser "Hello"ghc-lib-parserInjectivity annotationghc-lib-parserType family result signatureghc-lib-parser no signatureghc-lib-parser kghc-lib-parser = r, = (r :: k)ghc-lib-parser aghc-lib-parser (a :: k)ghc-lib-parser forall . => ghc-lib-parser T a bghc-lib-parser T @k tghc-lib-parser t :: kghc-lib-parser aghc-lib-parser Tghc-lib-parser 'Tghc-lib-parser T + Tghc-lib-parser T + TSee  Language.Haskell.TH.Syntax#infixghc-lib-parser (T)ghc-lib-parser (,), (,,), etc.ghc-lib-parser (#,#), (#,,#), etc.ghc-lib-parser (#|#), (#||#), etc.ghc-lib-parser ->ghc-lib-parser ~ghc-lib-parser []ghc-lib-parser '(), '(,), '(,,), etc.ghc-lib-parser '[]ghc-lib-parser (':)ghc-lib-parser *ghc-lib-parser  Constraintghc-lib-parser  0,1,2, etc.ghc-lib-parser _ghc-lib-parser ?x :: tghc-lib-parser"A pattern synonym's argument type.ghc-lib-parser pattern P {x y z} = pghc-lib-parser pattern {x P y} = pghc-lib-parser pattern P { {x,y,z} } = pghc-lib-parser#A pattern synonym's directionality.ghc-lib-parser pattern P x {<-} pghc-lib-parser pattern P x {=} pghc-lib-parser  pattern P x {<-} p where P x = eghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parserAs of template-haskell-2.11.0.0,  has been replaced by .ghc-lib-parser C { {-# UNPACK #-} !}aghc-lib-parserA single data constructor.The constructors for  can roughly be divided up into two categories: those for constructors with "vanilla" syntax (, , and 0), and those for constructors with GADT syntax ( and ). The  constructor, which quantifies additional type variables and class contexts, can surround either variety of constructor. However, the type variables that it quantifies are different depending on what constructor syntax is used:If a : surrounds a constructor with vanilla syntax, then the  will only quantify  existential type variables. For example: % data Foo a = forall b. MkFoo a b In MkFoo,  will quantify b , but not a.If a 7 surrounds a constructor with GADT syntax, then the  will quantify all8 type variables used in the constructor. For example: > data Bar a b where MkBar :: (a ~ b) => c -> MkBar a b In MkBar,  will quantify a, b, and c.ghc-lib-parser C Int aghc-lib-parser C { v :: Int, w :: a }ghc-lib-parser Int :+ aghc-lib-parser forall a. Eq a => C [a]ghc-lib-parser C :: a -> b -> T b Intghc-lib-parser C :: { v :: Int } -> T b Intghc-lib-parserUnlike  and ,  refers to the strictness that the compiler chooses for a data constructor field, which may be different from what is written in source code. See   for more information.ghc-lib-parser C aghc-lib-parser C {~}aghc-lib-parser C {!}aghc-lib-parser C aghc-lib-parser C { {-# NOUNPACK #-} } aghc-lib-parser C { {-# UNPACK #-} } aghc-lib-parserSince the advent of ConstraintKinds, constraints are really just types. Equality constraints use the  constructor. Constraints may also be tuples of other constraints.ghc-lib-parser +{ {-# COMPLETE C_1, ..., C_i [ :: T ] #-} }ghc-lib-parserOne equation of a type family instance or closed type family. The arguments are the left-hand-side type and the right-hand-side result.3For instance, if you had the following type family: type family Foo (a :: k) :: k where forall k (a :: k). Foo @k a = a The  Foo @k a = a* equation would be represented as follows:  (I [ k,  a ( k)]) ( ( ( ''Foo) ( k)) ( a)) ( a) ghc-lib-parserCommon elements of  and . By analogy with "head" for type classes and type class instances as defined in 0Type classes: an exploration of the design space, the TypeFamilyHead; is defined to be the elements of the declaration between  type family and where.ghc-lib-parser8A pattern synonym's type. Note that a pattern synonym's fully specified type has a peculiar shape coming with two forall quantifiers and two constraint contexts. For example, consider the pattern synonym 'pattern P x1 x2 ... xn = *P's complete type is of the following form pattern P :: forall universals. required constraints => forall existentials. provided constraints => t1 -> t2 -> ... -> tn -> tconsisting of four parts: the (possibly empty lists of) universally quantified type variables and required constraints on them.the (possibly empty lists of) existentially quantified type variables and the provided constraints on them. the types t1, t2, .., tn of x1, x2, .., xn, respectively the type t of , mentioning only universals.Pattern synonym types interact with TH when (a) reifying a pattern synonym, (b) pretty printing, or (c) specifying a pattern synonym's type signature explicitly:/Reification always returns a pattern synonym's fully( specified type in abstract syntax.Pretty printing via ( abbreviates a pattern synonym's type unambiguously in concrete syntax: The rule of thumb is to print initial empty universals and the required context as () =>, if existentials and a provided context follow. If only universals and their required context, but no existentials are specified, only the universals and their required context are printed. If both or none are specified, so both (or none) are printed.>When specifying a pattern synonym's type explicitly with  either one of the universals, the existentials, or their contexts may be left empty.See the GHC user's guide for more information on pattern synonyms and their types:  https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#pattern-synonyms.ghc-lib-parser T x = A x | B (T x) deriving (Z,W) deriving stock Eq }ghc-lib-parser { newtype Cxt x => T x = A (B x) deriving (Z,W Q) deriving stock Eq }ghc-lib-parser { type T x = (x,x) }ghc-lib-parser  { class Eq a => Ord a where ds }ghc-lib-parser { instance {-# OVERLAPS #-} Show w => Show [w] where ds }ghc-lib-parser { length :: [a] -> Int }ghc-lib-parser -{ foreign import ... } { foreign export ... }ghc-lib-parser { infix 3 foo }ghc-lib-parser { {-# INLINE [1] foo #-} }ghc-lib-parser { data family T a b c :: * }ghc-lib-parser { data instance Cxt x => T [x] = A x | B (T x) deriving (Z,W) deriving stock Eq }ghc-lib-parser { newtype instance Cxt x => T [x] = A (B x) deriving (Z,W) deriving stock Eq }ghc-lib-parser { type instance ... }ghc-lib-parser -{ type family T a b c = (r :: *) | r -> a b }ghc-lib-parser 3{ type family F a b = (r :: *) | r -> a where ... }ghc-lib-parser ({ type role T nominal representational }ghc-lib-parser 0{ deriving stock instance Ord a => Ord (Foo a) }ghc-lib-parser &{ default size :: Data a => a -> Int }ghc-lib-parser{ pattern P v1 v2 .. vn <- p }! unidirectional or { pattern P v1 v2 .. vn = p }! implicit bidirectional or ?{ pattern P v1 v2 .. vn <- p where P v1 v2 .. vn = e } explicit bidirectionalalso, besides prefix pattern synonyms, both infix and record pattern synonyms are supported. See  for detailsghc-lib-parser#A pattern synonym's type signature.ghc-lib-parser  { ?x = expr }Implicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.ghc-lib-parser p <- eghc-lib-parser { let { x=e1; y=e2 } }ghc-lib-parser eghc-lib-parserx <- e1 | s2, s3 | s4 (in )ghc-lib-parser rec { s1; s2 }ghc-lib-parser f x { | odd x } = xghc-lib-parser &f x { | Just y <- x, Just z <- y } = zghc-lib-parser +f p { | e1 = e2 | e3 = e4 } where dsghc-lib-parser f p { = e } where dsghc-lib-parser { x }ghc-lib-parser "data T1 = C1 t1 t2; p = {C1} e1 e2ghc-lib-parser  { 5 or 'c'}ghc-lib-parser { f x }ghc-lib-parser  { f @Int }ghc-lib-parser %{x + y} or {(x+)} or {(+ x)} or {(+)}ghc-lib-parser {x + y}See  Language.Haskell.TH.Syntax#infixghc-lib-parser { (e) }See  Language.Haskell.TH.Syntax#infixghc-lib-parser { \ p1 p2 -> e }ghc-lib-parser { \case m1; m2 }ghc-lib-parser  { (e1,e2) }ghc-lib-parser { (# e1,e2 #) }ghc-lib-parser  { (#|e|#) }ghc-lib-parser { if e1 then e2 else e3 }ghc-lib-parser { if | g1 -> e1 | g2 -> e2 }ghc-lib-parser { let { x=e1; y=e2 } in e3 }ghc-lib-parser { case e of m1; m2 }ghc-lib-parser { do { p <- e1; e2 } }ghc-lib-parser !{ mdo { x <- e1 y; y <- e2 x; } }ghc-lib-parser  { [ (x,y) | x <- xs, y <- ys ] }3The result expression of the comprehension is the last of the s, and should be a .E.g. translation: [ f x | x <- xs ] CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))]ghc-lib-parser { [ 1 ,2 .. 10 ] }ghc-lib-parser  { [1,2,3] }ghc-lib-parser  { e :: t }ghc-lib-parser { T { x = y, z = w } }ghc-lib-parser { (f x) { z = w } }ghc-lib-parser  { static e }ghc-lib-parser { _x }This is used for holes or unresolved identifiers in AST quotes. Note that it could either have a variable name or constructor name.ghc-lib-parser{ #x } ( Overloaded label )ghc-lib-parser{ ?x } ( Implicit parameter )ghc-lib-parser f { p1 p2 = body where decs }ghc-lib-parser $case e of { pat -> body where decs }ghc-lib-parserPattern in Haskell given in {}ghc-lib-parser  { 5 or 'c' }ghc-lib-parser { x }ghc-lib-parser  { (p1,p2) }ghc-lib-parser { (# p1,p2 #) }ghc-lib-parser  { (#|p|#) }ghc-lib-parser "data T1 = C1 t1 t2; {C1 p1 p1} = eghc-lib-parser foo ({x :+ y}) = eghc-lib-parser foo ({x :+ y}) = eSee  Language.Haskell.TH.Syntax#infixghc-lib-parser {(p)}See  Language.Haskell.TH.Syntax#infixghc-lib-parser { ~p }ghc-lib-parser { !p }ghc-lib-parser  { x @ p }ghc-lib-parser { _ }ghc-lib-parser f (Pt { pointx = x }) = g xghc-lib-parser  { [1,2,3] }ghc-lib-parser  { p :: t }ghc-lib-parser  { e -> p }ghc-lib-parserUsed for overloaded and non-overloaded literals. We don't have a good way to represent non-overloaded literals at the moment. Maybe that doesn't matter?ghc-lib-parser&A primitive C-style string, type Addr#ghc-lib-parser desribes a single instance of a class or type function. It is just a ,, but guaranteed to be one of the following: (with empty []) or  (with empty derived [ ])ghc-lib-parserIn #, is the type constructor unlifted?ghc-lib-parserIn , arity of the type constructorghc-lib-parserIn , , and , the total number of s. For example, (#|#) has a  of 2.ghc-lib-parserIn  and =, the number associated with a particular data constructor. s are one-indexed and should never exceed the value of its corresponding . For example:(#_|#) has  1 (out of a total  of 2)(#|_#) has  2 (out of a total  of 2)ghc-lib-parserIn  and ", name of the parent class or typeghc-lib-parserObtained from   in the   Monad.ghc-lib-parser'Contains the import list of the module.ghc-lib-parserObtained from   in the   Monad.ghc-lib-parser-A class, with a list of its visible instancesghc-lib-parserA class methodghc-lib-parserA "plain" type constructor. "Fancier" type constructors are returned using  or  as appropriate. At present, this reified declaration will never have derived instances attached to it (if you wish to check for an instance, see  ).ghc-lib-parserA type or data family, with a list of its visible instances. A closed type family is returned with 0 instances.ghc-lib-parserA "primitive" type constructor, which can't be expressed with a  . Examples: (->), Int#.ghc-lib-parserA data constructorghc-lib-parserA pattern synonymghc-lib-parser7A "value" variable (as opposed to a type variable, see ).The  Maybe Dec field contains Just the declaration which defined the variable - including the RHS of the declaration - or else Nothing, in the case where the RHS is unavailable to the compiler. At present, this value is always Nothing: returning the RHS has not yet been implemented because of lack of interest.ghc-lib-parserA type variable.The Type field contains the type which underlies the variable. At present, this is always  theName5, but future changes may permit refinement of this.ghc-lib-parser Variablesghc-lib-parserData constructorsghc-lib-parserType constructors and classes; Haskell has them in the same name space for now.ghc-lib-parser&An unqualified name; dynamically boundghc-lib-parser#A qualified name; dynamically boundghc-lib-parserA unique local name ghc-lib-parser&Local name bound outside of the TH AST ghc-lib-parserGlobal name bound outside of the TH AST: An original name (occurrences only, not binders) Need the namespace too to be sure which thing we are naming ghc-lib-parser7An abstract type representing names in the syntax tree. s can be constructed in several ways, which come with different name-capture guarantees (see &Language.Haskell.TH.Syntax#namecapture% for an explanation of name capture):the built-in syntax 'f and ''T4 can be used to construct names, The expression 'f gives a Name which refers to the value f currently in scope, and ''T gives a Name which refers to the type T7 currently in scope. These names can never be captured.  and   are similar to 'f and ''T respectively, but the Names are looked up at the point where the current splice is being run. These names can never be captured.  monadically generates a new name, which can never be captured.  generates a capturable name.Names constructed using newName and mkName" may be used in bindings (such as  let x = ... or x -> ...), but names constructed using lookupValueName, lookupTypeName, 'f, ''T may not. ghc-lib-parserObtained from   and *. ghc-lib-parserA   instance can have any of its values turned into a Template Haskell expression. This is needed when a value used within a Template Haskell quotation is bound outside the Oxford brackets ( [| ... |]+) but not at the top level. As an example: )add1 :: Int -> Q Exp add1 x = [| x + 1 |]2Template Haskell has no way of knowing what value x: will take on at splice-time, so it requires the type of x to be an instance of  .A   instance must satisfy  $(lift x) D x for all x, where $(...) is a Template Haskell splice. 6 instances can be derived automatically by use of the  -XDeriveLift GHC language extension: {-# LANGUAGE DeriveLift #-} module Foo where import Language.Haskell.TH.Syntax data Bar a = Bar1 a (Bar a) | Bar2 String deriving Lift ghc-lib-parserTurn a value into a Template Haskell expression, suitable for use in a splice. ghc-lib-parser0Generate a fresh name, which cannot be captured.For example, this: *f = $(do nm1 <- newName "x" let nm2 =   "x" return ( [ nm1] (LamE [VarP nm2] ( nm1))) )will produce the splice f = \x0 -> \x -> x0In particular, the occurrence VarE nm1 refers to the binding VarP nm1%, and is not captured by the binding VarP nm2.Although names generated by newName cannot  be captured , they can capture other names. For example, this: g = $(do nm1 <- newName "x" let nm2 = mkName "x" return (LamE [VarP nm2] (LamE [VarP nm1] (VarE nm2))) )will produce the splice g = \x -> \x0 -> x0since the occurrence VarE nm2) is captured by the innermost binding of x , namely VarP nm1. ghc-lib-parser>Report an error (True) or warning (False), but carry on; use  to stop. ghc-lib-parserReport an error to the user, but allow the current splice's computation to carry on. To abort the computation, use . ghc-lib-parser+Report a warning to the user, and carry on. ghc-lib-parserRecover from errors raised by   or . ghc-lib-parserLook up the given name in the (type namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details. ghc-lib-parserLook up the given name in the (value namespace of the) current splice's scope. See %Language.Haskell.TH.Syntax#namelookup for more details. ghc-lib-parser  looks up information about the  . Eq (a, b) regardless of whether A and B themselves implement 'reifyInstances ''Show [  (  "a") ]* produces every available instance of 'There is one edge case: reifyInstances ''Typeable tys9 currently always produces an empty list (no matter what tys are given). ghc-lib-parser reifyRoles nm returns the list of roles associated with the parameters of the tycon nm . Fails if nm cannot be found or is not a tycon. The returned list should never contain . ghc-lib-parserreifyAnnotations target2 returns the list of annotations associated with target. Only the annotations that are appropriately typed is returned. So if you have Int and String annotations for the same target, you have to call this function twice. ghc-lib-parserreifyModule mod# looks up information about module mod. To look up the current module, call this function with the return value of *. ghc-lib-parserreifyConStrictness nm looks up the strictness information for the fields of the constructor with the name nm-. Note that the strictness information that   returns may not correspond to what is written in the source code. For example, in the following data declaration: data Pair a = Pair a a   would return [, DecidedLazy]0 under most circumstances, but it would return [, DecidedStrict] if the  -XStrictData language extension was enabled. ghc-lib-parser%Is the list of instances returned by   nonempty? ghc-lib-parser2The location at which this computation is spliced. ghc-lib-parserThe  1 function lets you run an I/O computation in the   monad. Take care: you are guaranteed the ordering of calls to   within a single  ? computation, but not about the order in which splices are run.Note: for various murky reasons, stdout and stderr handles are not necessarily flushed when the compiler finishes running, so you should flush them yourself. ghc-lib-parserRecord external files that runIO is using (dependent upon). The compiler can then recognize that it should re-compile the Haskell file when an external file changes.Expects an absolute file path.Notes:ghc -M does not know about these dependencies - it does not execute TH.The dependency is based on file content, not a modification time ghc-lib-parserObtain a temporary file path with the given suffix. The compiler will delete this file after compilation. ghc-lib-parserAdd additional top-level declarations. The added declarations will be type checked along with the current declaration group. ghc-lib-parser ghc-lib-parserEmit a foreign file which will be compiled and linked to the object for the current module. Currently only languages that can be compiled with the C compiler are supported, and the flags passed as part of -optc will be also applied to the C compiler invocation that will compile them.0Note that for non-C languages (for example C++) extern C directives must be used to get symbols that we can access from Haskell.To get better errors, it is recommended to use #line pragmas when emitting C files, e.g. {-# LANGUAGE CPP #-} ... addForeignSource LangC $ unlines [ "#line " ++ show (500 + 1) ++ " " ++ show "libraries/template-haskell/Language/Haskell/TH/Syntax.hs" , ... ] ghc-lib-parserSame as  , but expects to receive a path pointing to the foreign file instead of a ; of its contents. Consider using this in conjunction with  .This is a good alternative to  9 when you are trying to directly link in an object file. ghc-lib-parserAdd a finalizer that will run in the Q monad after the current module has been type checked. This only makes sense when run within a top-level splice.The finalizer is given the local type environment at the splice point. Thus   is able to find the local definitions when executed inside the finalizer. ghc-lib-parser/Adds a core plugin to the compilation pipeline.addCorePlugin m' has almost the same effect as passing  -fplugin=m to ghc in the command line. The major difference is that the plugin module m must not belong to the current package. When TH executes, it is too late to tell the compiler that we needed to compile first a plugin module in the current package. ghc-lib-parserGet state from the   monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed. ghc-lib-parserReplace the state in the   monad. Note that the state is local to the Haskell module in which the Template Haskell expression is executed. ghc-lib-parserDetermine whether the given language extension is enabled in the   monad. ghc-lib-parser%List all enabled language extensions. ghc-lib-parser  is an internal utility function for constructing generic conversion functions from types with | instances to various quasi-quoting representations. See the source of   and   for two example usages: mkCon, mkLit and appQ are overloadable to account for different syntax for expressions and patterns; antiQ allows you to override type-specific cases, a common usage is just  const Nothing#, which results in no overloading. ghc-lib-parser  converts a value to a 'Q Exp' representation of the same value, in the SYB style. It is generalized to take a function override type-specific cases; see  # for a more commonly used variant. ghc-lib-parser  is a variant of   in the  - type class which works for any type with a | instance. ghc-lib-parser  converts a value to a 'Q Pat' representation of the same value, in the SYB style. It takes a function to handle type-specific cases, alternatively, pass  const Nothing to get default behavior. ghc-lib-parser#The name without its module prefix.ExamplesnameBase ''Data.Either.Either"Either"nameBase (mkName "foo")"foo"nameBase (mkName "Module.foo")"foo" ghc-lib-parser&Module prefix of a name, if it exists.ExamplesnameModule ''Data.Either.EitherJust "Data.Either"nameModule (mkName "foo")Nothing nameModule (mkName "Module.foo") Just "Module" ghc-lib-parserA name's package, if it exists.Examples namePackage ''Data.Either.Either Just "base"namePackage (mkName "foo")Nothing!namePackage (mkName "Module.foo")Nothing ghc-lib-parserReturns whether a name represents an occurrence of a top-level variable (), data constructor (%), type constructor, or type class (#). If we can't be sure, it returns H.ExamplesnameSpace 'Prelude.id Just VarNamenameSpace (mkName "id")2Nothing -- only works for top-level variable namesnameSpace 'Data.Maybe.Just Just DataNamenameSpace ''Data.Maybe.MaybeJust TcClsNamenameSpace ''Data.Ord.OrdJust TcClsName ghc-lib-parserGenerate a capturable name. Occurrences of such names will be resolved according to the Haskell scoping rules at the occurrence site. For example: =f = [| pi + $(varE (mkName "pi")) |] ... g = let pi = 3 in $fIn this case, g is desugared to g = Prelude.pi + 3 Note that mkName" may be used with qualified names: mkName "Prelude.pi" See also * for a useful combinator. The above example could be rewritten using * as f = [| pi + $(dyn "pi") |] ghc-lib-parserOnly used internally ghc-lib-parserOnly used internally ghc-lib-parser4Used for 'x etc, but not available to the programmer ghc-lib-parserTuple data constructor ghc-lib-parserTuple type constructor ghc-lib-parserUnboxed tuple data constructor ghc-lib-parserUnboxed tuple type constructor ghc-lib-parserUnboxed sum data constructor ghc-lib-parserUnboxed sum type constructor ghc-lib-parser(Highest allowed operator precedence for  constructor (answer: 9) ghc-lib-parserDefault fixity: infixl 9 ghc-lib-parser ghc-lib-parserghc-lib-parser  (Eq a, Ord b)ghc-lib-parserLine and character position ghc-lib-parser Fresh names ghc-lib-parserReport an error (True) or warning (False) ...but carry on; use  to stop ghc-lib-parserthe error handlerghc-lib-parseraction which may failghc-lib-parserRecover from the monadic  ghc-lib-parserhandler to invoke on failureghc-lib-parsercomputation to run      ' Safe-Inferred> ! ghc-lib-parserReturns J if the document is empty ghc-lib-parserAn empty document ghc-lib-parserA ';' character ghc-lib-parserA ',' character ghc-lib-parserA : character ghc-lib-parser A "::" string ghc-lib-parserA space character ghc-lib-parserA '=' character ghc-lib-parser A "->" string ghc-lib-parserA '(' character ghc-lib-parserA ')' character ghc-lib-parserA '[' character ghc-lib-parserA ']' character ghc-lib-parserA '{' character ghc-lib-parserA '}' character ghc-lib-parserWrap document in (...) ghc-lib-parserWrap document in [...] ghc-lib-parserWrap document in {...} ghc-lib-parserWrap document in '...' ghc-lib-parserWrap document in "..." ghc-lib-parserBeside ghc-lib-parserList version of  ghc-lib-parserBeside, separated by space ghc-lib-parserList version of  ghc-lib-parser5Above; if there is no overlap it "dovetails" the two ghc-lib-parserAbove, without dovetailing. ghc-lib-parserList version of  ghc-lib-parserEither hcat or vcat ghc-lib-parserEither hsep or vcat ghc-lib-parser"Paragraph fill" version of cat ghc-lib-parser"Paragraph fill" version of sep ghc-lib-parserNested ghc-lib-parser "hang d1 n d2 = sep [d1, nest n d2] ghc-lib-parser punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]/ /  6 6 5 5( Safe-InferredP ghc-lib-parser.Pretty prints a pattern synonym type signature ghc-lib-parserPretty prints a pattern synonym's type; follows the usual conventions to print a pattern synonym type compactly, yet unambiguously. See the note on  and the section on pattern synonyms in the GHC user's guide for more information. ) Safe-Inferred ghc-lib-parser Use with ghc-lib-parser Use with ghc-lib-parser*Dynamically binding a variable (unhygenic)ghc-lib-parserSingle-arg lambdaghc-lib-parser staticE x = [| static x |]ghc-lib-parserPattern synonym declarationghc-lib-parserPattern synonym type signatureghc-lib-parserImplicit parameter binding declaration. Can only be used in let and where clauses which consist entirely of implicit bindings.ghc-lib-parserReturn the Module at the place of splicing. Can be used as an input for  .  * Safe-Inferred    Safe-Inferred         + Safe-Inferred '(.>",None #$'(280%ghc-lib-parserThe server-side Template Haskell state. This is created by the StartTH message. A new one is created per module that GHC typechecks.ghc-lib-parser+persistent data between splices in a moduleghc-lib-parser#location for current splice, if anyghc-lib-parserpipe to communicate with GHCghc-lib-parserWe can pass simple expressions to EvalStmt, consisting of values and application. This allows us to wrap the statement to be executed in another function, which is used by GHCi to implement :set args and :set prog. It might be worthwhile to extend this little language in the future.ghc-lib-parserMessages sent back to GHC from GHCi.TH, to implement the methods of Quasi. For an overview of how TH works with Remote GHCi, see Note [Remote Template Haskell] in GHCi.TH.ghc-lib-parserIndicates that this RunTH is finished, and the next message will be the result of RunTH (a QResult).ghc-lib-parserTemplate Haskell return valuesghc-lib-parser1RunTH finished successfully; return value followsghc-lib-parserRunTH threw an exceptionghc-lib-parser RunTH called ghc-lib-parserA  Message a+ is a message that returns a value of type a2. These are requests sent from GHC to the server.ghc-lib-parserExit the iserv processghc-lib-parserCreate a set of BCO objects, and return HValueRefs to them Note: Each ByteString contains a Binary-encoded [ResolvedBCO], not a ResolvedBCO. The list is to allow us to serialise the ResolvedBCOs in parallel. See  createBCOs in compilerghci GHCi.hsc.ghc-lib-parserRelease sghc-lib-parser'Add entries to the Static Pointer Tableghc-lib-parserMalloc some data and return a  to itghc-lib-parserCalls ghc-lib-parser Free data previously created by ghc-lib-parser&Create an info table for a constructorghc-lib-parserEvaluate a statementghc-lib-parser3Resume evaluation of a statement after a breakpointghc-lib-parser4Abandon evaluation of a statement after a breakpointghc-lib-parserEvaluate something of type  IO Stringghc-lib-parserEvaluate something of type String -> IO Stringghc-lib-parserEvaluate something of type IO ()ghc-lib-parser5Create a set of CostCentres with the same module nameghc-lib-parserShow a | as a [String]ghc-lib-parser&Create a new array of breakpoint flagsghc-lib-parserEnable a breakpointghc-lib-parser'Query the status of a breakpoint (True  = enabled)ghc-lib-parser2Get a reference to a free variable at a breakpointghc-lib-parser:Start a new TH module, return a state token that should beghc-lib-parserEvaluate a TH computation.Returns a ByteString, because we have to force the result before returning it to ensure there are no errors lurking in it. The TH types don't have NFData instances, and even if they did, we have to serialize the value anyway, so we might as well serialize it to force it.ghc-lib-parserRun the given mod finalizers.ghc-lib-parserRemote interface to GHC.Exts.Heap.getClosureData. This is used by the GHCi debugger to inspect values in the heap for :print and type reconstruction.ghc-lib-parser;Evaluate something. This is used to support :force in GHCi. Safe-Inferred8ghc-lib-parserLift an D- operation with 1 argument into another monadghc-lib-parserLift an D. operation with 2 arguments into another monadghc-lib-parserLift an D. operation with 3 arguments into another monadghc-lib-parserLift an D. operation with 4 arguments into another monadghc-lib-parsermapAndUnzipM for triplesghc-lib-parserMonadic version of mapAccumLghc-lib-parserMonadic version of mapSndghc-lib-parserMonadic version of concatMapghc-lib-parserApplicative version of mapMaybeghc-lib-parserMonadic version of fmapghc-lib-parserMonadic version of fmapghc-lib-parserMonadic version of z&, aborts the computation at the first True valueghc-lib-parserMonad version of y&, aborts the computation at the first False valueghc-lib-parserMonadic version of orghc-lib-parserMonadic version of foldlghc-lib-parser1Monadic version of foldl that discards its resultghc-lib-parserMonadic version of foldrghc-lib-parser-Monadic version of fmap specialised for Maybeghc-lib-parserMonadic version of when#, taking the condition in the monadghc-lib-parserMonadic version of unless#, taking the condition in the monadghc-lib-parserLike |), only it reverses the sense of the test.ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs'46#"$TSU'6#"$4TSU0None> ghc-lib-parserThis type is very similar to , but it omits the constructors that involve pretty-printing via / . Due to the implementation of u 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-lib-parser(Some other fatal signal (SIGHUP,SIGTERM)ghc-lib-parser*Prints the short usage msg after the errorghc-lib-parserA problem with the command line arguments, but don't print usage.ghc-lib-parserThe  impossible happened.ghc-lib-parserThe user tickled something that's known not to work yet, but we're not counting it as a bug.ghc-lib-parserAn installation problem.ghc-lib-parser&An error in the user's code, probably.ghc-lib-parserThe name of this GHC.ghc-lib-parser;Append a description of the given exception to this string.ghc-lib-parserPanics and asserts.ghc-lib-parserPanics and asserts.ghc-lib-parserPanics and asserts.ghc-lib-parserThrow a failed assertion exception for a given filename and line number.NoneEs ghc-lib-parser=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-lib-parser(Some other fatal signal (SIGHUP,SIGTERM)ghc-lib-parser*Prints the short usage msg after the errorghc-lib-parserA problem with the command line arguments, but don't print usage.ghc-lib-parserThe  impossible happened.ghc-lib-parserThe user tickled something that's known not to work yet, but we're not counting it as a bug.ghc-lib-parserAn installation problem.ghc-lib-parser&An error in the user's code, probably.ghc-lib-parserShow an exception as a string.ghc-lib-parserShow an exception which can possibly throw other exceptions. Used when displaying exception thrown within TH code.ghc-lib-parser;Append a description of the given exception to this string.Note that this uses 3>, 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.ghc-lib-parserLike 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 catchghc-lib-parserTemporarily install standard signal handlers for catching ^C, which just throw an exception in the current thread.$mnwvut$wvutmn1NoneF2 Safe-InferredIghc-lib-parserPowerPC 64-bit ABIghc-lib-parser4ARM Instruction Set Architecture, Extensions and ABIghc-lib-parserOperating systems that the native code generator knows about. Having OSUnknown should produce a sensible default, but no promises.ghc-lib-parserArchitectures that the native code generator knows about. TODO: It might be nice to extend these constructors with information about what instruction set extensions an architecture might support.ghc-lib-parserContains enough information for the native code generator to emit code for this platform.ghc-lib-parser7This predicate tells us whether the platform is 32-bit.ghc-lib-parserThis predicate tells us whether the OS supports ELF-like shared libraries.ghc-lib-parserThis predicate tells us whether the OS support Mach-O shared libraries.4 Safe-InferredK7 Safe-Inferred28M]8NoneNghc-lib-parserExpand occurrences of the $topdir interpolation in a string.ghc-lib-parserExpand occurrences of the $tooldir interpolation in a string on Windows, leave the string untouched otherwise.ghc-lib-parser.Returns a Unix-format path pointing to TopDir.ghc-lib-parsertopdir9 Safe-InferredOyghc-lib-parserCheck if ANSI escape sequences can be used to control color in stderr.None-b-ghc-lib-parser'A call stack constraint, but only when  isDebugOn.ghc-lib-parserCompose a function with itself n times. (nth rather than twice)ghc-lib-parser3Like filter, only it reverses the sense of the testghc-lib-parserUses a function to determine which of two output lists an input element should joinghc-lib-parser is a kind of 0 that is lazy in the second list (observe the ~)ghc-lib-parser 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-lib-parser 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-lib-parser 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-lib-parser 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 J;, then it takes an element from the former list. If it is G, 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-lib-parser takes a list of Bools and a list of some elements and partitions the list according to the list of Bools. Elements corresponding to J+ go to the left; elements corresponding to G 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.ghc-lib-parserstretchZipWith p z f xs ys stretches ys by inserting z in the places where p returns Trueghc-lib-parserThis has the effect of making the two lists have equal length by dropping the tail of the longer one.ghc-lib-parseratLength 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-lib-parser &(lengthExceeds xs n) = (length xs > n)ghc-lib-parser '(lengthAtLeast xs n) = (length xs >= n)ghc-lib-parser "(lengthIs xs n) = (length xs == n)ghc-lib-parser %(lengthIsNot xs n) = (length xs /= n)ghc-lib-parser &(lengthAtMost xs n) = (length xs <= n)ghc-lib-parser ((lengthLessThan xs n) == (length xs < n)ghc-lib-parserTrue if length xs == length ysghc-lib-parserTrue if length xs <= length ysghc-lib-parserTrue if length xs < length ysghc-lib-parserSplit a list into chunks of n elementsghc-lib-parser8Replace the last element of a list with another element.ghc-lib-parser=Remove duplicates but keep elements in order. O(n * log n)ghc-lib-parser+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-lib-parser-Get the last two elements in a list. Partial!ghc-lib-parser=Convert a word to title case by capitalising the first letterghc-lib-parserSearch for possible matches to the users input in the given list, returning a small number of ranked resultsghc-lib-parserA 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.QRQR9 32<Noneeghc-lib-parserA colour/style for use with coloured.ghc-lib-parser;Parse the colour scheme from a string (presumably from the  GHC_COLORS environment variable).ghc-lib-parserAllow colours to be combined (e.g. bold + red); In case of conflict, right side takes precedence. None-?gBghc-lib-parserTakes a list of Maybes and returns the first Just if there is one, or Nothing otherwise.ghc-lib-parserFlipped version of  fromMaybe, useful for chaining.ghc-lib-parserTry performing an D action, failing on error.AHI|||}}}}}4=Nonep+ghc-lib-parserA 5 is a pointer to some array of Latin-1 encoded chars.ghc-lib-parserA  is an array of bytes, hashed to support fast O(1) comparison. It is also associated with a character encoding, so that we know how to convert a  to the local encoding, or to the Z-encoding used by the compiler internally.s support a memoized conversion to the Z-encoding via zEncodeFS.ghc-lib-parser 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-lib-parser 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-lib-parserCreates a UTF-8 encoded  from a ghc-lib-parser Creates a  from a UTF-8 encoded [Word8]ghc-lib-parserReturns the length of the  in charactersghc-lib-parserReturns True if this  is not Z-encoded but already has a Z-encoding cached (used in producing stats).ghc-lib-parserReturns True if the  is emptyghc-lib-parser"Unpacks and decodes the FastStringghc-lib-parser1Gives the UTF-8 encoded bytes corresponding to a ghc-lib-parser!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-lib-parser Outputs a  with no decoding at all,, that is, you get the actual bytes in the  written to the }.ghc-lib-parserWrap an unboxed address into a .ghc-lib-parser Encode a  into a newly allocated  using Latin-1 encoding. The original string must not contain non-Latin-1 characters (above codepoint 0xff).ghc-lib-parser Decode a  back into a  using Latin-1 encoding. This does not free the memory associated with .ghc-lib-parserReturn the length of a ++>Nonez ghc-lib-parserA 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.ghc-lib-parserRead a file into a . The resulting buffer is automatically managed by the garbage collector.ghc-lib-parser Encode a  into a  as UTF-8. The resulting buffer is automatically managed by the garbage collector.ghc-lib-parser/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-lib-parser/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-lib-parser 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-lib-parser 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-lib-parser-Compute the difference in offset between two  s that share the same buffer. Warning:# The behavior is undefined if the s use separate buffers.ghc-lib-parserCheck whether a  is empty (analogous to ).ghc-lib-parser Computes a  which points to the first character of the wanted line. Lines begin at 1.ghc-lib-parserDecode 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'.ghc-lib-parserReturn the previous n* characters (or fewer if we are less than n characters into the buffer.ghc-lib-parsern, the number of bytesghc-lib-parsern, the number of bytesghc-lib-parsern, the number of bytesANone}ghc-lib-parser$Is this an acceptable variable name?ghc-lib-parser'Is this an acceptable constructor name?ghc-lib-parser Is this an acceptable type name?ghc-lib-parserIs this an acceptable alphanumeric variable name, assuming it starts with an acceptable letter?ghc-lib-parserIs this an acceptable symbolic variable name, assuming it starts with an acceptable character?ghc-lib-parserIs this an acceptable alphanumeric constructor name, assuming it starts with an acceptable letter?ghc-lib-parserIs this an acceptable symbolic constructor name, assuming it starts with an acceptable character?BNone~ghc-lib-parserReplicate an 8-bit character  C"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableNone'ghc-lib-parserRendering mode.ghc-lib-parserNormalghc-lib-parserWith zig-zag cutsghc-lib-parser%No indentation, infinitely long linesghc-lib-parserAll on one lineghc-lib-parserA rendering style.ghc-lib-parserThe rendering modeghc-lib-parserLength of line, in charsghc-lib-parser%Ratio of line length to ribbon lengthghc-lib-parserThe TextDetails data typeA TextDetails represents a fragment of text that will be output at some point.ghc-lib-parserA single Char fragmentghc-lib-parserA whole String fragmentghc-lib-parserThe abstract type of documents. A Doc represents a *set* of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.ghc-lib-parserA document of height and width 1, containing a literal character.ghc-lib-parser5A 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.ghc-lib-parserSome text with any width. (text s = sizedText (length s) s)ghc-lib-parserSome text, but without any width. Use for non-printing text such as a HTML or Latex tagsghc-lib-parser2The empty document, with no height and no width.  is the identity for , ,  and ), and anywhere in the argument list for , , , ,  etc.ghc-lib-parserReturns J if the document is emptyghc-lib-parserApply  to  if boolean is true.ghc-lib-parserList version of .ghc-lib-parserList version of .ghc-lib-parserList version of .ghc-lib-parserNest (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-lib-parser "hang d1 n d2 = sep [d1, nest n d2]ghc-lib-parserApply  to the arguments if the first  is not empty.ghc-lib-parser punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]ghc-lib-parserAbove, 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.ghc-lib-parserAbove, with no overlapping.  is associative, with identity .ghc-lib-parser Beside.  is associative, with identity .ghc-lib-parser;Beside, separated by space, unless one of the arguments is .  is associative, with identity .ghc-lib-parserEither  or .ghc-lib-parserEither  or .ghc-lib-parser"Paragraph fill" version of .ghc-lib-parser"Paragraph fill" version of .ghc-lib-parserThe default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5).ghc-lib-parser Render the Doc to a String using the given Style.ghc-lib-parserDefault TextDetails printerghc-lib-parser The general rendering interface.ghc-lib-parserA ';' characterghc-lib-parserA ',' characterghc-lib-parserA : characterghc-lib-parserA space characterghc-lib-parserA '=' characterghc-lib-parserA '(' characterghc-lib-parserA ')' characterghc-lib-parserA '[' characterghc-lib-parserA ']' characterghc-lib-parserA '{' characterghc-lib-parserA '}' characterghc-lib-parser int n = text (show n)ghc-lib-parser integer n = text (show n)ghc-lib-parser float n = text (show n)ghc-lib-parser double n = text (show n)ghc-lib-parser rational n = text (show n)ghc-lib-parser%See Note [Print Hexadecimal Literals]ghc-lib-parserWrap document in '...'ghc-lib-parserWrap document in "..."ghc-lib-parserWrap document in (...)ghc-lib-parserWrap document in [...]ghc-lib-parserWrap document in {...}ghc-lib-parserRendering modeghc-lib-parser Line lengthghc-lib-parserRibbons per lineghc-lib-parserWhat to do with textghc-lib-parserWhat to do at the endghc-lib-parser The documentghc-lib-parserResult5566/None;ghc-lib-parser'Represents a pretty-printable document.To display an , use , , , or . Avoid calling . directly as it breaks the abstraction layer.ghc-lib-parserJust warn about an assertion failure, recording the given file and line number. Should typically be accessed with the WARN macrosghc-lib-parserWhen we print a binder, we often want to print its type too. The OutputableBndr class encapsulates this idea.ghc-lib-parser 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 PprCoreghc-lib-parserThe x in (x. e)ghc-lib-parser+The x in case scrut of x { (y,z) -> ... }ghc-lib-parser+The y,z in case scrut of x { (y,z) -> ... }ghc-lib-parserThe x in (let x = rhs in e)ghc-lib-parser(Class designating that some type has an  representationghc-lib-parserFor a given package, we need to know whether to print it with the component id to disambiguate it.ghc-lib-parserFor a given module, we need to know whether to print it with a package name to disambiguate it.ghc-lib-parserGiven a Name's  and (, decide whether and how to qualify it.ghc-lib-parserWhen 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-lib-parser$NB: This won't ever show package IDsghc-lib-parser!Style for printing error messagesghc-lib-parser(This is not a recommended way to render ,, since it breaks the abstraction layer of . Prefer to use , , , or  instead.ghc-lib-parser6Truncate a list that is longer than the current depth.ghc-lib-parser,Says what to do with and without -dppr-debugghc-lib-parser7Says what to do with -dppr-debug; without, return emptyghc-lib-parserThe 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.ghc-lib-parserLike  but appends an extra newline.ghc-lib-parserLike  but specialized with  and } -. This is typically used to output C-- code.ghc-lib-parserAn efficient variant of  specialized for  that outputs to a .ghc-lib-parserdoublePrec p n shows a floating point number n with p. digits of precision after the decimal point.ghc-lib-parserIndent  some specified amountghc-lib-parser Join two $ together horizontally without a gapghc-lib-parser Join two . together horizontally with a gap between themghc-lib-parser Join two  together vertically; if there is no vertical overlap it "dovetails" the two onto one lineghc-lib-parser Join two  together verticallyghc-lib-parser Concatenate  horizontallyghc-lib-parser Concatenate + horizontally with a space between each oneghc-lib-parser Concatenate  vertically with dovetailingghc-lib-parserSeparate: is either like  or like , depending on what fitsghc-lib-parserCatenate: is either like  or like , depending on what fitsghc-lib-parserA paragraph-fill combinator. It's much like sep, only it keeps fitting things on one line until it can't fit any more.ghc-lib-parserThis behaves like , but it uses ( for horizontal conposition rather than ghc-lib-parserThis behaves like , but does not indent the second document when the header is empty.ghc-lib-parser.Apply the given colour/style for the argument.)Only takes effect if colours are enabled.ghc-lib-parser2Special combinator for showing character literals.ghc-lib-parser/Special combinator for showing string literals.ghc-lib-parser3Special combinator for showing bytestring literals.ghc-lib-parser0Special combinator for showing unboxed literals.ghc-lib-parserReturns the separated concatenation of the pretty printed things.ghc-lib-parserReturns the comma-separated concatenation of the pretty printed things.ghc-lib-parserReturns the comma-separated concatenation of the quoted pretty printed things. ,y,z] ==> `x', `y', `z'ghc-lib-parser&Converts an integer to a verbal index: speakNth 1 = text "first" speakNth 5 = text "fifth" speakNth 21 = text "21st"ghc-lib-parser-Converts an integer to a verbal multiplicity: speakN 0 = text "none" speakN 5 = text "five" speakN 10 = text "10"ghc-lib-parserConverts 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"ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a list: plural [] = char 's' plural ["Hello"] = empty plural ["Hello", "World"] = char 's'ghc-lib-parserDetermines the form of to be appropriate for the length of a list: isOrAre [] = text "are" isOrAre ["Hello"] = text "is" isOrAre ["Hello", "World"] = text "are"ghc-lib-parserDetermines 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-lib-parser&Throw an exception saying "bug in GHC"ghc-lib-parser3Throw an exception saying "this isn't finished yet"ghc-lib-parserThrow an exception saying "bug in pgm being compiled" (used for unusual program errors)ghc-lib-parser!If debug output is on, show some  on the screenghc-lib-parserpprTraceIt desc x is equivalent to pprTrace desc (ppr x) xghc-lib-parserpprTraceException desc x action< runs action, printing a message if it throws an exception.ghc-lib-parser!If debug output is on, show some 7 on the screen along with a call stack when available.ghc-lib-parserPanic with an assertation failure, recording the given file and line number. Should typically be accessed with the ASSERT family of macrosghc-lib-parser The headerghc-lib-parserAmount to indent the hung bodyghc-lib-parser3The hung body, indented and placed below the headerghc-lib-parserThe punctuationghc-lib-parserThe list that will have punctuation added between every adjacent pair of elementsghc-lib-parserPunctuated listghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser where the things have been pretty printed, comma-separated and finally packed into a paragraph.ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parser where the things have been pretty printed, bar-separated and finally packed into a paragraph.INoneH  JNone555KNoneIghc-lib-parser4Calculate 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.LNone'(ghc-lib-parser-Simple data type to represent JSON documents.  MNone#$&23567>?,ghc-lib-parserA typeclass to set/get SrcSpansghc-lib-parser Composes a  decoration with an undecorated syntactic entity to form its decorated variantghc-lib-parser1Decomposes a decorated syntactic entity into its * decoration and its undecorated variantghc-lib-parserDetermines 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.ghc-lib-parserWe attach SrcSpans to lots of things, so let's have a datatype for it.ghc-lib-parser Source SpanA  identifies either a specific portion of a text file or a human-readable description of a location.ghc-lib-parserA  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 Spanghc-lib-parserSource Locationghc-lib-parserReal Source Location'Represents a single point within a fileghc-lib-parser%A Pattern Synonym to Set/Get SrcSpansghc-lib-parserBuilt-in "bad"  values for particular locationsghc-lib-parserBuilt-in "bad"  values for particular locationsghc-lib-parserBuilt-in "bad"  values for particular locationsghc-lib-parserCreates a "bad" 4 that has no detailed information about its locationghc-lib-parserGives the filename of the ghc-lib-parser%Raises an error when used on a "bad" ghc-lib-parser%Raises an error when used on a "bad" ghc-lib-parser 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 caseghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserBuilt-in "bad" ,s for common sources of location uncertaintyghc-lib-parserCreate a "bad" " that has not location informationghc-lib-parser Create a  corresponding to a single pointghc-lib-parser Create a  between two points in a fileghc-lib-parser Create a  between two points in a fileghc-lib-parser Combines two  into one that spans at least all the characters within both spans. Returns UnhelpfulSpan if the files differ.ghc-lib-parserConvert a SrcSpan into one that represents only its first characterghc-lib-parser Test if a 1 is "good", i.e. has precise location informationghc-lib-parserTrue if the span is known to straddle only one line. For "bad" , it returns Falseghc-lib-parserTests whether the first span "contains" the other span, meaning that it covers at least as much source code. True where spans are equal.ghc-lib-parser)Returns the location at the start of the  or a "bad"  if that is unavailableghc-lib-parser'Returns the location at the end of the  or a "bad"  if that is unavailableghc-lib-parserObtains the filename for a  if it is "good"ghc-lib-parserCombine locations from two % things and add them to a third thingghc-lib-parser.Tests whether the two located things are equalghc-lib-parser,Tests the ordering of the two located thingsghc-lib-parser$Alternative strategies for ordering sghc-lib-parser$Alternative strategies for ordering sghc-lib-parser$Alternative strategies for ordering sghc-lib-parserDetermines whether a span encloses a given line and column indexghc-lib-parser4Determines whether a span is enclosed by another oneghc-lib-parserAn abbreviated form of decomposeSrcSpan, mainly to be used in ViewPatternsghc-lib-parserAn abbreviated form of composeSrcSpan, mainly to replace the hardcoded ghc-lib-parserLifts a function of undecorated entities to one of decorated onesghc-lib-parser*The span that may be enclosed by the otherghc-lib-parserThe span it may be enclosed byPNone3-ghc-lib-parser = $(f x y)ghc-lib-parser =* f x y, i.e. a naked top level expressionghc-lib-parserAn integer or infinityghc-lib-parserFractional 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.ghc-lib-parserIntegral 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.ghc-lib-parserInline Specificationghc-lib-parserRule Match Informationghc-lib-parser Phase Numberghc-lib-parserFor when code is generated, e.g. TH, deriving. The pretty printer will then make its own representation of the item.ghc-lib-parserDefault Method Specificationghc-lib-parser Inside Lambdaghc-lib-parserInteresting Contextghc-lib-parser!identifier Occurrence Informationghc-lib-parser2There are many occurrences, or unknown occurrencesghc-lib-parserMarks unused variables. Sometimes useful for lambda and case-bound variables.ghc-lib-parser3Occurs exactly once (per branch), not inside a ruleghc-lib-parserThis identifier breaks a loop of mutually recursive functions. The field marks whether it is only a loop breaker due to a reference in a ruleghc-lib-parserEmbedding Projection pairghc-lib-parser2A general-purpose pretty-printing precedence type.ghc-lib-parser'This instance must not overlap another - instance. However, it may be overlapped by  instances, and it may overlap  instances.ghc-lib-parserSilently 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)ghc-lib-parserSilently 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)ghc-lib-parserEquivalent to having both  and  flags.ghc-lib-parserBehave 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 InstEnvghc-lib-parserThe semantics allowed for overlapping instances for a particular instance. See Note [Safe Haskell isSafeOverlap] (in ) for a explanation of the  field.l : l '{-# OVERLAPPABLE'" or '{-# OVERLAPPING'" or '{-# OVERLAPS'" or '{-# INCOHERENT', l `#-}`,ghc-lib-parserRecursivity Flagghc-lib-parserCaptures 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-lib-parser Warning Text6reason/explanation from a WARNING or DEPRECATED pragmaghc-lib-parserA String Literal in the source, including its original raw format for use by source to source manipulation tools.ghc-lib-parserIs a TyCon a promoted data constructor or just a normal type constructor?ghc-lib-parserIf 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.ghc-lib-parserNo informationghc-lib-parser#The lambda is applied at most once.ghc-lib-parser A *zero-indexed* constructor tagghc-lib-parserConstructor TagType of the tags associated with each constructor possibility or superclass selectorghc-lib-parserThe 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.ghc-lib-parserRepresentation 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 2ghc-lib-parserThe 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 CoreArityghc-lib-parserTags are allocated from here for real constructors or for superclass selectorsghc-lib-parser$It is always safe to assume that an Id) has no lambda-bound variable informationghc-lib-parser=Pretty print an alternative in an unboxed sum e.g. "| a | |".ghc-lib-parser/Special combinator for showing string literals.ghc-lib-parserA representation of infinityghc-lib-parserTurn a positive number into an , where 0 represents infinityghc-lib-parserInject any integer into an ghc-lib-parser#The pretty printing function to useghc-lib-parserThe things to be pretty printedghc-lib-parserAlternative (one-based)ghc-lib-parserArityghc-lib-parser where the alternative havs been pretty printed and finally packed into a paragraph.QNoneghc-lib-parser%Class of things that we can obtain a  fromghc-lib-parserUnique 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.ghc-lib-parserThe 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.**RNoneghc-lib-parser)A monad for generating unique identifiersghc-lib-parserGet a new UniqueSupplyghc-lib-parserGet a new unique identifierghc-lib-parser.Get an infinite list of new unique identifiersghc-lib-parser/A monad which just gives the ability to obtain sghc-lib-parser 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.ghc-lib-parserCreate 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-lib-parser Build two 6 from a single one, each of which can supply its own .ghc-lib-parserCreate an infinite list of  from a single oneghc-lib-parser Obtain the  from this particular ghc-lib-parserObtain an infinite list of : that can be generated by constant splitting of the supplyghc-lib-parser Obtain the  from this particular , and a new supplyghc-lib-parser Build three < from a single one, each of which can supply its own uniqueghc-lib-parser Build four < from a single one, each of which can supply its own uniqueghc-lib-parserRun the  action, returning the final ghc-lib-parserRun the  action, discarding the final SNone3ghc-lib-parser1`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 } ghc-lib-parserPretty-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.ghc-lib-parserPretty-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.ghc-lib-parserDetermines the pluralisation suffix appropriate for the length of a set in the same way that plural from Outputable does for lists.ghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printedghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printed<<TNone3ghc-lib-parser converts a  a into a  a0 assuming, without checking, that it maps each  to a value that has that . See Note [UniqSet invariant].##UNone35? ghc-lib-parser(Type of unique deterministic finite mapsghc-lib-parserPerforms a deterministic fold over the UniqDFM. It's O(n log n) while the corresponding function on  is O(n).ghc-lib-parserPerforms 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-lib-parser Converts  to a list, with elements in deterministic order. It's O(n log n) while the corresponding function on  is O(n).ghc-lib-parser>Partition UniqDFM into two UniqDFMs according to the predicateghc-lib-parser(Delete a list of elements from a UniqDFMghc-lib-parser7This allows for lossy conversion from UniqDFM to UniqFMghc-lib-parser(Apply a function to a particular elementghc-lib-parserThe 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-lib-parser,Map a function over every value in a UniqDFMghc-lib-parserThe things to be pretty printedghc-lib-parser3The pretty printing function to use on the elementsghc-lib-parser+ where the things have been pretty printed((VNone3WNoneDghc-lib-parserA 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.XNone '(.> +ghc-lib-parserInformation 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.ghc-lib-parserserialize a non-binding ( (e.g. a reference to another binding).ghc-lib-parserserialize a binding  (e.g. the name of an IfaceDecl)ghc-lib-parser$Get access to the underlying buffer.0It is quite important that no references to the }; leak out of the continuation lest terrible things happen.ghc-lib-parserhow to deserialize sghc-lib-parserhow to serialize non-binding sghc-lib-parserhow to serialize binding s%%?None#$+5ghc-lib-parserA  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 InstalledPackageIdghc-lib-parserAn 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.ghc-lib-parserA 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.ghc-lib-parser2A ModuleName is essentially a simple string, e.g.  Data.List.ghc-lib-parserA 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.)ghc-lib-parserA map keyed off of s (actually, their s) Has deterministic folds and can be deterministically converted to a listghc-lib-parserA map keyed off of s (actually, their s)ghc-lib-parser A set of sghc-lib-parserA map keyed off of sghc-lib-parserSubstitution on module variables, mapping module names to module identifiers.ghc-lib-parserA map keyed off of ghc-lib-parserA  is an  with the invariant that it only refers to a definite library; i.e., one we have generated code for.ghc-lib-parserA  is a  which contains a .ghc-lib-parserThe full hashed unit identifier, including the component id and the hash.ghc-lib-parserA 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).ghc-lib-parserA 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).ghc-lib-parserCached unique of  .ghc-lib-parserThe component identity of the indefinite library that is being instantiated.ghc-lib-parserThe sorted (by !) instantiations of this library.ghc-lib-parser(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.ghc-lib-parserModule LocationWhere a module lives on the file system: the actual locations of the .hs, .hi and .o files, if we have them ghc-lib-parserAdd the -boot suffix to .hs, .hi and .o files ghc-lib-parserAdd the -boot suffix if the Bool argument is True ghc-lib-parserAdd the -boot4 suffix to all file paths associated with the module ghc-lib-parserAdd the -boot suffix to all output file paths associated with the module, not including the input file itself ghc-lib-parser6Compares module names lexically, rather than by their s ghc-lib-parser!Get a string representation of a  that's unique and stable across recompilations. eg. "$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal" ghc-lib-parserReturns the string version of the module name, with dots replaced by slashes. ghc-lib-parserReturns the string version of the module name, with dots replaced by colons. ghc-lib-parserCalculate 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. ghc-lib-parserA % is definite if it has no free holes. ghc-lib-parser!Create a module variable at some 5. See Note [Representation of module/name variables] ghc-lib-parserThis 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-lib-parser Create a new ' given an explicit module substitution. ghc-lib-parser Injects an > (indefinite library which was on-the-fly instantiated) to a - (either an indefinite or definite library). ghc-lib-parser Injects an  to  (see also  . ghc-lib-parser Lossy conversion to the on-disk  for a component. ghc-lib-parser Test if a  corresponds to a given , modulo instantiation. ghc-lib-parser Test if a  corresponds to a given , modulo instantiation. ghc-lib-parser$Retrieve the set of free holes of a . ghc-lib-parserA % is definite if it has no free holes. ghc-lib-parser 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-lib-parser(Create a new, un-hashed unit identifier. ghc-lib-parser5Compares package ids lexically, rather than by their s ghc-lib-parser6Create a new simple unit identifier (no holes) from a . ghc-lib-parser+Create a new simple unit identifier from a . Internally, this is primarily used to specify wired-in unit identifiers. ghc-lib-parserSubstitutes 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. ghc-lib-parserSubstitutes 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. ghc-lib-parserLike  , but requires only  so it can be used by Packages. ghc-lib-parser*Like 'renameHoleUnitId, but requires only  so it can be used by Packages. ghc-lib-parserGiven 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. ghc-lib-parserSee  . ghc-lib-parserThis 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#$>.E!ghc-lib-parser Get the GHC  right out of a Cabalish !2YXWV!!!!!!!!!!!!!2!!!!!!!!!YXWV!!!!ZNone30 !ghc-lib-parser A C type, used in CAPI FFI callsl : l  '{-# CTYPE' , l,l , l '#-}',!ghc-lib-parser,How to call a particular function in C-land.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![None31!ghc-lib-parser9An index into a given cost centre module,name,flavour set!ghc-lib-parser2Per-module state for tracking cost centre indices.See documentation of y for more details.!ghc-lib-parserInitialize cost centre state.!ghc-lib-parser-Get a new index for a given cost centre name.!!!!!!!!!!\None35672$!!!!!!!"""""""""""""!!!!!!""""!"""""""""]None4Q"ghc-lib-parserWhen 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.3"""""""""""""""""""""""""""""""""""""""""""""""""""3"""""""""""""""""""""""""""""""""""""""""""""""""""None&9g "ghc-lib-parser*Edge direction based on DFS Classification"ghc-lib-parser7Loop back towards the root node. Eg backjumps in loops"ghc-lib-parserv -> v"ghc-lib-parser&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 graph"ghc-lib-parser User data"ghc-lib-parserUser defined node id"ghc-lib-parser#Dependencies/successors of the node"ghc-lib-parserFind 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."ghc-lib-parser1Given a list of roots return all reachable nodes."ghc-lib-parserGiven a start vertex, a way to get successors from a node and a list of (directed) edges classify the types of edges.!""""""""""""""""""""""""""""!""""""""""""""""""""""""""""^None;,#ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs#ghc-lib-parsercombining functionghc-lib-parser initial stateghc-lib-parserinputsghc-lib-parserfinal state, outputs&""""""""""""##########################&"""""#"""#######""""##################"3"3_None>)#ghc-lib-parser6A command-line warning message and the reason it arose#ghc-lib-parserA command-line error message#ghc-lib-parserUsed when filtering warnings: if a reason is given it can be filtered out when displaying.#ghc-lib-parser4GHC flag modes describing when a flag has an effect.#ghc-lib-parser-The flag only affects the non-interactive GHC#ghc-lib-parser)The flag only affects the interactive GHC#ghc-lib-parser#The flag affects multiple ghc modes#ghc-lib-parser.This flag should not be seen in cli completion4####################################################4####################################################3None>ghc-lib-parser-Enumerates the simple on-or-off dynamic flagsghc-lib-parser"Contains not only a collection of s but also a plethora of information relating to the compilation of a single file or GHC sessionghc-lib-parserAn internal helper to check whether to use unicode syntax for output.&Note: You should very likely be using  instead of this function.#ghc-lib-parserA collection of files that must be deleted before ghc exits. The current collection is stored in an IORef in DynFlags, %.#ghc-lib-parser2Files that will be deleted at the end of runGhc(T)#ghc-lib-parser*Files that will be deleted the next time h4 is called, or otherwise at the end of the session.#ghc-lib-parserFlag in string form#ghc-lib-parserFlag in internal form#ghc-lib-parserExtra action to run when the flag is found Typically, emit a warning or error#ghc-lib-parser%In which ghc mode the flag has effect#ghc-lib-parserWhen 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.$ghc-lib-parser+Flags for manipulating packages visibility.$ghc-lib-parser-package,  -package-id$ghc-lib-parser  -hide-package$ghc-lib-parser%Flags for manipulating package trust.$ghc-lib-parser -trust$ghc-lib-parser  -distrust$ghc-lib-parser6Flags for manipulating the set of non-broken packages.$ghc-lib-parser -ignore-package$ghc-lib-parserRepresents 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-lib-parser%Bring all exposed modules into scope?$ghc-lib-parser Bring module m into scope under name n.$ghc-lib-parserWe accept flags which make packages visible, but how they select the package varies; this data type reflects what selection criterion is used.$ghc-lib-parser-package, by !$ghc-lib-parser -package-id, by $ghc-lib-parser-What to do in the link step, if there is one.$ghc-lib-parserDon't link at all$ghc-lib-parserLink object code into a binary$ghc-lib-parserUse the in-memory dynamic linker (works for both bytecode and object code).$ghc-lib-parserLink objects into a dynamic lib (DLL on Windows, DSO on ELF platforms)$ghc-lib-parserLink objects into a static lib$ghc-lib-parserThe $ 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-lib-parser--make , GHCi, etc.$ghc-lib-parser  ghc -c Foo.hs$ghc-lib-parserghc -M, see Finder for why we need this$ghc-lib-parser1The 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].$ghc-lib-parserGenerate C code.$ghc-lib-parser2Generate assembly using the native code generator.$ghc-lib-parser0Generate assembly using the llvm code generator.$ghc-lib-parserGenerate bytecode. (Requires $)$ghc-lib-parser*Don't generate any code. See notes above.$ghc-lib-parserno SCC annotations added$ghc-lib-parser,top-level and nested functions are annotated$ghc-lib-parser"top-level functions annotated only$ghc-lib-parser!exported functions annotated only$ghc-lib-parserannotate call-sites$ghc-lib-parser2Edge weights to use when generating a CFG from CMM%ghc-lib-parserIntegerGMP or IntegerSimple. Set at configure time, but may be overriden by GHC-API users. See Note [The integer library] in PrelNames%ghc-lib-parser,Verbosity level: see Note [Verbosity levels]%ghc-lib-parserOptimisation level%ghc-lib-parser%How much debug information to produce%ghc-lib-parserNumber of simplifier phases%ghc-lib-parserMax simplifier iterations%ghc-lib-parser!Max no iterations for pm checking%ghc-lib-parser+A prefix to report inlining decisions about%ghc-lib-parserAdditional demand analysis%ghc-lib-parserThe number of modules to compile in parallel in --make mode, where Nothing ==> compile as many in parallel as there are CPUs.%ghc-lib-parserEnable RTS timing statistics?%ghc-lib-parserThe heap size to set.%ghc-lib-parserMaximum number of bindings from the type envt to show in type error messages%ghc-lib-parserMaximum number of hole fits to show in typed hole error messages%ghc-lib-parserMaximum number of refinement hole fits to show in typed hole error messages%ghc-lib-parserMaximum level of refinement for refinement hole fits in typed hole error messages%ghc-lib-parserMaximum number of unmatched patterns to show in non-exhaustiveness warnings%ghc-lib-parserMultiplier for simplifier ticks%ghc-lib-parserThreshold for SpecConstr%ghc-lib-parser2Max number of specialisations for any one function%ghc-lib-parserMax number of specialisations for recursive types Not optional; otherwise ForceSpecConstr can diverge.%ghc-lib-parserThreshold for LiberateCase%ghc-lib-parser?Arg count for lambda floating See CoreMonad.FloatOutSwitches%ghc-lib-parserMaximum number of arguments after lambda lifting a recursive function.%ghc-lib-parserMaximum number of arguments after lambda lifting a non-recursive function.%ghc-lib-parserLambda lift even when this turns a known call into an unknown call.%ghc-lib-parser4Align Cmm functions at this boundary or use default.%ghc-lib-parserSimplification history size%ghc-lib-parserTypechecker maximum stack depth%ghc-lib-parserNumber of iterations in the constraints solver Typically only 1 is needed%ghc-lib-parserWay flags from the command line%ghc-lib-parser$The global "way" (e.g. "p" for prof)%ghc-lib-parserThis is set by ( based on where its output is going.%ghc-lib-parser Override the % set by  . Set by -ddump-file-prefix%ghc-lib-parserPath to store the .mix files%ghc-lib-parserthe -ffrontend-opt flags given on the command line, in *reverse* order that they're specified on the command line.%ghc-lib-parserplugins 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 .%ghc-lib-parserstaic 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.%ghc-lib-parserThe  -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.%ghc-lib-parserThe -ignore-package flags from the command line. In *reverse* order that they're specified on the command line.%ghc-lib-parserThe -package and  -hide-package flags from the command-line. In *reverse* order that they're specified on the command line.%ghc-lib-parserThe -plugin-package-id flags from command line. In *reverse* order that they're specified on the command line.%ghc-lib-parserThe -trust and  -distrust flags. In *reverse* order that they're specified on the command line.%ghc-lib-parserFilepath to the package environment file (if overriding default)%ghc-lib-parserSafe Haskell mode%ghc-lib-parserMsgDoc output action: use ErrUtils instead of this if you can&ghc-lib-parser8GHCi scripts specified by -ghci-script, in reverse order&ghc-lib-parserwhat kind of {- SCC -} to add automatically&ghc-lib-parserMachine dependent flags (-m blah stuff)&ghc-lib-parser8Run-time linker information (what options we need, etc.)&ghc-lib-parserRun-time compiler information&ghc-lib-parser0Max size, in bytes, of inline array allocations.&ghc-lib-parserOnly inline memcpy if it generates no more than this many pseudo (roughly: Cmm) instructions.&ghc-lib-parserOnly inline memset if it generates no more than this many pseudo (roughly: Cmm) instructions.&ghc-lib-parser/Reverse the order of error messages in GHC/GHCi&ghc-lib-parser*Limit the maximum number of errors to show&ghc-lib-parser9Unique supply configuration for testing build determinism&ghc-lib-parser/Temporary: CFG Edge weights for fast iterations&ghc-lib-parserThe various Safe Haskell modes&ghc-lib-parserUsed 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 Trac #14312.&ghc-lib-parserUsed 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-lib-parser!Warning was enabled with the flag&ghc-lib-parserWarning was made an error because of -Werror or -Werror=WarningFlag&ghc-lib-parser.Append dump output to files instead of stdout.'ghc-lib-parser)Use the cfg based block layout algorithm.'ghc-lib-parser+Layout based on last instruction per block.'ghc-lib-parser -fPIC'ghc-lib-parser -fPIE'ghc-lib-parser -pie(ghc-lib-parserSuppress timestamps in dumps(ghc-lib-parser#Dump the cfg used for block layout.(ghc-lib-parserAppend 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.(ghc-lib-parserAppend 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"(ghc-lib-parserConcatenate and flatten the list of global and quoted includes returning just a flat list of paths.)ghc-lib-parserThe directory for this version of ghc in the user's app directory (typically something like ~.ghcx86_64-linux-7.6.3))ghc-lib-parser6Will this target result in an object file on the disk?)ghc-lib-parserDoes 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.)ghc-lib-parserThe $ value corresponding to the default way to create object files on the current platform.)ghc-lib-parserAre we building with -fPIE or -fPIC enabled?)ghc-lib-parserUsed by  to partially initialize a new  value)ghc-lib-parser The normal . Note that they are not suitable for use in this form and must be fully initialized by  first.)ghc-lib-parserLike ) but appends an extra newline.)ghc-lib-parserTest whether a  is set)ghc-lib-parserSet a )ghc-lib-parserUnset a )ghc-lib-parserTest whether a  is set)ghc-lib-parserSet a )ghc-lib-parserUnset a )ghc-lib-parserTest whether a & is set)ghc-lib-parserSet a &)ghc-lib-parserUnset a &)ghc-lib-parserTest whether a & is set as fatal)ghc-lib-parserMark a & as fatal (do not set the flag))ghc-lib-parserMark a & as not fatal)ghc-lib-parserTest whether a  is set)ghc-lib-parserSet a )ghc-lib-parserUnset a )ghc-lib-parserSet or unset a 7, unless it has been explicitly set or unset before.)ghc-lib-parserSome modules have dependencies on others through the DynFlags rather than textual imports)ghc-lib-parserIs the -fpackage-trust mode on)ghc-lib-parser9Is Safe Haskell on in some way (including inference mode))ghc-lib-parser(Is the Safe Haskell safe language in use)ghc-lib-parser.Is the Safe Haskell safe inference mode active)ghc-lib-parser(Test if Safe Imports are on in some form)ghc-lib-parserAre all direct imports required to be safe for this Safe Haskell mode? Direct imports are when the code explicitly imports a module)ghc-lib-parserAre 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.)ghc-lib-parserA 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 off)ghc-lib-parserA 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 off)ghc-lib-parser3Retrieve the options corresponding to a particular opt_* field in the correct order)ghc-lib-parserGets the verbosity flag for the current verbosity level. This is fed to other tools, so GHC-specific verbosity flags like  -ddump-most are not included)ghc-lib-parser Sets the , to be appropriate to the optimisation level)ghc-lib-parserParse 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).)ghc-lib-parserLike ) 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.)ghc-lib-parserParses 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-lib-parser!Write an error or warning to the  LogOutput.)ghc-lib-parserAll dynamic flags option strings without the deprecated ones. These are the user facing strings for enabling and disabling options.)ghc-lib-parserMake a list of flags for shell completion. Filter all available flags into two groups, for interactive GHC vs all other.)ghc-lib-parserThese -W flags can all be reversed with  -Wno-)ghc-lib-parserThese -f flags can all be reversed with  -fno-)ghc-lib-parserThese -f flags can all be reversed with  -fno-)ghc-lib-parserThese -X blah$ flags can all be reversed with -XNo blah)ghc-lib-parserWarning groups.As all warnings are in the Weverything set, it is ignored when displaying to the user which group a warning is in.)ghc-lib-parserWarning 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.)ghc-lib-parser4Was the runtime system built with profiling enabled?*ghc-lib-parserGiven 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.*ghc-lib-parser,Find the package environment (if one exists)We interpret the package environment as a set of package flags; to be specific, if we find a package environment file like clear-package-db global-package-db package-db blah/package.conf.d package-id id1 package-id id2we interpret this as [ -hide-all-packages , -clear-package-db , -global-package-db , -package-db blah/package.conf.d , -package-id id1 , -package-id id2 ]There's also an older syntax alias for package-id, which is just an unadorned package id id1 id2+ghc-lib-parser1Resolve any internal inconsistencies in a set of . Returns the consistent 6 as well as a list of warnings to report to the user.+ghc-lib-parserAn empty FilesToClean)ghc-lib-parser to retrieve the options fromghc-lib-parser%Relevant record accessor: one of the opt_* accessorsghc-lib-parser#Correctly ordered extracted options)ghc-lib-parserUpdated -, left-over arguments, and list of warnings.)ghc-lib-parserUpdated -, left-over arguments, and list of warnings.)ghc-lib-parservalid flags to match againstghc-lib-parser(are the arguments from the command line?ghc-lib-parsercurrent dynamic flagsghc-lib-parserarguments to parse'''&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&####################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&(((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********************************************************************************************************************************+++++++++++++++++++++++++++++(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('''&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''((((((((((((((((((((((((((((((((((((((((((&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$#####$$$$$$)))))))))))**)))))))))))))))%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&######$$$$$$$$$$$$$$$$)))$$$$)$$$$$$)$$$$$$$$$$)$$$$$$$$$$#######)$$$)))))))+)($$$$$$$))*)))))))&&&&&&))))))))))$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$)))))))))))))))))))))))))))))))))))))))))))))))))))))))*****))))))))))***))*********************************************************************************************************************+++++++++++++++++++++++++++##################+&&&&((($$$$$$$$$%).None 3 ghc-lib-parserOccurrence NameIn this context that means: "classified (i.e. as a type name, value name, etc) but not qualified and not yet resolved"+ghc-lib-parserOther names in the compiler add additional information to an OccName. This class provides a consistent way to access the underlying OccName. ,ghc-lib-parserValue OccNamess are those that are either in the variable or data constructor namespaces,ghc-lib-parser Test if the 8 is a data constructor that starts with a symbol (e.g. :, or []),ghc-lib-parser Test if the  is that for any operator (whether it is a data constructor or variable or whatever),ghc-lib-parserWrap parens around an operator,ghc-lib-parserHaskell 98 encourages compilers to suppress warnings about unsed names in a pattern if they start with _: this implements that test,ghc-lib-parserTest for definitions internally generated by GHC. This predicte is used to suppress printing of internal definitions in some debug prints,ghc-lib-parserIs 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-lib-parserghc-lib-parserA unique, unambiguous name for something, containing information about where that thing originated.,ghc-lib-parser*A class allowing convenient access to the  of various datatypes,ghc-lib-parser!BuiltInSyntax is for things like (:), [] and tuples, which have special syntactic forms. They aren't in scope as such.,ghc-lib-parserReturns 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,ghc-lib-parserReturns True if the Name comes from some other package: neither this package nor the interactive package.,ghc-lib-parserCreate 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-lib-parser=Create a name which definitely originates in the given module,ghc-lib-parser>Create a name which is actually defined by the compiler itself-ghc-lib-parser0Create a name brought into being by the compiler-ghc-lib-parserMake a name for a foreign call-ghc-lib-parser Make the ? into an internal name, regardless of what it was to begin with-ghc-lib-parserCompare Names lexicographically This only works for Names that originate in the source code or have been tidied.-ghc-lib-parser0Print the string of Name unqualifiedly directly.-ghc-lib-parser!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"-ghc-lib-parserAssumes that the  is a non-binding one. See  and  for serializing binding s. See ( for the rationale for this distinction.-ghc-lib-parserCaution#: 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.-ghc-lib-parserThe same comments as for 's . instance apply.+++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------------7,,,--,,,---,,,-,,,---,,--,,,,,,,,,,,,,,,,-,,,---------`NoneE -ghc-lib-parser A number of -s in dependency order: earlier - scope over later - In a single (def, use) pair, the defs also scope over the uses-ghc-lib-parser(Just ds, us) => The use of any member of the ds, implies that all the us+ are used too. Also, us may mention ds. Nothing => Nothing is defined in this group, but nevertheless all the uses are essential. Used for instance declarations, for example-ghc-lib-parser&A set of names that are used somewhere-ghc-lib-parser)A set of names that are defined somewhere-ghc-lib-parser,True if there is a non-empty intersection. s1 - s2 doesn't compute s2 if s1 is empty-ghc-lib-parserGet the elements of a NameSet with some stable ordering. This only works for Names that originate in the source code or have been tidied. See Note [Deterministic UniqFM] to learn about nondeterminism-ghc-lib-parser Just like -, but - are not eliminated from the - returned-ghc-lib-parser Collect all ->, regardless of whether the group is itself used, but remove - on the way-ghc-lib-parser Given some - and some -, find all the uses, transitively. The result is a superset of the input -,; and includes things defined in the input - (but only if they are used)*------------------------------------------*------------------------------------------aNone-ghc-lib-parserDeterministic Name EnvironmentSee Note [Deterministic UniqFM] in UniqDFM for explanation why we need DNameEnv.-ghc-lib-parserName Environment----------------------------------------------------------cNone3Y-ghc-lib-parser>Docs for arguments. E.g. function arguments, method arguments.-ghc-lib-parserDocs for declarations: functions, data types, instances, methods etc.-ghc-lib-parser$Located Haskell Documentation String-ghc-lib-parserHaskell Documentation String"Internally this is a UTF8-Encoded }.-ghc-lib-parser Create a - from a UTF8-encoded }.-ghc-lib-parserReturn the contents of a - as a UTF8-encoded }.-ghc-lib-parserJoin two docstrings.Non-empty docstrings are joined with two newlines in between, resulting in separate paragraphs.-ghc-lib-parser/Concat docstrings with two newlines in between.Empty docstrings are skipped.If all inputs are empty, H is returned.------------------------------dNone23567k.ghc-lib-parser"Fields in an algebraic record type.ghc-lib-parserUser-visible label of the field.ghc-lib-parserWas DuplicateRecordFields on in the defining module for this datatype?.ghc-lib-parserRecord selector function.ghc-lib-parser2A map from labels to all the auxiliary information.ghc-lib-parserField labels are just represented as strings; they are not necessarily unique (even within a module).ghc-lib-parserRecord selector OccNames are built from the underlying field name and the name of the first data constructor of the type, to support duplicate record field names. See Note [Why selector names include data constructors]. ......... .........eNone<.ghc-lib-parserUsed when we want to fingerprint a structure without depending on the fingerprints of external Names that it refers to.......fNone .ghc-lib-parserA collection of annotations Can't use a type synonym or we hit bug #2412 due to source import.ghc-lib-parserThe kind of annotation target found in the middle end of the compiler.ghc-lib-parserAn annotation target.ghc-lib-parserWe are annotating something with a name: a type or identifier.ghc-lib-parser%We are annotating a particular module.ghc-lib-parserRepresents an annotation after it has been sufficiently desugared from it's initial form of .ghc-lib-parserThe target of the annotation.ghc-lib-parserGet the name& of an annotation target if it exists..ghc-lib-parser An empty annotation environment..ghc-lib-parserConstruct a new annotation environment that contains the list of annotations provided..ghc-lib-parser,Add the given annotation to the environment..ghc-lib-parser"Union two annotation environments..ghc-lib-parser5Find the annotations attached to the given target as } values of your choice. If no deserializer is specified, only transient annotations will be returned..ghc-lib-parser5Find the annotations attached to the given target as } values of your choice. If no deserializer is specified, only transient annotations will be returned..ghc-lib-parserDeserialize all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered)..ghc-lib-parserThe "payload" of an annotation allows recovery of its value at a given type, and can be persisted to an interface file....................................None.ghc-lib-parserAtomically update the reference. Does not force the evaluation of the new variable contents. For strict update, use ...ghc-lib-parserStrict variant of ...ghc-lib-parser2Perform a computation with a different environment.ghc-lib-parser1Perform a computation with an altered environment=46$#"TSUp....................................p......ONone#$4ghc-lib-parser5Log message intended for compiler developers No fileline column stuffghc-lib-parser-Log messages intended for end users. No fileline column stuff.ghc-lib-parserSevWarning and SevError are used for warnings and errors o The message has a filelinecolumn heading, plus "warning:" or "error:", added by mkLocMessags o Output is intended for end usersghc-lib-parserA wrapper around / which uses PprDump style.ghc-lib-parser;Make a possibly annotated error message with location info.ghc-lib-parser5Make an unannotated error message with location info..ghc-lib-parserCategorise error msgs by their importance. This is so each section can be rendered visually distinct. See Note [Error report] for where these come from..ghc-lib-parserPrimary error msg..ghc-lib-parser-Context e.g. "In the second argument of ..."..ghc-lib-parserSupplementary information, e.g. "Relevant bindings include ..."..ghc-lib-parserEverything is fine.ghc-lib-parser%A problem, and some indication of why.ghc-lib-parser*If they aren't all valid, return the first.ghc-lib-parser!A long (multi-line) error message.ghc-lib-parser A short (one-line) error message.ghc-lib-parser;Variant that doesn't care about qualified/unqualified names.ghc-lib-parser!A long (multi-line) error message.ghc-lib-parser A short (one-line) error message.ghc-lib-parser;Variant that doesn't care about qualified/unqualified names/ghc-lib-parsera wrapper around . First check whether the dump flag is set Do nothing if it is unset/ghc-lib-parsera wrapper around . First check whether the dump flag is set Do nothing if it is unsetUnlike /0, has a printer argument but no header argument/ghc-lib-parserA wrapper around / which uses PprUser style./ghc-lib-parserWrite out a dump. If --dump-to-file is set then this goes to a file. otherwise emit to stdout.When hdr is empty, we print in a more compact format (no separators and blank lines)The / is used only to choose the filename to use if --dump-to-file> is used; it is not used to decide whether to dump the output/ghc-lib-parserTime 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: 3withTiming getDynFlags (text "simplify") force 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./ghc-lib-parserLike / but with  rather then /ghc-lib-parserChecks if given . is a fatal warning.ghc-lib-parseroptional annotationghc-lib-parserseverityghc-lib-parserlocationghc-lib-parsermessage/ghc-lib-parserA means of getting a  (often $ will work here)ghc-lib-parserThe name of the phaseghc-lib-parser.A function to force the result (often either const () or rnf)ghc-lib-parser!The body of the phase to be timed.........................................////////////////////////........................../............../////////////////////.//@None?0ghc-lib-parser map from  to !3, plus the transitive closure of preload packages.ghc-lib-parser Retrieve the  from ; used in the hs-boot loop-breaker.ghc-lib-parserGiven a fully instantiated , improve it into a + if we can find it in the package database./ghc-lib-parser!The result of performing a lookup/ghc-lib-parser-Found the module uniquely, nothing else to do/ghc-lib-parser,Multiple modules with the same name in scope/ghc-lib-parserNo 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/ghc-lib-parserNo modules found, but there were some unusable ones with an exact name match/ghc-lib-parser6Nothing found, here are some suggested different names/ghc-lib-parser%The reason why a package is unusable./ghc-lib-parserWe ignored it explicitly using -ignore-package./ghc-lib-parserThis package transitively depends on a package that was never present in any of the provided databases./ghc-lib-parserThis 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.)/ghc-lib-parserThis package transitively depends on a package which was ignored./ghc-lib-parserThis package transitively depends on a package which was shadowed by an ABI-incompatible package./ghc-lib-parserThe 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./ghc-lib-parserPackages which we explicitly depend on (from a command line flag). We'll use this to generate version macros./ghc-lib-parserThis 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./ghc-lib-parserA 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./ghc-lib-parserPackage 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!/ghc-lib-parserModule 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.)/ghc-lib-parser6Module is unavailable because the package is unusable./ghc-lib-parser7Module is public, and could have come from some places./ghc-lib-parser 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./ghc-lib-parserIs the module available from a reexport of an exposed package? There could be multiple./ghc-lib-parser