úÎÁM¸U‰      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ Safe-InferredHorizontal alignment. Vertical alignment.  Alignment. >How many columns are in this thing? A column is one character  wide. Every  in a  always has the same number of  columns. BThis is for things that have a single, solitary width, not things < like columns that might have different widths at different  points. A count of columns A count of rows 'Box payload. Has the data of the box. >A Box that has height of at least one. It must have at least  one component Bar. :A Box with width but no height. The Int must be at least ; zero. If it is zero, the Box has no height and no width. A 3 has a width in columns and a height in rows. Its > height and width both are always at least zero. It can have < positive height even if its width is zero, and it can have , positive width even if its height is zero. Each row in a - always has the same number of characters; a  < with zero height has no characters but still has a certain  width. &Occupies a single row on screen. The ‰ you place in a  < should not have any control characters such as newlines or 3 tabs, as rainbox assumes that each character in a  takes up ; one screen column and that each character does not create < newlines. Leave newline handling up to rainbox. However,  rainbox will not, check to make sure that your inputs do not J contain newlines, tabs, or other spurious characters. Similarly, use of A combining characters will create unexpected results, as Rainbox @ will see something that takes up (for instance) two characters C and think it takes up two screen columns, when in reality it will ; take up only one screen column. So, if you need accented C characters, use a single Unicode code point, not two code points. 8 For example, for é, use U+00E9, not U+0065 and U+0301. ;Background colors to use when inserting necessary padding. ! How many  are in this ? "A blank . Useful for aligning other . #A  made of ‰(. Always one Bar tall, and has as many ( columns as there are characters in the ‰. )<Merge several Box horizontally into one Box. That is, with  alignment set to ATop:   --- ------- ----  --- -------  --- becomes   --------------  ----------....  ---........... 'With alignment set to ABottom, becomes  ---...........  ----------....  -------------- *:Merge several Box vertically into one Box. That is, with  alignment set to ':   -------  -------   ---  ---   ----  ---- becomes   -------  -------  ---....  ---....  ---....  ----...  ----... With alignment set to ( , becomes  -------  -------  ....---  ....---  ...----  ...---- ŠBGiven the resulting height, pad a list of Height. So, when given # a height of 3 and an alignment of %:   --------  -------- becomes   --------  --------  ........ where dashes is a  with data, and dots is a blank . ‹!Given the resulting width, pad a . So, when given # a width of 10 and an alignment of (,   ------- becomes  ...------- Œ;Merge several horizontal Height into one set of horizontal .  That is:   ----- ----- -----  ----- ----- -----  ----- ----- ----- into   ---------------  ---------------  --------------- ?Strange behavior will result if each input list is not exactly  the same length. +View a 3, possibly shrinking it. You set the size of your 1 viewport and how it is oriented relative to the  as a whole.  The + returned may be smaller than the argument  , but it  will never be bigger.  Examples: :set -XOverloadedStrings3let box = catV defaultBackground top [ "ab", "cd" ]3printBox . view (Height 1) (Width 1) left top $ boxa7printBox . view (Height 1) (Width 1) right bottom $ boxd3Drops the given number of characters from a Chunk. ŽGenerate spaces. -@Split a number into two parts, so that the sum of the two parts " is equal to the original number. K‘’“” •–— !"#$%&'()*Š‹Œ+,˜™šŽBackground colors Number of blanks -›œžŸ ¡¢£¤¥¦.  !"#$%&'()*+,-2$%&'(   !"#)*,+-0’‘”“  •–— !"#$%&'()*Š‹Œ+,˜™šŽ-›œžŸ ¡¢£¤¥¦ Safe-Inferred.7A Table is a two-dimensional array with two associated A one-dimensional arrays: an array of labels for each column, and " an array of labels for each row. /One label for each column 0One label for each row 1Two-dimensional array of cells 2Make a new Table. 3<Given a two-dimensional array and a function that generates + labels, return an array of column labels. 4<Given a two-dimensional array and a function that generates ( labels, return an array of row labels. 5:Transform the cells of the table. Similar to the Functor @ instance, but the mapping function has access to the label and  index of each cell in the .. 6Transform the column labels. 7Transform the row labels. 8;Given a two-dimensional array, return a list of columns in  order. 9?Given a two-dimensional array, return a list of rows in order. :@Generate a two-dimensional array from a list of rows. Each row C must be of equal length; otherwise, the generated array will have  undefined elements. ;?Generate a two-dimensional array from a list of columns. Each @ column must be of equal length; otherwise, the generated array  will have undefined elements. .§/012>Function to generate the column labels. It is applied to the 3 column index and the full contents of the column. ;Function to generate the row labels. It is applied to the - row index and the full contents of the row. Cells of the table 3>Function to generate the column labels. It is applied to the 3 column index and the full contents of the column. 4;Function to generate the row labels. It is applied to the - row index and the full contents of the row. 5;Function is passed the label for the column, the label for ? the row, the column index, the row index, and the contents of # the cell. It returns a new cell. 6;The function is passed the column label, column index, and " the full contents of the column. 7=The function is passed the row label, the row index, and the  full contents of the row. 89:¨;©./0123456789:;./01/0123456789:; .§/0123456789:¨;© Safe-Inferred>;Use the default background colors of the current terminal. ?4Use the same color for 8 and 256-color backgrounds. @9A blank horizontal box with a given width and no height. A*A blank vertical box with a given length. BA Box made of a single ‰. C*Grow a box. Each dimension of the result  is never smaller / than the corresponding dimension of the input . Analogous to  G;, so you give the resulting dimensions that you want. The  alignment is analogous to G; for instance, if you specify  that the alignment is top and left, the extra padding is 6 added to the right and bottom sides of the resulting . DGrow a  horizontally. EGrow a  vertically. FReturns a list of $, each being exactly as wide as the  widest  in the input list. H Resize a 1. Will grow or trim it as necessary in order to - reach the resulting size. Returns an empty  if either   or  is less than 1. IResize horizontally. JResize vertically. K sepH sep a bs lays out bs horizontally with alignment a,  with sep" amount of space in between each. L sepV sep a bs lays out bs vertically with alignment a,  with sep" amount of space in between each. MpunctuateH a p bs! horizontally lays out the boxes bs with a  copy of p interspersed between each. NA vertical version of M. O Convert a  to Rainbow ‰s. You can then print it  using ª or the like. P>Prints a Box to standard output. If standard output is not a C terminal, no colors are used. Otherwise, colors are used if your 8 TERM environment variable suggests they are available. <=>?@ABCDResulting width EResulting height FGHIResulting width JResulting height KLMNO«P7  !"#$%&'()*+,<=>?@ABCDEFGHIJKLMNOP8><=? !$%&'( "@A#B)*KLMNG,+CDEFHIJOP<=>?@ABCDEFGHIJKLMNO«P Safe-InferredW1Amount of intervening space for horizontal joins l Paste two + together horizontally with no intervening $ space. Left fixity, precedence 5. m Paste two . together horizontally. Intervening space is  determined by W.  Left fixity, precedence 5. n Paste two 0 together vertically with no intervening space.  Left fixity, precedence 6. o Paste two , together vertically. Intervening space is  determined by X. Left fixity, precedence 6. QRSTUVWXYZ[\]^_`abcdefghijklmno@ !"#$%&'(>?BOPQRSTUVWXYZ[\]^_`abcdefghijklmnoA>? !$%&'(RSTUVWXQY"Z[#B\]efghlmnoijk^_`abcdOPQRSTUVWXYZ[\]^_`abcdefghijklmno Safe-Inferred pA p8 consists of multiple screen lines; each screen line is  a . r$Each Bar is one line on the screen. s7How this Cell aligns compared to the other Cell in its  column; use ', $, or (. t<How this Cell aligns compared to other Cell in its row; use  %, $, or &. u<Background color for necessary padding that is added to the @ Cell to make it the correct width and height. Does not affect  the Chunk contained in the r; these will use the colors  that are designated in the Chunk itself. ¬Returns the width of each  in the p. vTransforms a grid of p to a grid of  by adding  necessary padding to each p". In every row of the array, all  the 7 will have equal height; in every column of the array,  all the  will have equal width. wUse ) and * to fuse an array of  into a single  . For example, if the ­ of the array are   ((0,0),(3,5))2, then the array has the number of cells given by  rangeSize ((0,0), (3,5))' (that is, 24). The upper left corner  is (0,0) and the lower right corner is (3,5); the upper right  and lower left corners are (3,0) and (0,5), respectively. xCreates a single  from a list of rows of p. Each  list is a row of p+. The list of rows is from top to bottom; : within each row, the cells are given from left to right. This function is partial. Each list of p must be A the same length; otherwise, your program will crash. Since you 0 will typically generate the list of rows using ® or list % comprehensions or the like, this isn't typically a problem; if it ; is a problem, then check the inputs to this function with  z before you apply it. yCreates a single  from a list of columns of p. Each  list is a column of p'. The list of columns is from left to < right; within each column, the cells are given from top to  bottom. This function is partial. Each list of p must be A the same length; otherwise, your program will crash. Since you 3 will typically generate the list of columns using ® or list % comprehensions or the like, this isn't typically a problem; if it ; is a problem, then check the inputs to this function with  z before you apply it. zChecks the input to x or y to ensure that * it is safe. True if the list of list of p is safe for * either of these functions; False if not. ¯Creates a Cell with a ' horizontal alignment, a %  vertical alignment, and a >. The cell will be  one 0 tall and contain the text given in the string. pqrstu¬vwxyz¯$%&'(<>?OPpqrstuvwxyz><?%&'($pqrstuxyzvwOPpqrstu¬vwxyz¯ Safe-Inferred{|}~€‚ƒ„…†‡ˆ{|}~€‚ƒ„…†‡ˆ{|}~€‚ƒ„…†‡ˆ{|}~€‚ƒ„…†‡ˆ°       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZBC+,EFGHJKLMNOPI.-[\]^__`abUcdefghhijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘0’“uv”•–—˜™—š›œrainbox-0.6.0.2Rainbox.Box.PrimitivesRainbox.Array2d Rainbox.BoxRainbox.ReaderRainboxRainbox.TutorialHorizVertAlignHasWidthwidthWidthunWidthHeightunHeightBoxP WithHeightNoHeightRodunRodBoxunBoxBarunBarNibbleunNibbleSpaces numSpaces spcBackground BackgroundboxBackground8boxBackground256barToBox barsToBoxheightblankchunkscentertopbottomleftrightcatHcatVviewVviewHsplitTablelColslRowscellstable labelCols labelRowsmapTable mapColLabels mapRowLabelscolsrows arrayByRows arrayByColsbackgroundFromChunkbackgroundToTextSpecdefaultBackgroundsameblankHblankVchunkgrowgrowHgrowVcolumnviewresizeresizeHresizeVsepHsepV punctuateH punctuateVrenderprintBoxEnvSpecs backgroundalignHalignVspaceHspaceVrunEnv<-><+>/-//+/CellbarshorizvertboxCells glueBoxes gridByRows gridByCols checkGridRecord firstNamelastNameaddressphoneemailbalancerecordscell recordToCellscellRowsspacedOutCellsprintSampleBoxrainbow-0.18.0.0 Rainbow.TypesChunkpadHorizpadVert mergeHorizdropChunkCharsblanksARightALeftABottomATop NonCenterCenter dropChars takeCharstakeChunkChars$fHasWidthChunk $fHasWidthBox $fHasWidthBar $fIsStringBox$fHasWidthBoxP $fHasWidthRod $fIsStringRod $fMonoidBar $fIsStringBar$fHasWidthNibble$fIsStringNibble$fHasWidthSpaces indexRows$fFunctorTable putChunks renderRod cellWidthsbaseGHC.ArrboundsGHC.Basemap$fIsStringCell