h&      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " " " " " " " " " " " # # # # # # $ $ $ $ $ $ % % % % % % % % % % % % & & & & & & & & & & & & ' ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * * * + + + + + + + + + + ++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------------...............2A zipper for text documents that allows convenient editing and navigation Safe-Inferred' "')*/123589:;>?=+ tinytoolsInformation about the document as it is displayed (i.e., post-wrapping) tinytools6 if this line ends with a deleted whitespace character  tinytoolsoffset from beginning of line  tinytoolsText alignment type tinytoolsA span of text tagged with some metadata that makes up part of a display line. tinytoolsA zipper of the logical text input contents (the "document"). The lines before the line containing the cursor are stored in reverse order. The cursor is logically between the "before" and "after" text. A "logical" line of input is a line of input up until a user-entered newline character (as compared to a "display" line, which is wrapped to fit within a given viewport width). tinytools4Map a replacement function over the characters in a  tinytools/Move the cursor left one character, if possible tinytoolsMove the cursor left by the given number of characters, or, if the document isn't long enough, to the beginning of the document tinytools0Move the cursor right one character, if possible tinytoolsMove the character right by the given number of characters, or, if the document isn't long enough, to the end of the document tinytools0Move the cursor up one logical line, if possible tinytools2Move the cursor down one logical line, if possible tinytools/Move the cursor up by the given number of lines tinytools1Move the cursor down by the given number of lines  tinytoolsGet the length (number of characters) of the text in a set of s3 tinytoolsCompute the width of some /, taking into account fullwidth unicode forms.4 tinytoolsCompute the width of a stream of characters, taking into account fullwidth unicode forms.5 tinytoolsCompute the logical index position of a stream of characters from a visual position taking into account fullwidth unicode forms.6 tinytoolsSame as T.words except whitespace characters are included at end (i.e. ["line1 ", ...]) s representing white space.7 tinytools Split words into logical lines,  in the tuple indicates line ends with a whitespace character that got deleted8 tinytoolsWraps a logical line of text to fit within the given width. The first wrapped line is offset by the number of columns provided. Subsequent wrapped lines are not.< tinytoolsGiven a width and a , produce a list of display lines (i.e., lines of wrapped text) with special attributes applied to certain segments (e.g., the cursor). Additionally, produce the current y-coordinate of the cursor and a mapping from display line number to text offset= tinytoolsMove the cursor of the given  to the logical position indicated by the given display line coordinates, using the provided DisplayLinesWithAlignment information. If the x coordinate is beyond the end of a line, the cursor is moved to the end of the line.> tinytoolsGiven a width and a , produce a list of display lines (i.e., lines of wrapped text) with special attributes applied to certain segments (e.g., the cursor). Additionally, produce the current y-coordinate of the cursor and a mapping from display line number to text offset? tinytoolsWraps a logical line of text to fit within the given width. The first wrapped line is offset by the number of columns provided. Subsequent wrapped lines are not.8 tinytools Maximum width tinytoolsOffset for first line tinytoolsText to be wrapped; tinytoolsThe outer list represents logical lines, inner list represents wrapped lines< tinytoolsWidth, used for wrapping tinytoolsMetadata for normal characters tinytoolsMetadata for the cursor tinytools(The text input contents and cursor state> tinytoolsWidth, used for wrapping tinytoolsMetadata for normal characters tinytoolsMetadata for the cursor tinytools(The text input contents and cursor state? tinytools Maximum width tinytoolsOffset for first line tinytoolsText to be wrapped    !"#$%&'()*+,-./0123456789:;<=>? !"#$%&'()*+   ,-./0123456789:;<=>? Safe-Inferred' "')*/123589:;>?@;O tinytools>True if the Text is a single grapheme cluster, False otherwiseP tinytoolsTrue if the last character in the text is a single grapheme cluster, False otherwiseQ tinytoolsremoves grapheme clusters from the text and replaces them with the first character in the clusterR tinytools2True if the input text contains a grapheme clusterKLMNOPQRKLMNOPQR Safe-Inferred' "')*/123589:;>?O"S tinytoolsInformation about the document as it is displayed (i.e., post-wrapping)Z tinytoolsText alignment typee tinytoolsGet the display width of a . "Full width" and "wide" characters take two columns and everything else takes a single column. See  %https://www.unicode.org/reports/tr11/ for more information This is implemented using wcwidth from Vty such that it matches what will be displayed on the terminal. Note that this method can change depending on how vty is configed. Please see vty documentation for details.f tinytools4Map a replacement function over the characters in a ^h tinytools;Move the cursor left one character (clearing the selection)i tinytoolsMove the cursor left by the given number of characters (clearing the selection)j tinytools?expand the selection to the left the given number of charactersk tinytools=Move the cursor to the left one word (clearing the selection)l tinytools,Expand the selection to the left by one wordm tinytoolsMove the cursor to the right one word (clearing the selection)q tinytools-Expand the selection to the right by one wordr tinytools?Clear the selection and move the cursor to the end of selections tinytoolsMove the cursor down one logical line (clearing the selection)u tinytoolsMove the cursor up by the given number of lines (clearing the selection)v tinytoolsMove the cursor down by the given number of lines (clearing the selection)w tinytoolsMove the cursor to the beginning of the current logical line (clearing the selection)x tinytoolsMove the cursor to the end of the current logical line (clearing the selection)y tinytoolsMove the cursor to the top of the document (clearing the selection)z tinytoolsInsert a character at the current cursor position (overwriting the selection){ tinytoolsInsert text at the current cursor position (overwriting the selection)| tinytoolsDelete the selection} tinytoolsDelete the selection or the character to the left of the cursor if there was no selection~ tinytoolsDelete the selection to the character to the right of the cursor if there was no selection tinytoolsDelete the selection and the word to the left of the cursor and the selection. When deleting the word to the left of the selection, deletes all whitespace until it finds a non-whitespace character, and then deletes contiguous non-whitespace characters. tinytoolsInsert up to n spaces to get to the next logical column that is a multiple of n tinytools%The plain text contents of the zipper tinytoolsThe empty zipper tinytoolsConstructs a zipper with the given contents. The cursor is placed after the contents. tinytools*Adjust the cursor and/or selection of the ^ by the given display line coordinates If the x coordinate is beyond the start/end of a line, the cursor is moved to the start"end of that line respectively if add> is true, the selection is expanded to the given position if add is false, the selection is cleared and the cursor is moved to the given position tinytoolsGiven a Z, a width and a ^ , produce a S wrapping happens at word boundaries such that the most possible words fit into each display line if a line can not be wrapped (i.e. it contains a word longer than the display width) then the line is cropped in the middle of the word as necessary tinytoolsWidth, used for wrapping tinytools(The text input contents and cursor state3SXUWVTYZ]\[^bdca`_efghijklmnopqrstuvwxyz{|}~3e^bdca`_fghijklmnopqrstuvwxyz{|}~Z]\[YSXUWVT Safe-Inferred) "%&')*/123589:;>?P Safe-Inferred' "')*/123589:;>?Q@ Safe-Inferred* "%&')*/123589:;>?V  tinytoolsCanonicalLBox is always has non-negative width/height and tracks which axis are flipped to return back to original LBox first Bool is if x values are flipped, second is for y tinytoolsa point in screen space should only be used by VC, so does not belong here newtype VPoint = VPoint (Int, Int) deriving (Generic, Show, FromJSON, ToJSON)a box in logical space note size is non inclusive e.g. an LBox with size (1,1) is exactly 1 point at ul e.g. an LBox with size (0,0) contains nothing tinytoolsreturns a 0 area LBox tinytoolsreturns a 1 area LBox tinytoolsalways returns a canonical LBox tinytoolsalways returns a canonical LBox tinytoolsalways returns a canonical LBox bottom/right XYs cells are not included in tinytools'right and bottom axis are non-inclusive tinytools>(left, right, top, bottom) right and bottom are non-inclusive tinytools,inverted LBox are treated as if not inverted tinytools,inverted LBox are treated as if not inverted tinytoolssubstract lb2 from lb1 and return [LBox] representing the difference tinytoolssame as canonicalLBox_from_lBox but returns just the canonical LBox6(/ Safe-Inferred* "%&')*/123589:;>?W Safe-Inferred) "%&')*/123589:;>?X tinytoolsabitrary text confined to a box tinytools tinytools tinytools tinytools tinytools tinytools tinytools Safe-Inferred) "%&')*/123589:;>?[ tinytoolsthe upper left corner of the box containing the text we want to render tinytoolspre-generated displaylines tinytoolsthe point we want to render tinytoolshow much text is offest by  Safe-Inferred) "%&')*/123589:;>?\ tinytoolsv +y tinytoolsApply a function n times to a given value.''  Safe-Inferred+ "%&')*/123589:;>?^* tinytools(old text, new text) tinytoolsindexed my REltId tinytools&Controllers represent changes to SElts  Safe-Inferred' "')*/123589:;>?_  Safe-Inferred) "%&')*/123589:;>?jY tinytools tinytools!update attachments based on remap tinytoolsupdate AttachmentMap from SuperOwlChanges (call on SuperOwlChanges produced by updateOwlPFWorkspace) tinytoolsupdate SuperOwlChanges to include stuff attached to stuff that changed (call before rendering) tinytoolssame as superOwl_isTopOwl except checks all conditions, intended to be used in asserts tinytools2partition a list into groups based on int pairings tinytoolsconvert SuperOwlParliament to CanvasSelection (includes children and no folders) does not omits locked/hidden elts since Owl should not depend on Layers, you should do this using filterfn I guess?? tinytoolsintended for use in OwlWorkspace to create PFCmd generate MiniOwlTree will be reindexed so as not to conflict with OwlTree relies on OwlParliament being correctly ordered tinytoolsreturns true if rid is a contained in the OwlParliamentSet or is a descendent of sset tinytoolscheck if two OwlTree's are equivalent checks if structure is the same, REltIds can differ tinytoolsthrows if OwlItemMeta is invalid in OwlTree TODO make naming consistent in this file... tinytools&throws if REltId is invalid in OwlTree tinytools1super inefficient implementation for testing only tinytoolsNOTE this will return an AttachmentMap containing targets that have since been deleted tinytoolsreturn fales if any attachments are dangling (i.e. they are attached to a target that does not exist in the tree) tinytools5fold over an element in the tree and all its children tinytools*same as owlTree_foldAt but excludes parent tinytools(iterates an element and all its children tinytools/iterates an element's children (excluding self) tinytools$iterates everything in the directory tinytools select everything in the OwlTree tinytools4assumes SEltTree REltIds do not collide with OwlTree tinytoolsactually this might be OK... or at least we want to check against tree we are attaching to such that if we copy paste something that was attached it keeps those attachments (or maybe we don't!) tinytools&use to convert old style layers to Owl tinytools$current layer position we are adding tinytoolsparent tinytoolsdepth tinytoolsaccumulated directory tinytools%accumulated children at current level tinytools;(next lp, accumulated directory, children of current level)  Safe-Inferred) "%&')*/123589:;>?l tinytoolsgets an  that contains the entire RElt   Safe-Inferred) "%&')*/123589:;>?mn   Safe-Inferred) "%&')*/123589:;>?nd tinytoolsconfiguration to determine whether the attachment point is offest by the border of the box Safe-Inferred' "')*/123589:;>?s  tinytoolsreindexes list of LayerPos such that each element is indexed as if all previous elements have been removed O(n^2) lol tinytoolsinverse of reindexSEltLayerPosForRemoval input indices are before any elements are inserted O(n^2) lol tinytools)assumes selection is ordered and is valid tinytoolsconverts selection so that it satisfies the scoping property by adding matching folders assumes input sequence satisfies scoping property??? simple and inefficient implementation, do not use in prod tinytoolsinserts ys at index i into xs tinytoolsinserts y at index y into xs tinytools!removes n elts at index i from xs tinytoolsremoves elt at index i from xs tinytools2inserts ys into xs, positions are before insertion tinytools1inserts ys into xs, positions are after insertion tinytools1removes is' from xs, positions are before removal tinytoolsmoves all elts, new position is before removal, ys must be sorted Safe-Inferred) "%&')*/123589:;>?s,, Safe-Inferred) "%&')*/123589:;>?u' tinytoolslist of all version supported tinytoolsversion of the current build Safe-Inferred) "%&')*/123589:;>?x& tinytoolsthe LBox may exceed the logical bounding box of the object that is being represented if that object contains wide chars tinytoolsWidePChar represents part of a PChar that the Int8 parameter is offset from where the PChar originates from, so for example ' <- PChar 01 <- Int8 offset parameter1 value for offset means there is no character in the space, the PChar value is ignored in this case tinytools(input index must be contained in the box tinytools+input XY point must be contained in the box tinytools&same as above but does bounds checking Safe-Inferred) "%&')*/123589:;>?y   tinytools helper method used in copy pasta    Safe-Inferred) "%&')*/123589:;>?z  tinytoolscheck if the SCanvas is valid or not for now, canvas offset must always be 0, I forget why it's even an option to offset the SCanvas, probably potatoes.( (  Safe-Inferred) "%&')*/123589:;>?{# #  Safe-Inferred) "%&')*/123589:;>?}3  tinytools5WSEDuplicate OwlParliament -- kiddos get duplicated?? tinytoolsreturns true if the applying `OwlPFCResizeCanvas lbox` results in a valid canvas size   Safe-Inferred) "%&')*/123589:;>?}7 7  Safe-Inferred' "')*/123589:;>?5  Safe-Inferred) "%&')*/123589:;>?T  tinytools(list of parents (assert no repeats), target (placed after or as first child if top owl (no parent))) do_move :: ([REltId], Maybe REltId) -> PFState -> (PFState, SEltLabelChanges) TODO assert selection has all children tinytoolscheck if the SCanvas is valid or not for now, canvas offset must always be 0, I forget why it's even an option to offset the SCanvas, probably potatoes.   Safe-Inferred) "%&')*/123589:;>?*   Safe-Inferred+ "%&')*/123589:;>?(  tinytoolsassumes LayersState is after hide state of given lepos has just been toggled+ +  Safe-Inferred* "')*/123589:;>?7   Safe-Inferred) "%&')*/123589:;>?  tinytoolsWSEAddRelative (OwlSpot, Seq OwlItem) | WSEAddFolder (OwlSpot, Text) | WSERemoveElt [REltId] -- removed kiddos get adopted by grandparents or w/e? | WSEMoveElt (OwlSpot, [REltId]) -- also moves kiddos? | WSEDuplicate [REltId] -- kiddos get duplicated??  tinytoolsWSEDuplicate [LayerPos]   Safe-Inferred) "%&')*/123589:;>?  tinytoolsupdates a BPTree and returns list of AABBs that were affected exposed for testing only, do not call this directly  tinytools6returns list of REltIds that intersect with given AABB  tinytools?same as above but also returns zero area elements for selecting   Safe-Inferred) "%&')*/123589:;>?  tinytools row major  tinytools?brute force renders a RenderedCanvasRegion (ignores broadphase)  tinytoolsrenders just a portion of the RenderedCanvasRegion caller is expected to provide all SElts that intersect the rendered LBox (broadphase is ignored) SElts are rendered in ORDER  tinytoolsrenders just a portion of the RenderedCanvasRegion updates cache as appropriate caller is expected to provide all REltIds that intersect the rendered LBox (broadphase is ignored) REltIds are rendered in ORDER  tinytoolsassumes region LBox is strictly contained in _renderedCanvasRegion_box    ! Safe-Inferred* "%&')*/123589:;>? " Safe-Inferred) "%&')*/123589:;>?7  tinytoolsreturns zipper in TextInputState after keyboard input has been applied for single line entry (does not allow line breaks) Bool indicates if there was any real input # Safe-Inferred) "%&')*/123589:;>?  $ Safe-Inferred) "%&')*/123589:;>?;  % Safe-Inferred) "%&')*/123589:;>?v tinytoolsIMPORTANT MIDPOINT INDEXING DETAILS midpoint indexing for N midpoints looks like S ... 0 ... 1 ... N ... E a midpoint index of (-1) is the segment between S and 0?  ' Safe-Inferred) "%&')*/123589:;>?  tinytoolspredicate holds if pt is between a and b expects a b to be in the same cartesian plane tinytoolsflatten AnchorZipper to a plain list used only in creation step, where no anchor can be focused, asserts if this condition fails tinytoolsadjacentPairs [1,2,3,4] shouldBe [(1,2),(2,3),(3,4)] tinytools)validate if AnchorZipper assumptions hold tinytools+get the last 2 elements of e1:e2:es DELETE  ( Safe-Inferred) "%&')*/123589:;>? tinytoolsshrink an LBox uniformly in each direction, but don't allow it to become negative tinytoolsreturns zipper in TextInputState after keyboard input has been applied Bool indicates if there was any real input tinytoolsjust a helper for pHandleMouse  ) Safe-Inferred) "%&')*/123589:;>?  tinytoolsbox being manipulated  * Safe-Inferred) "%&')*/123589:;>?`  + Safe-Inferred* "%&')*/123589:;>? tinytoolshack function for resetting both handlers It would be nice if we actually cancel/reset the handlers (such that in progress operations are undone), but I don't think it really matters tinytoolsfilters out keyboard input based on the configuration must provide last character-unbroken sequence of text input in order to detect grapheme cluster relies on assumption  let ...(n-1)(n) be a sequence of codepoints that is a grapheme cluster then ...(n-1) is also a grapheme cluster, ,  , Safe-Inferred* "%&')*/123589:;>? tinytoolsinvariants * TODO mouse input type can only change after a `_lMouseData_isRelease == True` * TODO non-mouse inputs can only happen after a `_lMouseData_isRelease == True` except for cancel""0 Safe-Inferred) "%&')*/123589:;>?"1 Safe-Inferred' "')*/123589:;>?? 2 Safe-Inferred' "')*/123589:;>?XKLMNOPQR - Safe-Inferred) "%&')*/123589:;>? tinytools*same as pfstate_basic1 except with folders. Safe-Inferred) "%&')*/123589:;>? tinytools-same as owlpfstate_basic1 except with folders334567789:;<=>?@@AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~3356;<=>?AABCDE_FGHIJKLMNOPQRSTUVWXYZlkopqtuxy                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! " " " " " " " " " " " " # # # # # # $ $ $ $ $ $ % % % % % % % % % % % % & & & & & & & & & & & & ' ' ' ' ' ' ' ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) * * * * * + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - - - - - - - - - - - - - - - . . . . . . . . . . . . . . .          %%%%%'''''(((++(tinytools-0.1.0.3-HF5s50ZrT30LQps3nQySnPPotato.Data.Text.ZipperPotato.Data.Text.UnicodePotato.Data.Text.Zipper2Potato.Flow.ConfigurationPotato.Flow.DebugHelpersPotato.Flow.MathPotato.Flow.SEltsPotato.Flow.Methods.TextCommonPotato.Flow.Methods.LineTypesPotato.Flow.TypesPotato.Flow.OwlItemPotato.Flow.OwlPotato.Flow.Methods.TypesPotato.Flow.AttachmentsPotato.Flow.Methods.LineDrawerPotato.Flow.Deprecated.LayersPotato.Flow.Controller.TypesPotato.Flow.Serialization.SnakePotato.Flow.RenderCachePotato.Flow.SEltMethodsPotato.Flow.OwlStatePotato.Flow.LlamaPotato.Flow.OwlWorkspacePotato.Flow.Controller.InputPotato.Flow.OwlHelpersPotato.Flow.Deprecated.State)Potato.Flow.Controller.Manipulator.Common Potato.Flow.Controller.OwlLayersPotato.Flow.Cmd Potato.Flow.Deprecated.WorkspacePotato.Flow.BroadPhasePotato.Flow.RenderPotato.Flow.Controller.Handler1Potato.Flow.Controller.Manipulator.TextInputState+Potato.Flow.Controller.Manipulator.TextArea&Potato.Flow.Controller.Manipulator.Pan'Potato.Flow.Controller.Manipulator.Line)Potato.Flow.Controller.Manipulator.Layers+Potato.Flow.Controller.Manipulator.CartLine*Potato.Flow.Controller.Manipulator.BoxText&Potato.Flow.Controller.Manipulator.Box)Potato.Flow.Controller.Manipulator.SelectPotato.Flow.Controller.GoatPotato.Flow.Reflex.GoatWidget!Potato.Flow.Deprecated.TestStatesPotato.Flow.TestStatesPotato.Flow.Reflex.GoatSwitcherPotato.Flow.ReflexPotato.Flow.Controller Potato.Flow DisplayLines_displayLines_spans_displayLines_offsetMap_displayLines_cursorPos WrappedLine_wrappedLines_text_wrappedLines_hiddenWhitespace_wrappedLines_offsetOffsetMapWithAlignment TextAlignmentTextAlignment_LeftTextAlignment_RightTextAlignment_CenterSpan TextZipper_textZipper_linesBefore_textZipper_before_textZipper_after_textZipper_linesAfter mapZipperleftleftNrightrightNupdownpageUppageDownhomeendtop insertCharinsert deleteLeft deleteRightdeleteLeftWordtabvalueemptyfromText splitAtWidthtoLogicalIndex takeWidth dropWidth charWidth spansWidth spansLength textWidthwidthI charIndexAtwordsWithWhitespacesplitWordsAtDisplayWidthwrapWithOffsetAndAlignmenteolSpacesToLogicalLinesoffsetMapWithAlignmentInternaloffsetMapWithAlignmentdisplayLinesWithAlignmentgoToDisplayLinePosition displayLineswrapWithOffset$fIsStringTextZipper$fEqDisplayLines$fShowDisplayLines$fEqWrappedLine$fShowWrappedLine$fEqTextAlignment$fShowTextAlignment$fEqSpan $fShowSpan$fShowTextZipper$fEqTextZipper getCharWidthremoveWideCharsinternal_getCharacterBreakszwidgeisSingleGraphemeClusterendsInGraphemeClusterremoveGraphemeClustercontainsGraphemeCluster_displayLines_text_displayLines_selectionCount_textZipper_selected appendEnd shiftLeftNleftWord shiftLeftWord shiftRightN rightWord rightLeftWorddeselectdeleteSelectionPotatoConfiguration*_potatoConfiguration_allowGraphemeClusters3_potatoConfiguration_allowOrReplaceUnicodeWideChars&_potatoConfiguration_unicodeWideCharFn$fDefaultPotatoConfiguration$fShowPotatoConfiguration PotatoLoggerPotatoLoggerObjectMonadPotatoLogger potatoLogPotatoLoggerComponentPLC_NonePLC_GoatPotatoLoggerLevel PLL_DebugPLL_InfoPLL_Warn PLL_Error PotatoShow potatoShow showFoldableassertShowAndDumpassertPotatoShowAndDump traceWithtraceShowIdWithLabel debugBangBang$fMonadPotatoLoggerWriterT DeltaLBox_deltaLBox_translate_deltaLBox_resizeByDeltaXYDelta plusDelta minusDelta CanonicalLBoxLBox_lBox_tl _lBox_sizeXYnilLBox lBox_arealBox_tltranslate_lBoxmake_0area_lBox_from_XYmake_1area_lBox_from_XYmake_lBox_from_XYsmake_lBox_from_XYlistadd_XY_to_lBoxdoes_lBox_contains_XYmake_lBox_from_axis lBox_to_axis union_lBox lBox_expandintersect_lBox intersect_lBox_include_zero_areadoes_lBox_intersect%does_lBox_intersect_include_zero_areasubstract_lBoxcanonicalLBox_from_lBoxcanonicalLBox_from_lBox_lBox_from_canonicalLBoxdeltaLBox_via_canonicalLBoxlBox_isCanonicalLBox $fToJSONKeyV2$fFromJSONKeyV2 $fToJSONV2 $fFromJSONV2 $fNFDataLBox $fBinaryLBox $fToJSONLBox$fFromJSONLBox $fShowLBox $fDelta(,)(,) $fDeltaa(,) $fDeltaV2V2$fDeltaV2DeltaXY$fNFDataDeltaXY$fDeltaLBoxDeltaLBox$fNFDataDeltaLBox $fEqDeltaLBox$fGenericDeltaLBox$fShowDeltaLBox $fEqDeltaXY$fGenericDeltaXY $fShowDeltaXY$fEqLBox $fGenericLBox SEltLabel_sEltLabel_name_sEltLabel_sEltSEltSEltNoneSEltFolderStart SEltFolderEndSEltBoxSEltLine SEltTextArea STextArea_sTextArea_box_sTextArea_text_sTextArea_transparentTextAreaMapping SCartLines_sCartLines_start_sCartLines_ends_sCartLines_style SAutoLine_sAutoLine_start_sAutoLine_end_sAutoLine_superStyle_sAutoLine_lineStyle_sAutoLine_lineStyleEnd_sAutoLine_attachStart_sAutoLine_attachEnd_sAutoLine_midpoints_sAutoLine_labelsSAutoLineLabel_sAutoLineLabel_index_sAutoLineLabel_position_sAutoLineLabel_textSAutoLineLabelPositionSAutoLineLabelPositionRelativeSAutoLineConstraintSAutoLineConstraintFixed LineStyle_lineStyle_leftArrows_lineStyle_rightArrows_lineStyle_upArrows_lineStyle_downArrows LineAutoStyleLineAutoStyle_AutoLineAutoStyle_AutoStraight&LineAutoStyle_StraightAlwaysHorizontal$LineAutoStyle_StraightAlwaysVerticalSBox _sBox_box_sBox_superStyle _sBox_title _sBox_text _sBox_boxTypeSBoxType SBoxType_BoxSBoxType_NoBoxSBoxType_BoxTextSBoxType_NoBoxTextSBoxText_sBoxText_text_sBoxText_style SBoxTitle_sBoxTitle_title_sBoxTitle_align Attachment_attachment_target_attachment_location_attachment_offset_relAttachmentOffsetRatioAttachmentLocationAL_TopAL_BotAL_LeftAL_RightAL_Any TextStyle_textStyle_alignment TextAlignTextAlign_LeftTextAlign_RightTextAlign_Center SuperStyle_superStyle_tl_superStyle_tr_superStyle_bl_superStyle_br_superStyle_vertical_superStyle_horizontal_superStyle_point_superStyle_fill FillStyleFillStyle_BlankFillStyle_SimpleMPCharPCharREltId getPCharWidthsuperStyle_fromListFormatsuperStyle_toListFormat)convertTextAlignToTextZipperTextAlignmentattachment_offset_rel_defaultattachment_create_defaultsBoxType_isTextsBoxType_hasBorder make_sBoxType sBox_hasLabellineStyle_fromListFormatlineStyle_toListFormat$fDefaultFillStyle$fNFDataFillStyle$fBinaryFillStyle$fToJSONFillStyle$fFromJSONFillStyle$fShowSuperStyle$fDefaultSuperStyle$fNFDataSuperStyle$fBinarySuperStyle$fToJSONSuperStyle$fFromJSONSuperStyle$fDefaultTextAlign$fNFDataTextAlign$fBinaryTextAlign$fToJSONTextAlign$fFromJSONTextAlign$fShowTextStyle$fDefaultTextStyle$fNFDataTextStyle$fBinaryTextStyle$fToJSONTextStyle$fFromJSONTextStyle$fNFDataAttachmentLocation$fBinaryAttachmentLocation$fToJSONAttachmentLocation$fFromJSONAttachmentLocation$fNFDataAttachment$fBinaryAttachment$fToJSONAttachment$fFromJSONAttachment$fShowSBoxTitle$fDefaultSBoxTitle$fNFDataSBoxTitle$fBinarySBoxTitle$fToJSONSBoxTitle$fFromJSONSBoxTitle$fShowSBoxText$fDefaultSBoxText$fNFDataSBoxText$fBinarySBoxText$fToJSONSBoxText$fFromJSONSBoxText$fDefaultSBoxType$fNFDataSBoxType$fBinarySBoxType$fToJSONSBoxType$fFromJSONSBoxType $fShowSBox $fDefaultSBox $fNFDataSBox $fBinarySBox $fToJSONSBox$fFromJSONSBox$fDefaultLineAutoStyle$fNFDataLineAutoStyle$fBinaryLineAutoStyle$fToJSONLineAutoStyle$fFromJSONLineAutoStyle$fShowLineStyle$fDefaultLineStyle$fNFDataLineStyle$fBinaryLineStyle$fToJSONLineStyle$fFromJSONLineStyle$fNFDataSAutoLineConstraint$fBinarySAutoLineConstraint$fToJSONSAutoLineConstraint$fFromJSONSAutoLineConstraint$fNFDataSAutoLineLabelPosition$fBinarySAutoLineLabelPosition$fToJSONSAutoLineLabelPosition $fFromJSONSAutoLineLabelPosition$fDefaultSAutoLineLabel$fNFDataSAutoLineLabel$fBinarySAutoLineLabel$fToJSONSAutoLineLabel$fFromJSONSAutoLineLabel$fShowSAutoLineLabel$fDefaultSAutoLine$fShowSAutoLine$fNFDataSAutoLine$fBinarySAutoLine$fToJSONSAutoLine$fFromJSONSAutoLine$fNFDataSCartLines$fBinarySCartLines$fToJSONSCartLines$fFromJSONSCartLines$fNFDataSTextArea$fBinarySTextArea$fToJSONSTextArea$fFromJSONSTextArea$fDefaultSTextArea $fNFDataSElt $fBinarySElt $fToJSONSElt$fFromJSONSElt$fNFDataSEltLabel$fBinarySEltLabel$fToJSONSEltLabel$fFromJSONSEltLabel $fEqSEltLabel$fGenericSEltLabel$fShowSEltLabel$fEqSElt $fGenericSElt $fShowSElt $fEqSTextArea$fGenericSTextArea$fShowSTextArea$fEqSCartLines$fGenericSCartLines$fShowSCartLines $fEqSAutoLine$fGenericSAutoLine$fEqSAutoLineLabel$fGenericSAutoLineLabel$fEqSAutoLineLabelPosition$fGenericSAutoLineLabelPosition$fShowSAutoLineLabelPosition$fEqSAutoLineConstraint$fGenericSAutoLineConstraint$fShowSAutoLineConstraint $fEqLineStyle$fGenericLineStyle$fEqLineAutoStyle$fGenericLineAutoStyle$fShowLineAutoStyle$fEqSBox $fGenericSBox $fEqSBoxType$fGenericSBoxType$fShowSBoxType $fEqSBoxText$fGenericSBoxText $fEqSBoxTitle$fGenericSBoxTitle$fEqAttachment$fGenericAttachment$fShowAttachment$fEqAttachmentLocation$fGenericAttachmentLocation$fShowAttachmentLocation $fEqTextStyle$fGenericTextStyle $fEqTextAlign$fGenericTextAlign$fShowTextAlign$fEqSuperStyle$fGenericSuperStyle $fEqFillStyle$fGenericFillStyle$fShowFillStyledisplayLinesToCharCartRotationReflection'_cartRotationReflection_rotateLeftTimes'_cartRotationReflection_reflectVertical TransformMetransformMe_rotateLefttransformMe_rotateRighttransformMe_reflectHorizontallytransformMe_reflectVerticallyLineAnchorsForRender_lineAnchorsForRender_start_lineAnchorsForRender_rest AnchorType AT_End_Up AT_End_Down AT_End_Left AT_End_Right AT_Elbow_TL AT_Elbow_TR AT_Elbow_BR AT_Elbow_BLAT_Elbow_InvalidCartDirCD_UpCD_DownCD_LeftCD_Right flipCartDir cartDirToUnitcartDirToAnchorcartDirWithDistanceToV2 matrix_cw_90 matrix_ccw_90cartRotationReflection_identitycartRotationReflection_invert#cartRotationReflection_invert_applynTimescartRotationReflection_apply$fNFDataCartDir$fNFDataLineAnchorsForRender$fTransformMeRatio$fTransformMeLBox$fTransformMe(,,)$fTransformMe(,)$fTransformMeV2$fTransformMeAnchorType$fTransformMeCartDir$fTransformMeAttachmentLocation!$fTransformMeLineAnchorsForRender#$fTransformMeCartRotationReflection$fShowLineAnchorsForRender$fGenericLineAnchorsForRender$fEqLineAnchorsForRender$fEqAnchorType$fShowAnchorType $fEqCartDir$fGenericCartDir $fShowCartDirCTag CTagRenameCTagLine CTagBoxText CTagBoxTypeCTagBoxTextStyleCTagBoxLabelAlignmentCTagBoxLabelText CTagTextAreaCTagTextAreaToggleCTagSuperStyle CTagLineStyleCTagBoundingBoxCTextAreaToggle CTextArea CMaybeText CTextAlign CTextStyle CLineStyle CSuperStyle CBoundingBox_cBoundingBox_deltaBoxCBoxTypeCBoxText_cBoxText_deltaTextCLine_cLine_deltaStart_cLine_deltaEnd_cLine_deltaAttachStart_cLine_deltaAttachEndCRename_cRename_deltaLabelDeltaTextAreaToggle DeltaTextAreaDeltaMaybeTextDeltaTextStyleDeltaLineStyleDeltaSuperStyleDeltaTextAlign DeltaText SPotatoFlow_sPotatoFlow_sCanvas_sPotatoFlow_sEltTreeSCanvas _sCanvas_boxSEltTree LayerPosMapSEltLabelChangesWithLayerPosSEltLabelChanges AttachmentMapSuperSEltLabel REltIdMapLayerPos$fNFDataSCanvas$fBinarySCanvas$fToJSONSCanvas$fFromJSONSCanvas $fShowSCanvas$fNFDataSPotatoFlow$fBinarySPotatoFlow$fToJSONSPotatoFlow$fFromJSONSPotatoFlow$fDeltaTextAlignDeltaTextAlign$fNFDataDeltaTextAlign $fDeltaSuperStyleDeltaSuperStyle$fNFDataDeltaSuperStyle$fDeltaLineStyleDeltaLineStyle$fNFDataDeltaLineStyle$fDeltaTextStyleDeltaTextStyle$fNFDataDeltaTextStyle$fDeltaMaybeDeltaMaybeText$fNFDataDeltaMaybeText$fDeltaMapDeltaTextArea$fNFDataDeltaTextArea$fDeltaSEltDeltaTextAreaToggle$fNFDataDeltaTextAreaToggle$fDeltaSEltLabelCRename$fNFDataCRename$fDeltaSAutoLineCLine$fDefaultCLine $fNFDataCLine$fDeltaSBoxTextCBoxText$fDeltaSBoxCBoxText$fNFDataCBoxText$fDeltaSBoxCBoxType$fNFDataCBoxType$fNFDataCBoundingBox$fNFDataCSuperStyle$fNFDataCLineStyle$fNFDataCTextStyle$fNFDataCTextAlign$fNFDataCMaybeText$fNFDataCTextArea$fNFDataCTextAreaToggle$fEqCTextAreaToggle$fGenericCTextAreaToggle$fShowCTextAreaToggle $fEqCTextArea$fGenericCTextArea$fShowCTextArea$fEqCMaybeText$fGenericCMaybeText$fShowCMaybeText$fEqCTextAlign$fGenericCTextAlign$fShowCTextAlign$fEqCTextStyle$fGenericCTextStyle$fShowCTextStyle$fEqCLineStyle$fGenericCLineStyle$fShowCLineStyle$fEqCSuperStyle$fGenericCSuperStyle$fShowCSuperStyle$fEqCBoundingBox$fGenericCBoundingBox$fShowCBoundingBox $fEqCBoxType$fGenericCBoxType$fShowCBoxType $fEqCBoxText$fGenericCBoxText$fShowCBoxText $fEqCLine$fGenericCLine $fShowCLine $fEqCRename$fGenericCRename $fShowCRename$fEqDeltaTextAreaToggle$fGenericDeltaTextAreaToggle$fShowDeltaTextAreaToggle$fEqDeltaTextArea$fGenericDeltaTextArea$fShowDeltaTextArea$fEqDeltaMaybeText$fGenericDeltaMaybeText$fShowDeltaMaybeText$fEqDeltaTextStyle$fGenericDeltaTextStyle$fShowDeltaTextStyle$fEqDeltaLineStyle$fGenericDeltaLineStyle$fShowDeltaLineStyle$fEqDeltaSuperStyle$fGenericDeltaSuperStyle$fShowDeltaSuperStyle$fEqDeltaTextAlign$fGenericDeltaTextAlign$fShowDeltaTextAlign$fEqSPotatoFlow$fGenericSPotatoFlow$fShowSPotatoFlow $fEqSCanvas$fGenericSCanvas $fGEqTYPECTag$fGCompareTYPECTag$fGShowTYPECTagControllersWithId ControllercontrollerWithId_isParams$fHasTYPEcCTag $fNFDataDSum HasOwlItemhasOwlItem_owlItemhasOwlItem_namehasOwlItem_isFolderhasOwlItem_attachmentshasOwlItem_toSElt_hackhasOwlItem_toSEltLabel_hackhasOwlItem_toOwlSubItemMommyOwlmommyOwl_kiddosmommyOwl_hasKiddosOwlItem _owlItem_info_owlItem_subItem OwlSubItemOwlSubItemNoneOwlSubItemFolder OwlSubItemBoxOwlSubItemLineOwlSubItemTextAreaOwlInfo _owlInfo_nameowlSubItem_equivalent owlItem_nameowlItem_setNameowlSubItem_to_sElt_hackowlItem_toSElt_hacksElt_to_owlSubItem$fNFDataOwlInfo$fNFDataOwlSubItem$fPotatoShowOwlItem$fNFDataOwlItem$fMommyOwlOwlItem$fHasOwlItemOwlItem $fShowOwlItem $fEqOwlItem$fGenericOwlItem$fGenericOwlSubItem$fShowOwlSubItem$fEqOwlSubItem $fShowOwlInfo $fEqOwlInfo$fGenericOwlInfo HasOwlTreehasOwlTree_owlTreehasOwlTree_existshasOwlTree_findSuperOwlhasOwlTree_mustFindSuperOwl'hasOwlTree_test_findFirstSuperOwlByName+hasOwlTree_test_mustFindFirstSuperOwlByName MiniOwlTreeOwlTree_owlTree_mapping_owlTree_topOwlsOwlParliamentSetCanvasSelectionunCanvasSelection IsParliamentisParliament_disjointUnionisParliament_nullisParliament_emptyisParliament_lengthSuperOwlParliamentunSuperOwlParliament OwlParliamentunOwlParliamentSuperOwlChangesSuperOwl _superOwl_id_superOwl_meta _superOwl_eltOwlSpot_owlSpot_parent_owlSpot_leftSibling OwlItemMeta_owlItemMeta_parent_owlItemMeta_depth_owlItemMeta_positionSiblingPosition OwlMappingerrorMsg_owlTree_lookupFailerrorMsg_owlMapping_lookupFailowlItem_updateAttachments&locateLeftSiblingIdFromSiblingPositionisDescendentOftopSpotattachmentMap_addSuperOwls'attachmentMap_addSuperOwls&updateAttachmentMapFromSuperOwlChangesgetChangesFromAttachmentMap superOwl_idsuperOwl_isTopOwlsuperOwl_isTopOwlSurelynoOwlsuperOwl_parentIdsuperOwl_depthsuperOwl_owlSubItemowlTree_superOwlNthParentId disjointUnion"owlParliament_toSuperOwlParliament"superOwlParliament_toOwlParliament partitionNmakeSortedSuperOwlParliament*superOwlParliament_disjointUnionAndCorrectsuperOwlParliament_isValidsuperOwlParliament_toSEltTree+superOwlParliament_convertToCanvasSelection+superOwlParliament_convertToSeqWithChildren"owlParliament_convertToMiniOwltree%superOwlParliament_toOwlParliamentSetowlParliamentSet_memberowlParliamentSet_descendentowlParliamentSet_findParentsowlTree_equivalentowlTree_validate owlTree_maxIdinternal_owlTree_reorgKiddos emptyOwlTreeowlTree_existsowlTree_findSuperOwlowlTree_mustFindSuperOwlowlTree_findKiddosowlTree_findSuperOwlAtOwlSpotowlTree_goRightFromOwlSpotowlTree_owlItemMeta_toOwlSpotowlTree_rEltId_toOwlSpot%owlTree_rEltId_toFlattenedIndex_debugowlTree_makeAttachmentMapowlTree_hasDanglingAttachmentsowlTree_topSuperOwlsowlTree_foldAt'owlTree_foldAtowlTree_foldChildrenAt'owlTree_foldChildrenAt owlTree_foldowlTree_owlCount owliterateatowliteratechildrenat owliterateallowlTree_toSuperOwlParliamentowlTree_removeREltIdowlTree_removeSuperOwlowlTree_moveOwlParliamentowlTree_addSEltTreeowlTree_reindexowlTree_addMiniOwlTreeinternal_owlTree_addOwlItemowlTree_addOwlItemowlTree_addOwlItemList owlTree_superOwl_comparePosition#internal_addUntilFolderEndRecursiveowlTree_fromSEltTreeowlTree_fromOldStateowlTree_toSEltTreesuperOwl_toSElt_hacksuperOwl_toSEltLabel_hack$fPotatoShowOwlItemMeta$fNFDataOwlItemMeta$fNFDataOwlSpot$fPotatoShowSuperOwl$fHasOwlItemSuperOwl$fMommyOwlSuperOwl$fNFDataSuperOwl$fNFDataOwlParliament$fPotatoShowSuperOwlParliament$fNFDataSuperOwlParliament $fIsParliamentSuperOwlParliament$fIsParliamentOwlParliament$fPotatoShowOwlTree$fMommyOwlOwlTree$fNFDataOwlTree$fHasOwlTreeOwlTree $fShowOwlTree $fEqOwlTree$fGenericOwlTree$fShowCanvasSelection$fEqCanvasSelection$fEqSuperOwlParliament$fShowSuperOwlParliament$fGenericSuperOwlParliament$fShowOwlParliament$fGenericOwlParliament $fEqSuperOwl$fShowSuperOwl$fGenericSuperOwl $fShowOwlSpot$fGenericOwlSpot$fEqOwlItemMeta$fShowOwlItemMeta$fGenericOwlItemMeta SEltDrawer_sEltDrawer_box_sEltDrawer_renderFn_sEltDrawer_maxCharWidthSEltDrawerBoxFnSEltDrawerRenderFnmakePotatoRenderer nilDrawersEltDrawer_renderToLinesgetSEltBox_naivegetSEltLabelBoxBoxWithAttachmentLocationAvailableAttachment6attachLocationFromLBox_conjugateCartRotationReflectionattachLocationFromLBox availableAttachLocationsFromLBox-owlItem_availableAttachmentsAtDefaultLocationowlItem_availableAttachmentsisOverAttachmentprojectAttachmentattachmentRenderChar$fShowAvailableAttachment$fEqAvailableAttachment$fEqCartSegment$fShowCartSegmentdetermineSeparationlineAnchorsForRender_simplifylineAnchorsForRender_length/lineAnchorsForRender_findIntersectingSubsegment'lineAnchorsForRender_doesIntersectPoint%lineAnchorsForRender_doesIntersectBoxsSimpleLineNewRenderFn%sAutoLine_to_lineAnchorsForRenderList"sSimpleLineNewRenderFnComputeCache'internal_getSAutoLineLabelPosition_walk1getSAutoLineLabelPositionFromLineAnchorsForRendergetSAutoLineLabelPosition getSortedSAutoLineLabelPositions1getClosestPointOnLineFromLineAnchorsForRenderList+$fTransformMeSimpleLineSolverParameters_NEW$fTransformMeOffsetBorder$fShowOffsetBorderreindexSEltLayerPosForRemovalreindexSEltLayerPosForInsertionhasScopingPropertyselectionHasScopingPropertyfindMatchingScopescopeSelection insertElts insertElt removeElts"insertEltList_indexBeforeInsertion!insertEltList_indexAfterInsertion removeEltList moveEltListundoMoveEltListEverythingLoadStateControllerMeta_controllerMeta_pan_controllerMeta_layers LayerMetaMap LayerMeta_layerMeta_isLocked_layerMeta_isHidden_layerMeta_isCollapsed SelectionSetPotatoDefaultParameters$_setPotatoDefaultParameters_sBoxType%_setPotatoDefaultParameters_lineStyle(_setPotatoDefaultParameters_lineStyleEnd&_setPotatoDefaultParameters_superStyle/_setPotatoDefaultParameters_box_label_textAlign._setPotatoDefaultParameters_box_text_textAlignPotatoDefaultParameters!_potatoDefaultParameters_sBoxType#_potatoDefaultParameters_superStyle"_potatoDefaultParameters_lineStyle%_potatoDefaultParameters_lineStyleEnd,_potatoDefaultParameters_box_label_textAlign+_potatoDefaultParameters_box_text_textAlignTool Tool_SelectTool_PanTool_Box Tool_Line Tool_Text Tool_TextArea Tool_CartLineUnicodeWidthFnunicodeWidth_wcwidth tool_isCreatepotatoDefaultParameters_setdefaultFolderCollapseStatelayerMetaMap_isCollapsedemptyControllerMeta $fDefaultPotatoDefaultParameters#$fDefaultSetPotatoDefaultParameters$fDefaultLayerMeta$fBinaryLayerMeta$fNFDataLayerMeta$fToJSONLayerMeta$fFromJSONLayerMeta$fShowLayerMeta$fDefaultControllerMeta$fBinaryControllerMeta$fNFDataControllerMeta$fToJSONControllerMeta$fFromJSONControllerMeta$fShowControllerMeta$fEqControllerMeta$fGenericControllerMeta $fEqLayerMeta$fGenericLayerMeta$fEqSetPotatoDefaultParameters $fShowSetPotatoDefaultParameters$fEqPotatoDefaultParameters$fShowPotatoDefaultParameters$fEqTool $fShowTool $fEnumTool SnakeFormatSF_Json SF_BinarySnake_snake_version _snake_format _snake_dataversionscurrentVersion serialize deserializedeserialize_internal decodeFiledecodeFileMaybe $fNFDataSnake $fBinarySnake $fToJSONSnake$fFromJSONSnake $fEqSnake$fGenericSnake $fShowSnake RenderCache unRenderCache OwlItemCacheOwlItemCache_LineOwlItemCache_Generic PreRender MWidePChartoPointtoIndex toIndexSafeemptyMWidePCharemptyPreRenderpreRender_lookupowlItemCache_preRenderemptyRenderCacherenderCache_clearAtKeysrenderCache_lookup makePreRender$fShowRenderCache$fShowOwlItemCache$fShowPreRendernoTrailngCursorDisplayLinesmakeDisplayLinesFromSBoxdoesSEltIntersectBox_DEPRECATEDdoesSEltIntersectPointgetSEltSuperStylegetSEltLabelSuperStylegetSEltLineStylegetSEltLineStyleEndgetSEltLabelLineStylegetSEltLabelLineStyleEndgetSEltBoxTextStylegetSEltLabelBoxTextStylegetSEltBoxTypegetSEltLabelBoxType sBox_drawersTextArea_drawergetDrawerWithCache getDrawergetDrawerFromSEltForTestupdateOwlSubItemCache,modify_sAutoLineConstraint_with_cBoundingBoxmodify_sElt_with_cBoundingBoxmodify_sElt_with_cSuperStylemodify_sElt_with_cLineStylemodify_sElt_with_cTextStyle$modify_sEltBox_label_with_cTextAlign$modify_sEltBox_label_with_cMaybeText"modify_sEltTextArea_with_cTextArea(modify_sEltTextArea_with_cTextAreaToggle modifyDeltaupdateFnFromControlleroffsetSEltTree OwlPFState_owlPFState_owlTree_owlPFState_canvasmaybeGetAttachmentPositionmaybeGetAttachmentBoxmaybeLookupAttachment"owlPFState_prettyPrintForDebuggingowlPFState_nextIdowlPFState_lastIdowlPFState_numEltsdebugPrintOwlPFStateowlPFState_isValidowlPFState_selectionIsValidowlPFState_copyEltsowlPFState_getSuperOwlsemptyOwlPFStatesPotatoFlow_to_owlPFStateowlPFState_to_sPotatoFlowowlPFState_toCanvasCoordinates owlPFState_fromCanvasCoordinates owlPFState_to_SuperOwlParliament do_newElts undo_newElts do_deleteEltsundo_deleteEltsdo_newMiniOwlTreeundo_newMiniOwlTreedo_deleteMiniOwlTreeundo_deleteMiniOwlTree isSuperOwlParliamentUndoFriendlydo_move undo_moveupdateFnFromControllerOwl manipulate do_manipulateundo_manipulate isValidCanvasdo_resizeCanvasundo_resizeCanvas$fNFDataOwlPFState$fPotatoShowOwlPFState$fHasOwlTreeOwlPFState$fShowOwlPFState$fEqOwlPFState$fGenericOwlPFState LlamaStack_llamaStack_done_llamaStack_undone_llamaStack_lastSavedLlama _llama_apply_llama_serialize_llama_describeApplyLlamaErrorApplyLlamaError_GenericSLlama SLlama_Set SLlama_RenameSLlama_ComposeSLlama_OwlPFCmdOwlPFCmd OwlPFCNewEltsOwlPFCDeleteElts OwlPFCNewTreeOwlPFCDeleteTreeOwlPFCManipulate OwlPFCMoveOwlPFCResizeCanvas doCmdState undoCmdStateemptyLlamaStackllamaStack_hasUnsavedChangesmakeRenameLlama makeSetLlama makePFCLlama' makePFCLlamamakeCompositionLlamasLlama_deserialize$fNFDataOwlPFCmd$fNFDataSLlama $fShowLlama $fNFDataLlama$fNFDataLlamaStack$fShowLlamaStack$fGenericLlamaStack$fGenericLlama$fShowApplyLlamaError $fShowSLlama$fGenericSLlama$fShowOwlPFCmd$fGenericOwlPFCmdWSEvent WSEAddElt WSEAddTree WSEAddFolder WSERemoveElt WSERemoveEltAndUpdateAttachments WSEMoveElt WSEApplyLlamaWSEResizeCanvasWSEUndoWSERedoWSELoadOwlPFWorkspace_owlPFWorkspace_owlPFState_owlPFWorkspace_lastChanges_owlPFWorkspace_llamaStackloadOwlPFStateIntoWorkspaceemptyWorkspacemarkWorkspaceSaved undoWorkspace redoWorkspaceundoPermanentWorkspacedoCmdWorkspaceupdateOwlPFWorkspace$fNFDataOwlPFWorkspace $fShowWSEvent$fShowOwlPFWorkspace$fGenericOwlPFWorkspace RelMouseDrag MouseDrag_mouseDrag_from_mouseDrag_button_mouseDrag_modifiers _mouseDrag_to_mouseDrag_state_mouseDrag_isLayerMouse LMouseData_lMouseData_position_lMouseData_isRelease_lMouseData_button_lMouseData_modifiers_lMouseData_isLayerMouseMouseDragStateMouseDragState_DownMouseDragState_DraggingMouseDragState_UpMouseDragState_Cancelled MouseButtonMouseButton_LeftMouseButton_MiddleMouseButton_Right KeyboardKeyKeyboardKey_EscKeyboardKey_ReturnKeyboardKey_SpaceKeyboardKey_DeleteKeyboardKey_BackspaceKeyboardKey_LeftKeyboardKey_RightKeyboardKey_UpKeyboardKey_DownKeyboardKey_HomeKeyboardKey_EndKeyboardKey_PageUpKeyboardKey_PageDownKeyboardKey_CharKeyboardKey_PasteKeyboardKey_Scroll KeyboardData KeyModifierKeyModifier_ShiftKeyModifier_AltKeyModifier_CtrlmouseDrag_isActivenewDrag continueDrag cancelDragmouseDragDeltatoRelMouseDrag$fDefaultMouseDrag$fShowRelMouseDrag$fShowMouseDrag $fEqMouseDrag$fShowLMouseData$fEqLMouseData$fShowMouseDragState$fEqMouseDragState$fShowMouseButton$fEqMouseButton$fShowKeyboardData$fShowKeyboardKey$fEqKeyboardKey$fShowKeyModifier$fEqKeyModifierSetLineStyleEndSetLineStyleEnd_StartSetLineStyleEnd_EndSetLineStyleEnd_BothsuperOwl_mustGetSLinesetLineStyleEnd_setStartsetLineStyleEnd_setEndmakeLlamaForLineStylemakeLlamaForFlipLineStylePFState_pFState_layers_pFState_directory_pFState_canvasdebugPrintPFStatepFState_isValidpFState_selectionIsValidpFState_copyEltspFState_getSuperSEltByPospFState_getSEltLabels pFState_maxIDpFState_getLayerPosMap emptyPFStatesPotatoFlow_to_pFStatepFState_to_sPotatoFlowpFState_toCanvasCoordinates"pfState_layerPos_to_superSEltLabelpFState_to_superSEltLabelSeq$fNFDataPFState$fToJSONPFState$fFromJSONPFState $fEqPFState $fShowPFState$fGenericPFStateSelectionManipulatorTypeSMTNoneSMTBox SMTBoxTextSMTLine SMTTextAreaSMTBoundingBoxcomputeSelectionType restrict4 restrict8selectionToSuperOwlselectionToMaybeFirstSuperOwlselectionToMaybeSuperOwlselectionToFirstSuperOwllastPositionInSelection$fShowSelectionManipulatorType$fEqSelectionManipulatorTypeLockHideCollapseOpLHCO_ToggleLockLHCO_ToggleHideLHCO_ToggleCollapse LayersState_layersState_meta_layersState_entries_layersState_scrollPos LayerEntries LayerEntryPos LayerEntry_layerEntry_lockState_layerEntry_hideState_layerEntry_isCollapsed_layerEntry_superOwlLockHiddenStateLHS_True LHS_FalseLHS_True_InheritTrueLHS_False_InheritTruelockHiddenStateToBooltoggleLockHiddenStatesetLockHiddenStateInChildrenupdateLockHiddenStateInChildrenlayerEntry_depthlayerEntry_displaylayerEntry_isFolderlayerEntry_rEltIdlayerEntriesToPrettyTextalterWithDefaultlookupWithDefaultchangesFromToggleHidedoChildrenRecursivetoggleLayerEntryexpandAllCollapsedParentsmakeLayersStateFromOwlPFState updateLayersbuildLayerEntriesRecursivegenerateLayersNew$layerMetaMap_isInheritHiddenOrLockedlayerMetaMap_isInheritHidden$fShowLayerEntry$fPotatoShowLayersState$fShowLockHideCollapseOp$fShowLayersState$fEqLayersState$fEqLayerEntry$fEqLockHiddenState$fShowLockHiddenStatePFCmdPFCmdTag PFCNewElts PFCDeleteEltsPFCMove PFCManipulatePFCResizeCanvas$fShowPFCmdTag$fGEqTYPEPFCmdTag$fGCompareTYPEPFCmdTag$fGShowTYPEPFCmdTag$fHasTYPEcPFCmdTagWSEAddRelative WSEManipulate PFWorkspace_pFWorkspace_pFState_pFWorkspace_lastChanges_pFWorkspace_actionStackemptyActionStackloadPFStateIntoWorkspacepfc_addElt_to_newEltspfc_addFolder_to_newEltspfc_removeElt_to_deleteEltspfc_paste_to_newEltsupdatePFWorkspace$fNFDataActionStack$fNFDataPFWorkspace $fEqWSEvent$fShowPFWorkspace$fEqPFWorkspace$fGenericPFWorkspace$fShowActionStack$fEqActionStack$fGenericActionStackBroadPhaseState_broadPhaseState_bPTreeBPTree_bPTree_potato_treeNeedsUpdateSetAABB emptyBPTreebPTreeFromOwlPFStateemptyBroadPhaseState update_bPTreebroadPhase_cullbroadPhase_cull_includeZero$fShowBroadPhaseState$fEqBroadPhaseState $fShowBPTree $fEqBPTreeRenderedCanvasRegion_renderedCanvasRegion_box_renderedCanvasRegion_contents RenderContext_renderContext_cache_renderContext_owlTree_renderContext_layerMetaMap_renderContext_broadPhase#_renderContext_renderedCanvasRegionemptyRenderContextrenderedCanvas_boxemptyRenderedCanvasRegion"renderedCanvasRegion_nonEmptyCountpotatoRenderWithOwlTreepotatoRenderPFStaterender render_newrenderedCanvasToTextrenderedCanvasRegionToTextprintRenderedCanvasRegionrenderWithBroadPhase"moveRenderedCanvasRegionNoReRendermoveRenderedCanvasRegion updateCanvas$fOwlRenderSet(,)$fOwlRenderSetOwlTree$fOwlRenderSetRenderContext$fHasOwlTreeRenderContext$fEqRenderedCanvasRegion$fShowRenderedCanvasRegion EmptyHandlerSomePotatoHandler PotatoHandler pHandlerNamepHandlerDebugShow pHandleMousepHandleKeyboardpRefreshHandlerpIsHandlerActivepRenderHandlerpRenderLayersHandlerpValidateMouse pHandlerToolHandlerRenderOutput_handlerRenderOutput_temp RenderHandle_renderHandle_box_renderHandle_char_renderHandle_colorRenderHandleColor RHC_DefaultRHC_AttachmentRHC_AttachmentHighlightLayersViewHandlerRenderOutput&_layersViewHandlerRenderOutput_entriesLayersHandlerRenderEntryLayersHandlerRenderEntryNormalLayersHandlerRenderEntryDummy LayersHandlerRenderEntryRenamingLayersHandlerRenderEntryDots%LayersHandlerRenderEntrySelectedStateLHRESS_ChildSelectedLHRESS_SelectedLHRESS_InheritSelected LHRESS_NoneSimpleBoxHandlerRenderOutput!_simpleBoxHandlerRenderOutput_box&_simpleBoxHandlerRenderOutput_fillText+_simpleBoxHandlerRenderOutput_fillTextColor%_simpleBoxHandlerRenderOutput_bgColor ColorTypePotatoHandlerInput_potatoHandlerInput_pFState+_potatoHandlerInput_potatoDefaultParameters_potatoHandlerInput_broadPhase_potatoHandlerInput_renderCache_potatoHandlerInput_layersState _potatoHandlerInput_screenRegion_potatoHandlerInput_selection#_potatoHandlerInput_canvasSelectionPotatoHandlerOutput _potatoHandlerOutput_nextHandler_potatoHandlerOutput_select_potatoHandlerOutput_pFEvent_potatoHandlerOutput_pan _potatoHandlerOutput_layersState*_potatoHandlerOutput_changesFromToggleHidelayersHandlerRenderEntry_depthdefaultRenderHandleemptyHandlerRenderOutputhandlerName_boxhandlerName_simpleLinehandlerName_simpleLine_endPointhandlerName_simpleLine_midPoint handlerName_simpleLine_textLabel%handlerName_simpleLine_textLabelMoverhandlerName_layershandlerName_layersRenamehandlerName_cartesianLinehandlerName_boxTexthandlerName_boxLabelhandlerName_textAreahandlerName_panhandlerName_selecthandlerName_emptycaptureWithNoChangesetHandlerOnlytestHandleMouse&$fDefaultLayersViewHandlerRenderOutput$fDefaultHandlerRenderOutput$fSemigroupHandlerRenderOutput$fShowSomePotatoHandler $fPotatoHandlerSomePotatoHandler$fDefaultPotatoHandlerOutput$fPotatoHandlerEmptyHandler$fShowPotatoHandlerOutput$fEqHandlerRenderOutput$fShowRenderHandle$fEqRenderHandle$fShowRenderHandleColor$fEqRenderHandleColor!$fEqLayersViewHandlerRenderOutput#$fShowLayersViewHandlerRenderOutput$fEqLayersHandlerRenderEntry$fShowLayersHandlerRenderEntry+$fShowLayersHandlerRenderEntrySelectedState)$fEqLayersHandlerRenderEntrySelectedStateTextInputState_textInputState_rid_textInputState_original_textInputState_box_textInputState_zipper_textInputState_displayLines moveToEol mouseTextinputSingleLineZippermakeTextHandlerRenderOutput$fShowTextInputStateTextAreaHandler_textAreaHandler_prevHandler_textAreaHandler_relCursormakeTextAreaHandler$fPotatoHandlerTextAreaHandler PanHandler_panHandler_panDelta_panHandler_maybePrevHandler$fPotatoHandlerPanHandler$fDefaultPanHandlerAutoLineHandler_autoLineHandler_isCreation!_autoLineHandler_mDownManipulator_autoLineHandler_offsetAttach$fDefaultAutoLineHandler&$fPotatoHandlerAutoLineEndPointHandler&$fPotatoHandlerAutoLineMidPointHandler($fPotatoHandlerAutoLineLabelMoverHandler$fPotatoHandlerAutoLineHandler#$fPotatoHandlerAutoLineLabelHandler$fShowAutoLineHandler LayersHandler_layersHandler_dragState_layersHandler_cursorPos_layersHandler_dropSpot$fDefaultLayersHandler"$fPotatoHandlerLayersRenameHandler$fPotatoHandlerLayersHandler$fShowLayerDownType$fEqLayerDownType$fShowLayerDragState$fEqLayerDragStateCartLineHandler_cartLineHandler_anchors_cartLineHandler_undoFirst_cartLineHandler_isCreation_cartLineHandler_active$fPotatoHandlerCartLineHandler$fDefaultCartLineHandler$fShowCartLineHandler$fShowAnchorZipperBoxLabelHandler_boxLabelHandler_active_boxLabelHandler_state_boxLabelHandler_prevHandler_boxLabelHandler_undoFirstBoxTextHandler_boxTextHandler_isActive_boxTextHandler_state_boxTextHandler_prevHandler_boxTextHandler_undoFirstmakeTextInputStatemakeBoxTextHandlerlBox_to_boxLabelBoxmakeBoxLabelHandler$fPotatoHandlerBoxTextHandler$fPotatoHandlerBoxLabelHandler BoxHandler_boxHandler_handle_boxHandler_undoFirst_boxHandler_creation_boxHandler_active_boxHandler_downOnLabelBoxCreationTypeBoxCreationType_NoneBoxCreationType_BoxBoxCreationType_TextBoxCreationType_TextAreaBoxCreationType_DragSelect BoxHandleTypeBH_TLBH_TRBH_BLBH_BRBH_ABH_TBH_BBH_LBH_R makeHandleBox makeDeltaBox$fPotatoHandlerBoxHandler$fDefaultBoxHandler$fShowBoxHandler$fShowBoxCreationType$fEqBoxCreationType$fShowBoxHandleType$fEqBoxHandleType$fEnumBoxHandleType$fShowMouseManipulatorType$fEqMouseManipulatorType SelectHandler_selectHandler_selectArea$fPotatoHandlerSelectHandler$fDefaultSelectHandlerGoatCmd GoatCmdToolGoatCmdSetFocusedArea GoatCmdLoadGoatCmdWSEventGoatCmdSetCanvasRegionDimGoatCmdNewFolder GoatCmdMouseGoatCmdKeyboardGoatCmdSetDebugLabel GoatState_goatState_workspace_goatState_pan_goatState_selection_goatState_canvasSelection_goatState_broadPhaseState_goatState_layersState_goatState_renderedCanvas_goatState_renderedSelection_goatState_handler_goatState_layersHandler_goatState_attachmentMap_goatState_renderCache_goatState_configuration"_goatState_potatoDefaultParameters_goatState_mouseDrag_goatState_screenRegion_goatState_clipboard_goatState_focusedArea_goatState_unbrokenInput_goatState_debugLabel_goatState_debugCommandsGoatFocusedAreaGoatFocusedArea_LayersGoatFocusedArea_CanvasGoatFocusedArea_OtherGoatFocusedArea_None makeGoatStategoatState_pFStategoatState_hasUnsavedChangesgoatState_selectedToolpotatoHandlerInputFromGoatState foldGoatFn$fDefaultGoatCmdTempOutput$fShowGoatCmdTempOutput$fShowGoatState $fShowGoatCmd$fEqGoatFocusedArea$fShowGoatFocusedArea GoatWidget_goatWidget_tool_goatWidget_selection#_goatWidget_potatoDefaultParameters_goatWidget_layers_goatWidget_pan_goatWidget_broadPhase_goatWidget_handlerRenderOutput%_goatWidget_layersHandlerRenderOutput_goatWidget_canvas_goatWidget_renderedCanvas_goatWidget_renderedSelection_goatWidget_unsavedChanges_goatWidget_DEBUG_goatStateGoatWidgetConfig_goatWidgetConfig_initialState _goatWidgetConfig_unicodeWidthFn_goatWidgetConfig_mouse_goatWidgetConfig_keyboard!_goatWidgetConfig_canvasRegionDim_goatWidgetConfig_selectTool_goatWidgetConfig_load_goatWidgetConfig_paramsEvent_goatWidgetConfig_canvasSize_goatWidgetConfig_newFolder,_goatWidgetConfig_setPotatoDefaultParameters_goatWidgetConfig_markSaved _goatWidgetConfig_setFocusedArea_goatWidgetConfig_setDebugLabel_goatWidgetConfig_bypassEventemptyGoatWidgetConfigholdGoatWidget folderStart folderEnd someSEltLabeldefaultCanvasLBox someSCanvaspFState_fromSEltspfstate_someValidState1pfstate_someInvalidState1pfstate_someInvalidState2pfstate_basic0pfstate_basic1pfstate_basic2pfstate_attachments1pfstate_attachments2 pfstate_zero someOwlItempFState_to_owlPFStateowlPFState_fromSEltsowlpfstate_someValidState1owlpfstate_someInvalidState1owlpfstate_someInvalidState2owlpfstate_basic0owlpfstate_basic1'controllermeta_basic1_lockandhidestuff1owlpfstate_basic2&controllermeta_basic2_expandEverythingowlpfstate_attachments1owlpfstate_attachments2owlpfstate_zeroowlpfstate_newProjectghc-prim GHC.TypesTrue text-1.2.5.0Data.Text.InternalTextChar"linear-1.22-3Qo0xugbNZM812iVlniGdT Linear.V2crossZunangleangleperpey_yxV2R2_y_xy Linear.V1exR1_x OffsetBorder removeEltvalidateCanvasSizeOperationwhichSubSegmentDidClickgetAnchorPosition*makeAutoLineLabelInputState_from_lineLabel/handleMouseDownOrFirstUpForAutoLineLabelHandler6adjustLineLabelPositionsAfterModifyingOrAddingMidpoint isBetweenflattenAnchorsInCreation adjacentPairsvalidateAnchorZipperlast2shrink_lBox_no_negativeinputBoxTextZipper*handleMouseDownOrFirstUpForBoxLabelHandler.forceResetBothHandlersAndMakeGoatCmdTempOutputpotatoModifyKeyboardKey