úÎÅg¼Ê€      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-InferredHorizontal alignment.Vertical alignment. Alignment.LHow many columns are in this thing? A column is one character wide. Every  in a ( always has the same number of columns.†This is for things that have a single, solitary width, not things like columns that might have different widths at different points.A count of columnsA count of rows &Box payload. Has the data of the box. QA Box that has height of at least one. It must have at least one component Bar. tA 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 Ø 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 C with zero height has no characters but still has a certain width.&Occupies a single row on screen. The €s you place in a o should not have any control characters such as newlines or 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 contain newlines, tabs, or other spurious characters. Similarly, use of combining characters will create unexpected results, as Rainbox will see something that takes up (for instance) two characters and think it takes up two screen columns, when in reality it will take up only one screen column. So, if you need accented characters, use a single Unicode code point, not two code points. For example, for é, use U+00E9, not U+0065 and U+0301. How many  are in this ?A blank . Useful for aligning other .A  made of €P. Always one Bar tall, and has as many columns as there are characters in the €.%SMerge several Box horizontally into one Box. That is, with alignment set to ATop:  --- ------- ---- --- ------- ---becomes ,-------------- ----------.... ---...........&With alignment set to ABottom, becomes ,---........... ----------.... --------------&LMerge several Box vertically into one Box. That is, with alignment set to #: #------- ------- --- --- ---- ----becomes 7------- ------- ---.... ---.... ---.... ----... ----...With alignment set to $ , becomes /------- ------- ....--- ....--- ...---- ...----eGiven 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 5. So, when given a width of 10 and an alignment of $, -------becomes  ...-------ƒ;Merge several horizontal Height into one set of horizontal  . That is: 5----- ----- ----- ----- ----- ----- ----- ----- -----into /--------------- --------------- ---------------PStrange behavior will result if each input list is not exactly the same length.'View a d, possibly shrinking it. You set the size of your 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 $ boxd„2Drops the given number of characters from a Chunk.…Generate spaces.)aSplit a number into two parts, so that the sum of the two parts is equal to the original number.G†‡ˆ‰Š‹ ŒŽBackground colorsBackground colors !"#$%Background colors&Background colorsBackground colors‚Background colorsƒ'(„‘…Background colorsNumber of blanks)’“”•–—˜™š›œ*  !"#$%&'(). !"#$  %&(')/‡†‰ˆ‹Š  ŒŽ !"#$%&‚ƒ'(„‘…)’“”•–—˜™š›œ Safe-Inferred*™A Table is a two-dimensional array with two associated one-dimensional arrays: an array of labels for each column, and an array of labels for each row.+One label for each column,One label for each row-Two-dimensional array of cells.Make a new Table./fGiven a two-dimensional array and a function that generates labels, return an array of column labels.0cGiven a two-dimensional array and a function that generates labels, return an array of row labels.1•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 *.2Transform the column labels.3Transform the row labels.4BGiven a two-dimensional array, return a list of columns in order.5>Given a two-dimensional array, return a list of rows in order.6ÿGenerate a two-dimensional array from a list of rows. Every row's length will be equal to the length of the first row; any rows after the first row that are shorter than the first row will have extra columns appended to the end. Therefore, the resulting ž will have no undefined values.ŸžReturns a list where every row is the same length as the first row. Subsequent rows are padded on the end or have elements removed from the end, as needed.7×Generate a two-dimensional array from a list of columns. Every column will be the same height as the first column; subsequent colums will be padded or truncated on the bottom, as needed. Therefore the resulting ž! will have no undefined elements.* +,-.pFunction to generate the column labels. It is applied to the column index and the full contents of the column.gFunction to generate the row labels. It is applied to the row index and the full contents of the row.Cells of the table/pFunction to generate the column labels. It is applied to the column index and the full contents of the column.0gFunction to generate the row labels. It is applied to the row index and the full contents of the row.1œ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.2\The function is passed the column label, column index, and the full contents of the column.3WThe function is passed the row label, the row index, and the full contents of the row.4563Append this empty value to rows that are too short.One list per rowŸ Empty element¡70Append this value to columns that are too short.EOne list per column; the head of each list is the top of the column.¢*+,-./01234567*+,-+,-./01234567* +,-./0123456Ÿ¡7¢ Safe-Inferred88A blank horizontal box with a given width and no height.9)A blank vertical box with a given length.:A Box made of a single €.;*Grow a box. Each dimension of the result A is never smaller than the corresponding dimension of the input . Analogous to ?V, so you give the resulting dimensions that you want. The alignment is analogous to ?6; for instance, if you specify that the alignment is top and leftM, the extra padding is added to the right and bottom sides of the resulting .<Grow a  horizontally.=Grow a  vertically.>Returns a list of ,, each being exactly as wide as the widest  in the input list.@ Resize a ^. Will grow or trim it as necessary in order to reach the resulting size. Returns an empty  if either  or  is less than 1.AResize horizontally.BResize vertically.C sepH sep a bs lays out bs horizontally with alignment a , with sep! amount of space in between each.D sepV sep a bs lays out bs vertically with alignment a , with sep! amount of space in between each.EpunctuateH a p bs! horizontally lays out the boxes bs with a copy of p interspersed between each.FA vertical version of E.G Convert a  to Rainbow €!s. You can then print it using £ or the like.H¸Prints a Box to standard output. If standard output is not a terminal, no colors are used. Otherwise, colors are used if your TERM environment variable suggests they are available.8Background colors Box width9Background colors Box height:;Background colors<Background colorsResulting width=Background colorsResulting height>Background colors?@Background colorsABackground colorsResulting widthBBackground colorsResulting heightCBackground colorsNumber of separating spacesDBackground colorsNumber of separating spacesEBackground colorsFBackground colorsG¤H/  !"#$%&'(89:;<=>?@ABCDEFGH0  !"#$89:%&CDEF?(';<=>@ABGH89:;<=>?@ABCDEFG¤H Safe-InferredO0Amount of intervening space for horizontal joinsd Paste two N together horizontally with no intervening space. Left fixity, precedence 5.e Paste two = together horizontally. Intervening space is determined by O. Left fixity, precedence 5.f Paste two K together vertically with no intervening space. Left fixity, precedence 6.g Paste two ; together vertically. Intervening space is determined by P. Left fixity, precedence 6.IJKLMNOPQRSTUVWXYZ[\]^_`abcdefg:  !"#$:GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg;  !"#$JKLMNOPIQRS:TU]^_`defgabcVWXYZ[\GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgdefg Safe-Inferred hA h; consists of multiple screen lines; each screen line is a .j#Each Bar is one line on the screen.kDHow this Cell aligns compared to the other Cell in its column; use #,  , or $.l=How this Cell aligns compared to other Cell in its row; use !,  , or ".mBackground 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 j8; these will use the colors that are designated in the Chunk itself.¥Returns the width of each  in the h.nTransforms a grid of h to a grid of & by adding necessary padding to each h'. In every row of the array, all the @ will have equal height; in every column of the array, all the  will have equal width.oUse % and & to fuse an array of  into a single . For example, if the ¦ of the array are  ((0,0),(3,5))3, 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.pCreates a single  from a list of rows of h. Each list is a row of hÿI. The list of rows is from top to bottom; within each row, the cells are given from left to right. All rows will be the same length as the first row. Any row that is longer than the first row will have cells lopped off of the end, and any row that is shorter than the first row will be padded with empty cells on the end.qCreates a single  from a list of columns of h. Each list is a column of hÿc. The list of columns is from left to right; within each column, the cells are given from top to bottom. All columns will be the same height as the first column. Any column that is longer than the first column will have cells lopped off the bottom, and any column that is shorter than the first column will be padded on the bottom with blank cells.§Creates a Cell with a # horizontal alignment, a !* vertical alignment, and a background of noColorRadianat. The cell will be one 0 tall and contain the text given in the string. hijklm¥nopq¨§ !"#$GHhijklmnopq!"#$ hijklmpqnoGHhijklm¥nopq¨§ Safe-Inferredrstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~©       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMMNOPQRS;<()>?@ACDEFGHIB+*TUVWXXYZ[N\]^_``abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ-Žmn‘’Š‹“”•–rainbox-0.10.0.0Rainbox.Box.PrimitivesRainbox.Array2d Rainbox.BoxRainbox.ReaderRainboxRainbox.TutorialHorizVertAlignHasWidthwidthWidthunWidthHeightunHeightBoxP WithHeightNoHeightRodunRodBoxunBoxBarunBarNibbleunNibbleSpaces numSpaces spcBackgroundbarToBox barsToBoxheightblankchunkscentertopbottomleftrightcatHcatVviewVviewHsplitTablelColslRowscellstable labelCols labelRowsmapTable mapColLabels mapRowLabelscolsrows arrayByRows arrayByColsblankHblankVchunkgrowgrowHgrowVcolumnviewresizeresizeHresizeVsepHsepV punctuateH punctuateVrenderprintBoxEnvSpecs backgroundalignHalignVspaceHspaceVrunEnv<-><+>/-//+/CellbarshorizvertboxCells glueBoxes gridByRows gridByColsRecord firstNamelastNameaddressphoneemailbalancerecordscell recordToCellscellRowsspacedOutCellsprintSampleBoxrainbow-0.20.4.0 Rainbow.TypesChunkpadHorizpadVert mergeHorizdropChunkCharsblanksARightALeftABottomATop NonCenterCenter dropChars takeCharstakeChunkChars$fHasWidthChunk $fHasWidthBox $fHasWidthBar $fIsStringBox$fHasWidthBoxP $fHasWidthRod $fIsStringRod $fMonoidBar $fIsStringBar$fHasWidthNibble$fIsStringNibble$fHasWidthSpacesbaseGHC.ArrArraypadder indexRows$fFunctorTable putChunks renderRod cellWidthsbounds$fIsStringCellpadCell