packages feed

wyvern-diagrams 0.3.1.3 → 0.3.2.0

raw patch · 11 files changed

+2093/−48 lines, 11 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ LexerV2: AlexPn :: !Int -> !Int -> !Int -> AlexPosn
+ LexerV2: TokenAction :: AlexPosn -> String -> Token
+ LexerV2: TokenCCB :: AlexPosn -> Token
+ LexerV2: TokenOCB :: AlexPosn -> Token
+ LexerV2: TokenSoloIdentifier :: AlexPosn -> String -> Token
+ LexerV2: alexScanTokens :: String -> [Token]
+ LexerV2: data AlexPosn
+ LexerV2: data Token
+ LexerV2: instance GHC.Classes.Eq LexerV2.AlexPosn
+ LexerV2: instance GHC.Classes.Eq LexerV2.Token
+ LexerV2: instance GHC.Classes.Ord LexerV2.AlexPosn
+ LexerV2: instance GHC.Show.Show LexerV2.AlexPosn
+ LexerV2: instance GHC.Show.Show LexerV2.Token
+ LexerV3: AlexPn :: !Int -> !Int -> !Int -> AlexPosn
+ LexerV3: TokenAction :: AlexPosn -> String -> Token
+ LexerV3: TokenCCB :: AlexPosn -> Token
+ LexerV3: TokenOCB :: AlexPosn -> Token
+ LexerV3: TokenSoloIdentifier :: AlexPosn -> String -> Token
+ LexerV3: data AlexPosn
+ LexerV3: data Token
+ LexerV3: instance GHC.Base.Applicative LexerV3.Alex
+ LexerV3: instance GHC.Base.Functor LexerV3.Alex
+ LexerV3: instance GHC.Base.Monad LexerV3.Alex
+ LexerV3: instance GHC.Classes.Eq LexerV3.AlexPosn
+ LexerV3: instance GHC.Classes.Eq LexerV3.Token
+ LexerV3: instance GHC.Classes.Ord LexerV3.AlexPosn
+ LexerV3: instance GHC.Show.Show LexerV3.AlexPosn
+ LexerV3: instance GHC.Show.Show LexerV3.Token
+ LexerV3: lexAll :: Alex [Token]
+ LexerV3: runAlex :: String -> Alex a -> Either String a

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+## [0.3.2.0](https://github.com/PiotrJustyna/wyvern/tree/0.3.2.0) (2026-01-28)++It is imperative to the end user to see where in the input files they are making mistakes. Previous versions just informed the user that there is a lexing error in their input while the new version points out exactly where it was found. The change makes learning wyvern and working with it that much easier. I hope!++- resolved issue 55 - more details extracted from the lexer: https://github.com/PiotrJustyna/wyvern/issues/55+ ## [0.3.1.3](https://github.com/PiotrJustyna/wyvern/tree/0.3.1.2) (2026-01-22)  - resolved issue 52 - support for text 2.1.3: https://github.com/PiotrJustyna/wyvern/issues/52
diagrams/temp.svg view
@@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"-    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg font-size="1" viewBox="0.0 0.0 1000.0 1000.0" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="1000.0000" stroke-opacity="1" height="1000.0000" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 166.6667,847.2222 h 0.0000 c 0.0000,-9.5883 -7.7728,-17.3611 -17.3611 -17.3611h -131.9444 c -9.5883,-0.0000 -17.3611,7.7728 -17.3611 17.3611h 0.0000 c -0.0000,9.5883 7.7728,17.3611 17.3611 17.3611h 131.9444 c 9.5883,0.0000 17.3611,-7.7728 17.3611 -17.3611Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,83.3333,847.2222)" stroke="none" dominant-baseline="middle" text-anchor="middle">end</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,812.5000 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,395.8333 v 416.6667 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,378.4722 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,395.8333 v 416.6667 h -208.3333 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 708.3333,534.7222 v 277.7778 h -416.6667 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 916.6667,604.1667 v 69.4444 h -208.3333 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 833.3333,621.5278 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,916.6667,638.8889)" stroke="none" dominant-baseline="middle" text-anchor="middle">2</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 916.6667,656.2500 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 916.6667,604.1667 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 791.6667,569.4444 h 125.0000 v 34.7222 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 708.3333,673.6111 h 0.0000 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,691.6667,597.2222)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,806.2500,559.0278)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 625.0000,621.5278 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,708.3333,638.8889)" stroke="none" dominant-baseline="middle" text-anchor="middle">1</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 708.3333,656.2500 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 708.3333,604.1667 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 631.9444,552.0833 h 152.7778 l 6.9444,17.3611 l -6.9444,17.3611 h -152.7778 l -6.9444,-17.3611 l 6.9444,-17.3611 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,708.3333,569.4444)" stroke="none" dominant-baseline="middle" text-anchor="middle">a</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 708.3333,586.8056 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 708.3333,534.7222 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 375.0000,500.0000 h 333.3333 v 34.7222 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,275.0000,527.7778)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,389.5833,489.5833)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 298.0811,468.7500 l -6.0141,3.4722 l 6.0141,3.4722 Z"/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,812.5000 h 416.6667 v -340.2778 h -410.6250 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 208.3333,760.4167 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,291.6667,777.7778)" stroke="none" dominant-baseline="middle" text-anchor="middle">i++</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,795.1389 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 500.0000,604.1667 v 138.8889 h -208.3333 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 416.6667,690.9722 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,500.0000,708.3333)" stroke="none" dominant-baseline="middle" text-anchor="middle">swapped = true</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 500.0000,725.6944 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 416.6667,621.5278 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,500.0000,638.8889)" stroke="none" dominant-baseline="middle" text-anchor="middle">swap(input[i - 1], input[i])</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 500.0000,656.2500 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 500.0000,604.1667 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 500.0000,673.6111 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 375.0000,569.4444 h 125.0000 v 34.7222 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,604.1667 v 138.8889 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,275.0000,597.2222)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,389.5833,559.0278)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 215.2778,552.0833 h 152.7778 l 6.9444,17.3611 l -6.9444,17.3611 h -152.7778 l -6.9444,-17.3611 l 6.9444,-17.3611 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,291.6667,569.4444)" stroke="none" dominant-baseline="middle" text-anchor="middle">input[i - 1] &lt; input[i]</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,586.8056 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,534.7222 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,743.0556 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 215.2778,482.6389 h 152.7778 l 6.9444,17.3611 l -6.9444,17.3611 h -152.7778 l -6.9444,-17.3611 l 6.9444,-17.3611 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,291.6667,500.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">i &lt; n</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,517.3611 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 208.3333,413.1944 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,291.6667,430.5556)" stroke="none" dominant-baseline="middle" text-anchor="middle">i = 1</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,447.9167 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,395.8333 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 291.6667,465.2778 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 166.6667,361.1111 h 125.0000 v 34.7222 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,395.8333 v 416.6667 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,66.6667,388.8889)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,181.2500,350.6944)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 6.9444,343.7500 h 152.7778 l 6.9444,17.3611 l -6.9444,17.3611 h -152.7778 l -6.9444,-17.3611 l 6.9444,-17.3611 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,83.3333,361.1111)" stroke="none" dominant-baseline="middle" text-anchor="middle">swapped</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,326.3889 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,309.0278 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M -0.0000,274.3056 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,83.3333,291.6667)" stroke="none" dominant-baseline="middle" text-anchor="middle">swapped = false</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,256.9444 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,239.5833 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M -0.0000,204.8611 h 166.6667 v 34.7222 h -166.6667 v -34.7222 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,83.3333,222.2222)" stroke="none" dominant-baseline="middle" text-anchor="middle">n = length of input</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,187.5000 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,187.5000 h 0.0000 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 83.3333,170.1389 v 17.3611 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="0.8539125638299667"><path d="M 166.6667,152.7778 h 0.0000 c 0.0000,-9.5883 -7.7728,-17.3611 -17.3611 -17.3611h -131.9444 c -9.5883,-0.0000 -17.3611,7.7728 -17.3611 17.3611h 0.0000 c -0.0000,9.5883 7.7728,17.3611 17.3611 17.3611h 131.9444 c 9.5883,0.0000 17.3611,-7.7728 17.3611 -17.3611Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="8.680555555555557px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="3.415650255319867"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,83.3333,152.7778)" stroke="none" dominant-baseline="middle" text-anchor="middle">start</text></g></svg>+    "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg font-size="1" viewBox="0.0 0.0 1920.0 1080.0" stroke="rgb(0,0,0)" xmlns="http://www.w3.org/2000/svg" width="1920.0000" stroke-opacity="1" height="1080.0000" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"><defs></defs><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,42.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,77.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,111.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,145.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,968.5714 v -822.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,1002.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,1037.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,1071.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,1071.4286 h 0.0000 c 0.0000,-4.7339 -3.8376,-8.5714 -8.5714 -8.5714h -65.1429 c -4.7339,-0.0000 -8.5714,3.8376 -8.5714 8.5714h 0.0000 c -0.0000,4.7339 3.8376,8.5714 8.5714 8.5714h 65.1429 c 4.7339,0.0000 8.5714,-3.8376 8.5714 -8.5714Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,1071.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">end</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,1045.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,1037.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,1011.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,1002.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,977.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,968.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,951.4286 h 925.7143 v -428.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,180.0000 v -34.2857 h -925.7143 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,934.2857 v -754.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,180.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,214.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,248.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,282.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,540.0000 h 205.7143 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,317.1429 v -34.2857 h -205.7143 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,522.8571 v -205.7143 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,317.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,351.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,385.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,420.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,540.0000 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1577.1429,454.2857 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,522.8571 v -68.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,454.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1577.1429,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1577.1429,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1618.2857,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1577.1429,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1618.2857,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1577.1429,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1618.2857,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1577.1429,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1474.2857,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1515.4286,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1515.4286,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1515.4286,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1520.5714,416.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1467.4286,433.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1436.5714,428.5714 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,420.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1515.4286,394.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,385.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1515.4286,360.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,351.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1515.4286,325.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1474.2857,317.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,351.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,385.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,420.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,540.0000 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1371.4286,454.2857 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,522.8571 v -68.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,454.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1371.4286,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1371.4286,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1412.5714,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1371.4286,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1412.5714,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1371.4286,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1412.5714,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1371.4286,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1268.5714,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1314.8571,416.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1261.7143,433.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1230.8571,428.5714 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,420.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,394.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,385.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,360.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,351.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,325.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,317.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1314.8571,279.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1261.7143,296.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1230.8571,291.4286 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,282.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,257.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,248.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,222.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,214.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1309.7143,188.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1268.5714,180.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,214.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,248.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,282.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,951.4286 h 720.0000 v -428.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,317.1429 v -34.2857 h -720.0000 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,934.2857 v -617.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,317.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,351.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,385.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,420.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,540.0000 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1165.7143,454.2857 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,522.8571 v -68.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,454.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1165.7143,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1165.7143,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1206.8571,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1165.7143,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1206.8571,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1165.7143,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1206.8571,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1165.7143,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1062.8571,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1104.0000,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1104.0000,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1104.0000,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1109.1429,416.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1056.0000,433.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1025.1429,428.5714 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,420.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1104.0000,394.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,385.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1104.0000,360.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,351.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1104.0000,325.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,1062.8571,317.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,351.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,385.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,420.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,951.4286 h 205.7143 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,454.2857 v -34.2857 h -205.7143 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,934.2857 v -480.0000 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,454.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,557.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,951.4286 h 205.7143 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,591.4286 v -34.2857 h -205.7143 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,934.2857 v -342.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,591.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,625.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,660.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,694.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,951.4286 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,728.5714 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,934.2857 v -205.7143 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,728.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,762.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,797.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,831.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,951.4286 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 960.0000,865.7143 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,934.2857 v -68.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,865.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 960.0000,900.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 960.0000,934.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1001.1429,942.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,960.0000,934.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1001.1429,908.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,960.0000,900.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 1001.1429,874.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,960.0000,865.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,900.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 857.1429,934.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 898.2857,942.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,934.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 898.2857,908.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,900.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 898.2857,874.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,865.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,903.4286,828.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,850.2857,845.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 819.4286,840.0000 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,831.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 898.2857,805.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,797.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 898.2857,771.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,762.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 898.2857,737.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,857.1429,728.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,762.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 754.2857,797.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 795.4286,805.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,797.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 795.4286,771.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,762.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 795.4286,737.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,728.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,800.5714,690.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,747.4286,708.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 716.5714,702.8571 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,694.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 795.4286,668.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,660.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 795.4286,634.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,625.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 795.4286,600.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,754.2857,591.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,625.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,660.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,694.2857 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,814.2857 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 651.4286,728.5714 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,797.1429 v -68.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,728.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 651.4286,762.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 651.4286,797.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 692.5714,805.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,651.4286,797.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 692.5714,771.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,651.4286,762.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 692.5714,737.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,651.4286,728.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,762.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 548.5714,797.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,805.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,797.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,771.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,762.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,737.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,728.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,594.8571,690.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,541.7143,708.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 510.8571,702.8571 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,694.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,668.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,660.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,634.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,625.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,600.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,591.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,594.8571,553.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,541.7143,570.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 510.8571,565.7143 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,557.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 589.7143,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,548.5714,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,488.5714 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,522.8571 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,557.1429 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,677.1429 h 102.8571 v -17.1429 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 445.7143,591.4286 v -34.2857 h -102.8571 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,660.0000 v -68.5714 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,591.4286 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 445.7143,625.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 445.7143,660.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 486.8571,668.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,445.7143,660.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 486.8571,634.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,445.7143,625.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 486.8571,600.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,445.7143,591.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,625.7143 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="0.0" fill="rgb(0,0,0)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 342.8571,660.0000 v -34.2857 "/></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,668.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,660.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,634.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,625.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,600.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,591.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,389.1429,553.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,336.0000,570.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 305.1429,565.7143 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,557.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,531.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,522.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,497.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,488.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,462.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,454.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,389.1429,416.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,336.0000,433.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 305.1429,428.5714 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,420.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,394.2857 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,385.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,360.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,351.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,325.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,317.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,389.1429,279.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,336.0000,296.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 305.1429,291.4286 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,282.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,257.1429 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,248.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,222.8571 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,214.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,188.5714 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,180.0000)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,389.1429,142.2857)" stroke="none" dominant-baseline="middle" text-anchor="middle">no</text></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,336.0000,159.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">yes</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 305.1429,154.2857 l -3.4286,-8.5714 l 3.4286,-8.5714 h 75.4286 l 3.4286,8.5714 l -3.4286,8.5714 h -75.4286 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,145.7143)" stroke="none" dominant-baseline="middle" text-anchor="middle">question</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,120.0000 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,111.4286)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,85.7143 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,77.1429)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,51.4286 l -0.0000,-17.1429 h -82.2857 l -0.0000,17.1429 Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,42.8571)" stroke="none" dominant-baseline="middle" text-anchor="middle">&quot;# \&quot;action\&quot;&quot;</text></g><g stroke-linejoin="miter" fill-opacity="1.0" fill="rgb(237,237,244)" stroke="rgb(160,194,222)" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="1.192433286543588"><path d="M 384.0000,8.5714 h 0.0000 c 0.0000,-4.7339 -3.8376,-8.5714 -8.5714 -8.5714h -65.1429 c -4.7339,-0.0000 -8.5714,3.8376 -8.5714 8.5714h 0.0000 c -0.0000,4.7339 3.8376,8.5714 8.5714 8.5714h 65.1429 c 4.7339,0.0000 8.5714,-3.8376 8.5714 -8.5714Z"/></g><g stroke-linejoin="miter" fill-opacity="1.0" font-size="4.285714285714286px" fill="rgb(6,71,128)" stroke="rgb(0,0,0)" font-weight="300" font-family="helvetica" stroke-linecap="butt" stroke-miterlimit="10.0" stroke-opacity="1.0" stroke-width="4.769733146174352"><text transform="matrix(1.0000,0.0000,0.0000,1.0000,342.8571,8.5714)" stroke="none" dominant-baseline="middle" text-anchor="middle">start</text></g></svg>
diagrams/temp.txt view
@@ -1,29 +1,138 @@-"n = length of input"-"swapped = false"-1 "swapped"-{-}+"action"+"action"+"action"+"question" {-  "i = 1"-  2 "i < n"-  {-    "input[i - 1] < input[i]"+    "action"+    "action"+    "action"+    "question"     {+        "action"+        "action"+        "action"+        "question"+        {+            "action"+            "action"+            "action"+            "question"+            {+                "action"+                "action"+                "action"+            }+            {+                "action"+                "action"+                "action"+            }+        }+        {+            "action"+            "action"+            "action"+            "question"+            {+                "action"+                "action"+                "action"+                "question"+                {+                    "action"+                    "action"+                    "action"+                }+                {+                    "action"+                    "action"+                    "action"+                }+            }+            {+                "action"+                "action"+                "action"+                "question"+                {+                    "action"+                    "action"+                    "action"+                }+                {+                    "action"+                    "action"+                    "action"+                    "question"+                    {+                        "action"+                        "action"+                        "action"+                    }+                    {+                        "action"+                        "action"+                        "action"+                    }+                }+            }+        }     }     {-      "swap(input[i - 1], input[i])"-      "swapped = true"+        "action"+        "action"+        "action"+        "question"+        {+            "action"+            "action"+            "action"+        }+        {+            "action"+            "action"+            "action"+        }     }-    "i++"-    2-  }-  {-    "a"+}+{+    "action"+    "action"+    "action"+    "question"     {-      "1"+        "action"+        "action"+        "action"+        "question"+        {+            "action"+            "action"+            "action"+        }+        {+            "action"+            "action"+            "action"+        }     }     {-      "2"+        "action"+        "action"+        "action"+        "question"+        {+            "action"+            "action"+            "action"+        }+        {+            "action"+            "action"+            "action"+        }     }-  } }+"action"+"action"+"action"
src/app/Main.hs view
@@ -4,7 +4,9 @@ import Constants (svgOptions) import Diagrams.Backend.SVG (renderSVG') import InputArguments (inputPath, outputPath, parseInput)-import Lexer (alexScanTokens)+-- import Lexer (alexScanTokens)+-- import LexerV2 (alexScanTokens)+import LexerV3 (lexAll, runAlex) import Options.Applicative (execParser, fullDesc, header, helper, info, (<**>)) import Parser (ParseResult (..), diagram) @@ -13,10 +15,24 @@   input <- execParser options   print input   fileContent <- readFile $ inputPath input-  let tokens = alexScanTokens fileContent-  case diagram tokens 1 of-    ParseOk d -> renderSVG' (outputPath input) svgOptions (Blocks.render d)-    ParseFail s -> error s++  -- lexer v1/v2+  -- let tokens = alexScanTokens fileContent++  -- putStrLn "tokens:"+  -- print tokens++  -- lexer v3+  let lexingResult = runAlex fileContent lexAll++  case lexingResult of+    Left lexingError -> do+      putStrLn $ "Wyvern failed with the following error: " <> lexingError+    Right tokens -> do+      -- print tokens+      case diagram tokens 1 of+        ParseOk d -> renderSVG' (outputPath input) svgOptions (Blocks.render d)+        ParseFail s -> error s   where     options =       info
+ src/lib/LexerV2.hs view
@@ -0,0 +1,900 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+{-# OPTIONS_GHC -fno-warn-tabs #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE MagicHash #-}+{-# LINE 1 "./src/lib/LexerV2.x" #-}+module LexerV2+  (alexScanTokens,+  Token(TokenAction,+  TokenSoloIdentifier,+  TokenOCB,+  TokenCCB),+  AlexPosn(..)) where+#include "ghcconfig.h"+import qualified Data.Array+import qualified Data.Char+import Data.Array.Base (unsafeAt)+import GHC.Exts (Addr#,Int#,Int(I#),(*#),(+#),(-#),(==#),(>=#),indexCharOffAddr#,indexInt16OffAddr#,indexInt32OffAddr#,int2Word#,narrow16Int#,narrow32Int#,negateInt#,or#,ord#,uncheckedShiftL#,word2Int#)+import qualified GHC.Exts+#define ALEX_POSN 1+-- -----------------------------------------------------------------------------+-- Alex wrapper code.+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++#if defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT)+import Control.Applicative as App (Applicative (..))+#endif++#if defined(ALEX_STRICT_TEXT) || defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)+import qualified Data.Text+#endif++import Data.Word (Word8)++#if defined(ALEX_BASIC_BYTESTRING) || defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)++import Data.Int (Int64)+import qualified Data.ByteString.Lazy     as ByteString+import qualified Data.ByteString.Internal as ByteString (w2c)++#elif defined(ALEX_STRICT_BYTESTRING)++import qualified Data.ByteString          as ByteString+import qualified Data.ByteString.Internal as ByteString hiding (ByteString)+import qualified Data.ByteString.Unsafe   as ByteString++#else++import qualified Data.Bits++-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.+utf8Encode :: Char -> [Word8]+utf8Encode = uncurry (:) . utf8Encode'++utf8Encode' :: Char -> (Word8, [Word8])+utf8Encode' c = case go (Data.Char.ord c) of+                  (x, xs) -> (fromIntegral x, map fromIntegral xs)+ where+  go oc+   | oc <= 0x7f       = ( oc+                        , [+                        ])++   | oc <= 0x7ff      = ( 0xc0 + (oc `Data.Bits.shiftR` 6)+                        , [0x80 + oc Data.Bits..&. 0x3f+                        ])++   | oc <= 0xffff     = ( 0xe0 + (oc `Data.Bits.shiftR` 12)+                        , [0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+                        , 0x80 + oc Data.Bits..&. 0x3f+                        ])+   | otherwise        = ( 0xf0 + (oc `Data.Bits.shiftR` 18)+                        , [0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)+                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+                        , 0x80 + oc Data.Bits..&. 0x3f+                        ])++#endif++type Byte = Word8++-- -----------------------------------------------------------------------------+-- The input type++#if defined(ALEX_POSN) || defined(ALEX_MONAD) || defined(ALEX_GSCAN)+type AlexInput = (AlexPosn,     -- current position,+                  Char,         -- previous char+                  [Byte],       -- pending bytes on current char+                  String)       -- current input string++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (_p,c,_bs,_s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (_,_,[],[]) = Nothing+alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c+                              in case utf8Encode' c of+                                   (b, bs) -> p' `seq`  Just (b, (p', c, bs, s))+#endif++#if defined (ALEX_STRICT_TEXT)+type AlexInput = (Char,           -- previous char+                  [Byte],         -- pending bytes on current char+                  Data.Text.Text) -- current input string++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes (c,_ps,s) = (c,[],s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (c,_bs,_s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))+alexGetByte (_,[],s) = case Data.Text.uncons s of+                            Just (c, cs) ->+                              case utf8Encode' c of+                                (b, bs) -> Just (b, (c, bs, cs))+                            Nothing ->+                              Nothing+#endif++#if defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)+type AlexInput = (AlexPosn,       -- current position,+                  Char,           -- previous char+                  [Byte],         -- pending bytes on current char+                  Data.Text.Text) -- current input string++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (_p,c,_bs,_s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (p,_,[],s) = case Data.Text.uncons s of+                            Just (c, cs) ->+                              let p' = alexMove p c+                              in case utf8Encode' c of+                                   (b, bs) -> p' `seq`  Just (b, (p', c, bs, cs))+                            Nothing ->+                              Nothing+#endif++#if defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)+type AlexInput = (AlexPosn,     -- current position,+                  Char,         -- previous char+                  ByteString.ByteString,        -- current input string+                  Int64)           -- bytes consumed so far++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes i = i   -- no pending bytes when lexing bytestrings++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (_,c,_,_) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,_,cs,n) =+    case ByteString.uncons cs of+        Nothing -> Nothing+        Just (b, cs') ->+            let c   = ByteString.w2c b+                p'  = alexMove p c+                n'  = n+1+            in p' `seq` cs' `seq` n' `seq` Just (b, (p', c, cs',n'))+#endif++#ifdef ALEX_BASIC_BYTESTRING+data AlexInput = AlexInput { alexChar :: {-# UNPACK #-} !Char,      -- previous char+                             alexStr ::  !ByteString.ByteString,    -- current input string+                             alexBytePos :: {-# UNPACK #-} !Int64}  -- bytes consumed so far++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar = alexChar++alexGetByte (AlexInput {alexStr=cs,alexBytePos=n}) =+    case ByteString.uncons cs of+        Nothing -> Nothing+        Just (c, rest) ->+            Just (c, AlexInput {+                alexChar = ByteString.w2c c,+                alexStr =  rest,+                alexBytePos = n+1})+#endif++#ifdef ALEX_STRICT_BYTESTRING+data AlexInput = AlexInput { alexChar :: {-# UNPACK #-} !Char,+                             alexStr :: {-# UNPACK #-} !ByteString.ByteString,+                             alexBytePos :: {-# UNPACK #-} !Int}++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar = alexChar++alexGetByte (AlexInput {alexStr=cs,alexBytePos=n}) =+    case ByteString.uncons cs of+        Nothing -> Nothing+        Just (c, rest) ->+            Just (c, AlexInput {+                alexChar = ByteString.w2c c,+                alexStr =  rest,+                alexBytePos = n+1})+#endif++-- -----------------------------------------------------------------------------+-- Token positions++-- `Posn' records the location of a token in the input text.  It has three+-- fields: the address (number of characters preceding the token), line number+-- and column of a token within the file. `start_pos' gives the position of the+-- start of the file and `eof_pos' a standard encoding for the end of file.+-- `move_pos' calculates the new position after traversing a given character,+-- assuming the usual eight character tab stops.++#if defined(ALEX_POSN) || defined(ALEX_MONAD) || defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_GSCAN) || defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)+data AlexPosn = AlexPn !Int !Int !Int+        deriving (Eq, Show, Ord)++alexStartPos :: AlexPosn+alexStartPos = AlexPn 0 1 1++alexMove :: AlexPosn -> Char -> AlexPosn+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (c+alex_tab_size-((c-1) `mod` alex_tab_size))+alexMove (AlexPn a l _) '\n' = AlexPn (a+1) (l+1)   1+alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)+#endif++-- -----------------------------------------------------------------------------+-- Monad (default and with ByteString input)++#if defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT)+data AlexState = AlexState {+        alex_pos :: !AlexPosn,  -- position at current input location+#ifdef ALEX_MONAD_STRICT_TEXT+        alex_inp :: Data.Text.Text,+        alex_chr :: !Char,+        alex_bytes :: [Byte],+#endif /* ALEX_MONAD_STRICT_TEXT */+#ifdef ALEX_MONAD+        alex_inp :: String,     -- the current input+        alex_chr :: !Char,      -- the character before the input+        alex_bytes :: [Byte],+#endif /* ALEX_MONAD */+#ifdef ALEX_MONAD_BYTESTRING+        alex_bpos:: !Int64,     -- bytes consumed so far+        alex_inp :: ByteString.ByteString,      -- the current input+        alex_chr :: !Char,      -- the character before the input+#endif /* ALEX_MONAD_BYTESTRING */+        alex_scd :: !Int        -- the current startcode+#ifdef ALEX_MONAD_USER_STATE+      , alex_ust :: AlexUserState -- AlexUserState will be defined in the user program+#endif+    }++-- Compile with -funbox-strict-fields for best results!++#ifdef ALEX_MONAD+runAlex :: String -> Alex a -> Either String a+runAlex input__ (Alex f)+   = case f (AlexState {alex_bytes = [],+                        alex_pos = alexStartPos,+                        alex_inp = input__,+                        alex_chr = '\n',+#ifdef ALEX_MONAD_USER_STATE+                        alex_ust = alexInitUserState,+#endif+                        alex_scd = 0}) of Left msg -> Left msg+                                          Right ( _, a ) -> Right a+#endif++#ifdef ALEX_MONAD_BYTESTRING+runAlex :: ByteString.ByteString -> Alex a -> Either String a+runAlex input__ (Alex f)+   = case f (AlexState {alex_bpos = 0,+                        alex_pos = alexStartPos,+                        alex_inp = input__,+                        alex_chr = '\n',+#ifdef ALEX_MONAD_USER_STATE+                        alex_ust = alexInitUserState,+#endif+                        alex_scd = 0}) of Left msg -> Left msg+                                          Right ( _, a ) -> Right a+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+runAlex :: Data.Text.Text -> Alex a -> Either String a+runAlex input__ (Alex f)+   = case f (AlexState {alex_bytes = [],+                        alex_pos = alexStartPos,+                        alex_inp = input__,+                        alex_chr = '\n',+#ifdef ALEX_MONAD_USER_STATE+                        alex_ust = alexInitUserState,+#endif+                        alex_scd = 0}) of Left msg -> Left msg+                                          Right ( _, a ) -> Right a+#endif++newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }++instance Functor Alex where+  fmap f a = Alex $ \s -> case unAlex a s of+                            Left msg -> Left msg+                            Right (s', a') -> Right (s', f a')++instance Applicative Alex where+  pure a   = Alex $ \s -> Right (s, a)+  fa <*> a = Alex $ \s -> case unAlex fa s of+                            Left msg -> Left msg+                            Right (s', f) -> case unAlex a s' of+                                               Left msg -> Left msg+                                               Right (s'', b) -> Right (s'', f b)++instance Monad Alex where+  m >>= k  = Alex $ \s -> case unAlex m s of+                                Left msg -> Left msg+                                Right (s',a) -> unAlex (k a) s'+  return = App.pure+++#ifdef ALEX_MONAD+alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} ->+        Right (s, (pos,c,bs,inp__))+#endif++#ifdef ALEX_MONAD_BYTESTRING+alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_bpos=bpos,alex_chr=c,alex_inp=inp__} ->+        Right (s, (pos,c,inp__,bpos))+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} ->+        Right (s, (pos,c,bs,inp__))+#endif++#ifdef ALEX_MONAD+alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,bs,inp__)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of+                    state__@(AlexState{}) -> Right (state__, ())+#endif++#ifdef ALEX_MONAD_BYTESTRING+alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,inp__,bpos)+ = Alex $ \s -> case s{alex_pos=pos,+                       alex_bpos=bpos,+                       alex_chr=c,+                       alex_inp=inp__} of+                    state__@(AlexState{}) -> Right (state__, ())+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,bs,inp__)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of+                    state__@(AlexState{}) -> Right (state__, ())+#endif++alexError :: String -> Alex a+alexError message = Alex $ const $ Left message++alexGetStartCode :: Alex Int+alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)++alexSetStartCode :: Int -> Alex ()+alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())++#if defined(ALEX_MONAD_USER_STATE)+alexGetUserState :: Alex AlexUserState+alexGetUserState = Alex $ \s@AlexState{alex_ust=ust} -> Right (s,ust)++alexSetUserState :: AlexUserState -> Alex ()+alexSetUserState ss = Alex $ \s -> Right (s{alex_ust=ss}, ())+#endif /* defined(ALEX_MONAD_USER_STATE) */++#ifdef ALEX_MONAD+alexMonadScan = do+  inp__ <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp__ sc of+    AlexEOF -> alexEOF+    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+    AlexSkip  inp__' _len -> do+        alexSetInput inp__'+        alexMonadScan+    AlexToken inp__' len action -> do+        alexSetInput inp__'+        action (ignorePendingBytes inp__) len+#endif++#ifdef ALEX_MONAD_BYTESTRING+alexMonadScan = do+  inp__@(_,_,_,n) <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp__ sc of+    AlexEOF -> alexEOF+    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+    AlexSkip  inp__' _len -> do+        alexSetInput inp__'+        alexMonadScan+    AlexToken inp__'@(_,_,_,n') _ action -> let len = n'-n in do+        alexSetInput inp__'+        action (ignorePendingBytes inp__) len+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+alexMonadScan = do+  inp__ <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp__ sc of+    AlexEOF -> alexEOF+    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+    AlexSkip  inp__' _len -> do+        alexSetInput inp__'+        alexMonadScan+    AlexToken inp__' len action -> do+        alexSetInput inp__'+        action (ignorePendingBytes inp__) len+#endif++-- -----------------------------------------------------------------------------+-- Useful token actions++#ifdef ALEX_MONAD+type AlexAction result = AlexInput -> Int -> Alex result+#endif++#ifdef ALEX_MONAD_BYTESTRING+type AlexAction result = AlexInput -> Int64 -> Alex result+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+type AlexAction result = AlexInput -> Int -> Alex result+#endif++-- just ignore this token and scan another one+-- skip :: AlexAction result+skip _input _len = alexMonadScan++-- ignore this token, but set the start code to a new value+-- begin :: Int -> AlexAction result+begin code _input _len = do alexSetStartCode code; alexMonadScan++-- perform an action for this token, and set the start code to a new value+andBegin :: AlexAction result -> Int -> AlexAction result+(action `andBegin` code) input__ len = do+  alexSetStartCode code+  action input__ len++#ifdef ALEX_MONAD+token :: (AlexInput -> Int -> token) -> AlexAction token+token t input__ len = return (t input__ len)+#endif++#ifdef ALEX_MONAD_BYTESTRING+token :: (AlexInput -> Int64 -> token) -> AlexAction token+token t input__ len = return (t input__ len)+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+token :: (AlexInput -> Int -> token) -> AlexAction token+token t input__ len = return (t input__ len)+#endif++#endif /* defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT) */++-- -----------------------------------------------------------------------------+-- Basic wrapper++#ifdef ALEX_BASIC+type AlexInput = (Char,[Byte],String)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (c,_,_) = c++-- alexScanTokens :: String -> [token]+alexScanTokens str = go ('\n',[],str)+  where go inp__@(_,_bs,s) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _ln     -> go inp__'+                AlexToken inp__' len act -> act (take len s) : go inp__'++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))+alexGetByte (_,[],[])    = Nothing+alexGetByte (_,[],(c:s)) = case utf8Encode' c of+                             (b, bs) -> Just (b, (c, bs, s))+#endif+++-- -----------------------------------------------------------------------------+-- Basic wrapper, ByteString version++#ifdef ALEX_BASIC_BYTESTRING++-- alexScanTokens :: ByteString.ByteString -> [token]+alexScanTokens str = go (AlexInput '\n' str 0)+  where go inp__ =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' _ act ->+                  let len = alexBytePos inp__' - alexBytePos inp__ in+                  act (ByteString.take len (alexStr inp__)) : go inp__'++#endif++#ifdef ALEX_STRICT_BYTESTRING++-- alexScanTokens :: ByteString.ByteString -> [token]+alexScanTokens str = go (AlexInput '\n' str 0)+  where go inp__ =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' _ act ->+                  let len = alexBytePos inp__' - alexBytePos inp__ in+                  act (ByteString.take len (alexStr inp__)) : go inp__'++#endif++#ifdef ALEX_STRICT_TEXT+-- alexScanTokens :: Data.Text.Text -> [token]+alexScanTokens str = go ('\n',[],str)+  where go inp__@(_,_bs,s) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' len act -> act (Data.Text.take len s) : go inp__'+#endif++#ifdef ALEX_POSN_STRICT_TEXT+-- alexScanTokens :: Data.Text.Text -> [token]+alexScanTokens str = go (alexStartPos,'\n',[],str)+  where go inp__@(pos,_,_bs,s) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' len act -> act pos (Data.Text.take len s) : go inp__'+#endif+++-- -----------------------------------------------------------------------------+-- Posn wrapper++-- Adds text positions to the basic model.++#ifdef ALEX_POSN+--alexScanTokens :: String -> [token]+alexScanTokens str0 = go (alexStartPos,'\n',[],str0)+  where go inp__@(pos,_,_,str) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+                AlexSkip  inp__' _ln     -> go inp__'+                AlexToken inp__' len act -> act pos (take len str) : go inp__'+#endif+++-- -----------------------------------------------------------------------------+-- Posn wrapper, ByteString version++#ifdef ALEX_POSN_BYTESTRING+--alexScanTokens :: ByteString.ByteString -> [token]+alexScanTokens str0 = go (alexStartPos,'\n',str0,0)+  where go inp__@(pos,_,str,n) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+                AlexSkip  inp__' _len       -> go inp__'+                AlexToken inp__'@(_,_,_,n') _ act ->+                  act pos (ByteString.take (n'-n) str) : go inp__'+#endif+++-- -----------------------------------------------------------------------------+-- GScan wrapper++-- For compatibility with previous versions of Alex, and because we can.++#ifdef ALEX_GSCAN+alexGScan stop__ state__ inp__ =+  alex_gscan stop__ alexStartPos '\n' [] inp__ (0,state__)++alex_gscan stop__ p c bs inp__ (sc,state__) =+  case alexScan (p,c,bs,inp__) sc of+        AlexEOF     -> stop__ p c inp__ (sc,state__)+        AlexError _ -> stop__ p c inp__ (sc,state__)+        AlexSkip (p',c',bs',inp__') _len ->+          alex_gscan stop__ p' c' bs' inp__' (sc,state__)+        AlexToken (p',c',bs',inp__') len k ->+           k p c inp__ len (\scs -> alex_gscan stop__ p' c' bs' inp__' scs)                  (sc,state__)+#endif+alex_tab_size :: Int+alex_tab_size = 8+alex_base :: AlexAddr+alex_base = AlexA#+  "\xf8\xff\xff\xff\x00\x00\x00\x00\x6d\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x51\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x35\x02\x00\x00"#++alex_table :: AlexAddr+alex_table = AlexA#+  "\x00\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x05\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x09\x00\x00\x00\x08\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++alex_check :: AlexAddr+alex_check = AlexA#+  "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\x20\x00\xff\xff\x27\x00\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\x7d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_deflt :: AlexAddr+alex_deflt = AlexA#+  "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_accept = Data.Array.listArray (0 :: Int, 11)+  [ AlexAccNone+  , AlexAcc 4+  , AlexAccNone+  , AlexAccNone+  , AlexAcc 3+  , AlexAccSkip+  , AlexAccNone+  , AlexAccNone+  , AlexAcc 2+  , AlexAcc 1+  , AlexAcc 0+  , AlexAccNone+  ]++alex_actions = Data.Array.array (0 :: Int, 5)+  [ (4,alex_action_2)+  , (3,alex_action_1)+  , (2,alex_action_5)+  , (1,alex_action_4)+  , (0,alex_action_3)+  ]++alex_action_1 = (\position input -> TokenAction position input)+alex_action_2 = (\position input -> TokenAction position ("# " <> input)) -- # is a placeholder id that will later be replaced by a unique identifier+alex_action_3 = (\position input -> TokenSoloIdentifier position input)+alex_action_4 = (\position _ -> TokenOCB position)+alex_action_5 = (\position _ -> TokenCCB position)++#define ALEX_GHC 1+#define ALEX_NOPRED 1+-- -----------------------------------------------------------------------------+-- ALEX TEMPLATE+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++-- -----------------------------------------------------------------------------+-- INTERNALS and main scanner engine++#ifdef ALEX_GHC+#  define ILIT(n) n#+#  define IBOX(n) (I# (n))+#  define FAST_INT Int#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#  if __GLASGOW_HASKELL__ > 706+#    define CMP_GEQ(n,m) (((n) >=# (m)) :: Int#)+#    define CMP_EQ(n,m) (((n) ==# (m)) :: Int#)+#    define CMP_MKBOOL(x) ((GHC.Exts.tagToEnum# (x)) :: Bool)+#  else+#    define CMP_GEQ(n,m) (((n) >= (m)) :: Bool)+#    define CMP_EQ(n,m) (((n) == (m)) :: Bool)+#    define CMP_MKBOOL(x) ((x) :: Bool)+#  endif+#  define GTE(n,m) CMP_MKBOOL(CMP_GEQ(n,m))+#  define EQ(n,m) CMP_MKBOOL(CMP_EQ(n,m))+#  define PLUS(n,m) (n +# m)+#  define MINUS(n,m) (n -# m)+#  define TIMES(n,m) (n *# m)+#  define NEGATE(n) (negateInt# (n))+#  define IF_GHC(x) (x)+#else+#  define ILIT(n) (n)+#  define IBOX(n) (n)+#  define FAST_INT Int+#  define GTE(n,m) (n >= m)+#  define EQ(n,m) (n == m)+#  define PLUS(n,m) (n + m)+#  define MINUS(n,m) (n - m)+#  define TIMES(n,m) (n * m)+#  define NEGATE(n) (negate (n))+#  define IF_GHC(x)+#endif++#ifdef ALEX_GHC+data AlexAddr = AlexA# Addr#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.++{-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#+alexIndexInt16OffAddr (AlexA# arr) off =+#if __GLASGOW_HASKELL__ >= 901+  GHC.Exts.int16ToInt# -- qualified import because it doesn't exist on older GHC's+#endif+#ifdef WORDS_BIGENDIAN+  (GHC.Exts.word16ToInt16# (GHC.Exts.wordToWord16# (GHC.Exts.byteSwap16# (GHC.Exts.word16ToWord# (GHC.Exts.int16ToWord16#+#endif+  (indexInt16OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+  )))))+#endif+#else+alexIndexInt16OffAddr = (Data.Array.!)+#endif++#ifdef ALEX_GHC+{-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#+alexIndexInt32OffAddr (AlexA# arr) off =+#if __GLASGOW_HASKELL__ >= 901+  GHC.Exts.int32ToInt# -- qualified import because it doesn't exist on older GHC's+#endif+#ifdef WORDS_BIGENDIAN+  (GHC.Exts.word32ToInt32# (GHC.Exts.wordToWord32# (GHC.Exts.byteSwap32# (GHC.Exts.word32ToWord# (GHC.Exts.int32ToWord32#+#endif+  (indexInt32OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+  )))))+#endif+#else+alexIndexInt32OffAddr = (Data.Array.!)+#endif++#ifdef ALEX_GHC+-- GHC >= 503, unsafeAt is available from Data.Array.Base.+quickIndex = unsafeAt+#else+quickIndex = (Data.Array.!)+#endif++-- -----------------------------------------------------------------------------+-- Main lexing routines++data AlexReturn a+  = AlexEOF+  | AlexError  !AlexInput+  | AlexSkip   !AlexInput !Int+  | AlexToken  !AlexInput !Int a++-- alexScan :: AlexInput -> StartCode -> AlexReturn a+alexScan input__ IBOX(sc)+  = alexScanUser (error "alex rule requiring context was invoked by alexScan; use alexScanUser instead?") input__ IBOX(sc)++-- If the generated alexScan/alexScanUser functions are called multiple times+-- in the same file, alexScanUser gets broken out into a separate function and+-- increases memory usage. Make sure GHC inlines this function and optimizes it.+{-# INLINE alexScanUser #-}++alexScanUser user__ input__ IBOX(sc)+  = case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of+  (AlexNone, input__') ->+    case alexGetByte input__ of+      Nothing ->+#ifdef ALEX_DEBUG+                                   Debug.Trace.trace ("End of input.") $+#endif+                                   AlexEOF+      Just _ ->+#ifdef ALEX_DEBUG+                                   Debug.Trace.trace ("Error.") $+#endif+                                   AlexError input__'++  (AlexLastSkip input__'' len, _) ->+#ifdef ALEX_DEBUG+    Debug.Trace.trace ("Skipping.") $+#endif+    AlexSkip input__'' len++  (AlexLastAcc k input__''' len, _) ->+#ifdef ALEX_DEBUG+    Debug.Trace.trace ("Accept.") $+#endif+    AlexToken input__''' len ((Data.Array.!) alex_actions k)+++-- Push the input through the DFA, remembering the most recent accepting+-- state it encountered.++alex_scan_tkn user__ orig_input len input__ s last_acc =+  input__ `seq` -- strict in the input+  let+  new_acc = (check_accs (alex_accept `quickIndex` IBOX(s)))+  in+  new_acc `seq`+  case alexGetByte input__ of+     Nothing -> (new_acc, input__)+     Just (c, new_input) ->+#ifdef ALEX_DEBUG+      Debug.Trace.trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c ++ " " ++ (show . Data.Char.chr . fromIntegral) c) $+#endif+      case fromIntegral c of { IBOX(ord_c) ->+        let+                base   = alexIndexInt32OffAddr alex_base s+                offset = PLUS(base,ord_c)++                new_s = if GTE(offset,ILIT(0))+                          && let check  = alexIndexInt16OffAddr alex_check offset+                             in  EQ(check,ord_c)+                          then alexIndexInt16OffAddr alex_table offset+                          else alexIndexInt16OffAddr alex_deflt s+        in+        case new_s of+            ILIT(-1) -> (new_acc, input__)+                -- on an error, we want to keep the input *before* the+                -- character that failed, not after.+            _ -> alex_scan_tkn user__ orig_input+#ifdef ALEX_LATIN1+                   PLUS(len,ILIT(1))+                   -- issue 119: in the latin1 encoding, *each* byte is one character+#else+                   (if c < 0x80 || c >= 0xC0 then PLUS(len,ILIT(1)) else len)+                   -- note that the length is increased ONLY if this is the 1st byte in a char encoding)+#endif+                   new_input new_s new_acc+      }+  where+        check_accs (AlexAccNone) = last_acc+        check_accs (AlexAcc a  ) = AlexLastAcc a input__ IBOX(len)+        check_accs (AlexAccSkip) = AlexLastSkip  input__ IBOX(len)+#ifndef ALEX_NOPRED+        check_accs (AlexAccPred a predx rest)+           | predx user__ orig_input IBOX(len) input__+           = AlexLastAcc a input__ IBOX(len)+           | otherwise+           = check_accs rest+        check_accs (AlexAccSkipPred predx rest)+           | predx user__ orig_input IBOX(len) input__+           = AlexLastSkip input__ IBOX(len)+           | otherwise+           = check_accs rest+#endif++data AlexLastAcc+  = AlexNone+  | AlexLastAcc !Int !AlexInput !Int+  | AlexLastSkip     !AlexInput !Int++data AlexAcc user+  = AlexAccNone+  | AlexAcc Int+  | AlexAccSkip+#ifndef ALEX_NOPRED+  | AlexAccPred Int (AlexAccPred user) (AlexAcc user)+  | AlexAccSkipPred (AlexAccPred user) (AlexAcc user)++type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool++-- -----------------------------------------------------------------------------+-- Predicates on a rule++alexAndPred p1 p2 user__ in1 len in2+  = p1 user__ in1 len in2 && p2 user__ in1 len in2++--alexPrevCharIsPred :: Char -> AlexAccPred _+alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__++alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)++--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _+alexPrevCharIsOneOf arr _ input__ _ _ = arr Data.Array.! alexInputPrevChar input__++--alexRightContext :: Int -> AlexAccPred _+alexRightContext IBOX(sc) user__ _ _ input__ =+     case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of+          (AlexNone, _) -> False+          _ -> True+        -- TODO: there's no need to find the longest+        -- match when checking the right context, just+        -- the first match will do.+#endif+{-# LINE 31 "./src/lib/LexerV2.x" #-}+-- Each token action (the right hand side function) is of type :: AlexPosn -> String -> Token++data Token+  = TokenAction AlexPosn String+  | TokenSoloIdentifier AlexPosn String+  | TokenOCB AlexPosn+  | TokenCCB AlexPosn+  deriving (Eq, Show)
+ src/lib/LexerV2.x view
@@ -0,0 +1,40 @@+{+module LexerV2+  (alexScanTokens,+  Token(TokenAction,+  TokenSoloIdentifier,+  TokenOCB,+  TokenCCB),+  AlexPosn(..)) where+}++%wrapper "posn"++$digit        = 0-9+$alpha        = [a-zA-Z]++$idChar       = [$alpha $digit \']+$contentChar  = [$alpha $digit $white \' \, \! \- \. \/ \? \= \< \> \[ \] \+ \( \)]++@id           = $idChar++@content      = $contentChar+++tokens :-++  $white+                         ;+  @id [$white]+ \"@content\"      { (\position input -> TokenAction position input) }+  \"@content\"                    { (\position input -> TokenAction position ("# " <> input)) -- # is a placeholder id that will later be replaced by a unique identifier }+  @id                             { (\position input -> TokenSoloIdentifier position input) }+  \{                              { (\position _ -> TokenOCB position) }+  \}                              { (\position _ -> TokenCCB position) }++{+-- Each token action (the right hand side function) is of type :: AlexPosn -> String -> Token++data Token+  = TokenAction AlexPosn String+  | TokenSoloIdentifier AlexPosn String+  | TokenOCB AlexPosn+  | TokenCCB AlexPosn+  deriving (Eq, Show)+}
+ src/lib/LexerV3.hs view
@@ -0,0 +1,914 @@+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}+{-# OPTIONS_GHC -fno-warn-tabs #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE MagicHash #-}+{-# LINE 1 "./src/lib/LexerV3.x" #-}+module LexerV3+  (lexAll,+  runAlex,+  Token(TokenAction,+  TokenSoloIdentifier,+  TokenOCB,+  TokenCCB),+  AlexPosn(..)) where+#include "ghcconfig.h"+import qualified Data.Array+import qualified Data.Char+import Data.Array.Base (unsafeAt)+import GHC.Exts (Addr#,Int#,Int(I#),(*#),(+#),(-#),(==#),(>=#),indexCharOffAddr#,indexInt16OffAddr#,indexInt32OffAddr#,int2Word#,narrow16Int#,narrow32Int#,negateInt#,or#,ord#,uncheckedShiftL#,word2Int#)+import qualified GHC.Exts+#define ALEX_MONAD 1+-- -----------------------------------------------------------------------------+-- Alex wrapper code.+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++#if defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT)+import Control.Applicative as App (Applicative (..))+#endif++#if defined(ALEX_STRICT_TEXT) || defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)+import qualified Data.Text+#endif++import Data.Word (Word8)++#if defined(ALEX_BASIC_BYTESTRING) || defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)++import Data.Int (Int64)+import qualified Data.ByteString.Lazy     as ByteString+import qualified Data.ByteString.Internal as ByteString (w2c)++#elif defined(ALEX_STRICT_BYTESTRING)++import qualified Data.ByteString          as ByteString+import qualified Data.ByteString.Internal as ByteString hiding (ByteString)+import qualified Data.ByteString.Unsafe   as ByteString++#else++import qualified Data.Bits++-- | Encode a Haskell String to a list of Word8 values, in UTF8 format.+utf8Encode :: Char -> [Word8]+utf8Encode = uncurry (:) . utf8Encode'++utf8Encode' :: Char -> (Word8, [Word8])+utf8Encode' c = case go (Data.Char.ord c) of+                  (x, xs) -> (fromIntegral x, map fromIntegral xs)+ where+  go oc+   | oc <= 0x7f       = ( oc+                        , [+                        ])++   | oc <= 0x7ff      = ( 0xc0 + (oc `Data.Bits.shiftR` 6)+                        , [0x80 + oc Data.Bits..&. 0x3f+                        ])++   | oc <= 0xffff     = ( 0xe0 + (oc `Data.Bits.shiftR` 12)+                        , [0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+                        , 0x80 + oc Data.Bits..&. 0x3f+                        ])+   | otherwise        = ( 0xf0 + (oc `Data.Bits.shiftR` 18)+                        , [0x80 + ((oc `Data.Bits.shiftR` 12) Data.Bits..&. 0x3f)+                        , 0x80 + ((oc `Data.Bits.shiftR` 6) Data.Bits..&. 0x3f)+                        , 0x80 + oc Data.Bits..&. 0x3f+                        ])++#endif++type Byte = Word8++-- -----------------------------------------------------------------------------+-- The input type++#if defined(ALEX_POSN) || defined(ALEX_MONAD) || defined(ALEX_GSCAN)+type AlexInput = (AlexPosn,     -- current position,+                  Char,         -- previous char+                  [Byte],       -- pending bytes on current char+                  String)       -- current input string++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (_p,c,_bs,_s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (_,_,[],[]) = Nothing+alexGetByte (p,_,[],(c:s))  = let p' = alexMove p c+                              in case utf8Encode' c of+                                   (b, bs) -> p' `seq`  Just (b, (p', c, bs, s))+#endif++#if defined (ALEX_STRICT_TEXT)+type AlexInput = (Char,           -- previous char+                  [Byte],         -- pending bytes on current char+                  Data.Text.Text) -- current input string++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes (c,_ps,s) = (c,[],s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (c,_bs,_s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))+alexGetByte (_,[],s) = case Data.Text.uncons s of+                            Just (c, cs) ->+                              case utf8Encode' c of+                                (b, bs) -> Just (b, (c, bs, cs))+                            Nothing ->+                              Nothing+#endif++#if defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)+type AlexInput = (AlexPosn,       -- current position,+                  Char,           -- previous char+                  [Byte],         -- pending bytes on current char+                  Data.Text.Text) -- current input string++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes (p,c,_ps,s) = (p,c,[],s)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (_p,c,_bs,_s) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,c,(b:bs),s) = Just (b,(p,c,bs,s))+alexGetByte (p,_,[],s) = case Data.Text.uncons s of+                            Just (c, cs) ->+                              let p' = alexMove p c+                              in case utf8Encode' c of+                                   (b, bs) -> p' `seq`  Just (b, (p', c, bs, cs))+                            Nothing ->+                              Nothing+#endif++#if defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING)+type AlexInput = (AlexPosn,     -- current position,+                  Char,         -- previous char+                  ByteString.ByteString,        -- current input string+                  Int64)           -- bytes consumed so far++ignorePendingBytes :: AlexInput -> AlexInput+ignorePendingBytes i = i   -- no pending bytes when lexing bytestrings++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (_,c,_,_) = c++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (p,_,cs,n) =+    case ByteString.uncons cs of+        Nothing -> Nothing+        Just (b, cs') ->+            let c   = ByteString.w2c b+                p'  = alexMove p c+                n'  = n+1+            in p' `seq` cs' `seq` n' `seq` Just (b, (p', c, cs',n'))+#endif++#ifdef ALEX_BASIC_BYTESTRING+data AlexInput = AlexInput { alexChar :: {-# UNPACK #-} !Char,      -- previous char+                             alexStr ::  !ByteString.ByteString,    -- current input string+                             alexBytePos :: {-# UNPACK #-} !Int64}  -- bytes consumed so far++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar = alexChar++alexGetByte (AlexInput {alexStr=cs,alexBytePos=n}) =+    case ByteString.uncons cs of+        Nothing -> Nothing+        Just (c, rest) ->+            Just (c, AlexInput {+                alexChar = ByteString.w2c c,+                alexStr =  rest,+                alexBytePos = n+1})+#endif++#ifdef ALEX_STRICT_BYTESTRING+data AlexInput = AlexInput { alexChar :: {-# UNPACK #-} !Char,+                             alexStr :: {-# UNPACK #-} !ByteString.ByteString,+                             alexBytePos :: {-# UNPACK #-} !Int}++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar = alexChar++alexGetByte (AlexInput {alexStr=cs,alexBytePos=n}) =+    case ByteString.uncons cs of+        Nothing -> Nothing+        Just (c, rest) ->+            Just (c, AlexInput {+                alexChar = ByteString.w2c c,+                alexStr =  rest,+                alexBytePos = n+1})+#endif++-- -----------------------------------------------------------------------------+-- Token positions++-- `Posn' records the location of a token in the input text.  It has three+-- fields: the address (number of characters preceding the token), line number+-- and column of a token within the file. `start_pos' gives the position of the+-- start of the file and `eof_pos' a standard encoding for the end of file.+-- `move_pos' calculates the new position after traversing a given character,+-- assuming the usual eight character tab stops.++#if defined(ALEX_POSN) || defined(ALEX_MONAD) || defined(ALEX_POSN_BYTESTRING) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_GSCAN) || defined (ALEX_POSN_STRICT_TEXT) || defined(ALEX_MONAD_STRICT_TEXT)+data AlexPosn = AlexPn !Int !Int !Int+        deriving (Eq, Show, Ord)++alexStartPos :: AlexPosn+alexStartPos = AlexPn 0 1 1++alexMove :: AlexPosn -> Char -> AlexPosn+alexMove (AlexPn a l c) '\t' = AlexPn (a+1)  l     (c+alex_tab_size-((c-1) `mod` alex_tab_size))+alexMove (AlexPn a l _) '\n' = AlexPn (a+1) (l+1)   1+alexMove (AlexPn a l c) _    = AlexPn (a+1)  l     (c+1)+#endif++-- -----------------------------------------------------------------------------+-- Monad (default and with ByteString input)++#if defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT)+data AlexState = AlexState {+        alex_pos :: !AlexPosn,  -- position at current input location+#ifdef ALEX_MONAD_STRICT_TEXT+        alex_inp :: Data.Text.Text,+        alex_chr :: !Char,+        alex_bytes :: [Byte],+#endif /* ALEX_MONAD_STRICT_TEXT */+#ifdef ALEX_MONAD+        alex_inp :: String,     -- the current input+        alex_chr :: !Char,      -- the character before the input+        alex_bytes :: [Byte],+#endif /* ALEX_MONAD */+#ifdef ALEX_MONAD_BYTESTRING+        alex_bpos:: !Int64,     -- bytes consumed so far+        alex_inp :: ByteString.ByteString,      -- the current input+        alex_chr :: !Char,      -- the character before the input+#endif /* ALEX_MONAD_BYTESTRING */+        alex_scd :: !Int        -- the current startcode+#ifdef ALEX_MONAD_USER_STATE+      , alex_ust :: AlexUserState -- AlexUserState will be defined in the user program+#endif+    }++-- Compile with -funbox-strict-fields for best results!++#ifdef ALEX_MONAD+runAlex :: String -> Alex a -> Either String a+runAlex input__ (Alex f)+   = case f (AlexState {alex_bytes = [],+                        alex_pos = alexStartPos,+                        alex_inp = input__,+                        alex_chr = '\n',+#ifdef ALEX_MONAD_USER_STATE+                        alex_ust = alexInitUserState,+#endif+                        alex_scd = 0}) of Left msg -> Left msg+                                          Right ( _, a ) -> Right a+#endif++#ifdef ALEX_MONAD_BYTESTRING+runAlex :: ByteString.ByteString -> Alex a -> Either String a+runAlex input__ (Alex f)+   = case f (AlexState {alex_bpos = 0,+                        alex_pos = alexStartPos,+                        alex_inp = input__,+                        alex_chr = '\n',+#ifdef ALEX_MONAD_USER_STATE+                        alex_ust = alexInitUserState,+#endif+                        alex_scd = 0}) of Left msg -> Left msg+                                          Right ( _, a ) -> Right a+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+runAlex :: Data.Text.Text -> Alex a -> Either String a+runAlex input__ (Alex f)+   = case f (AlexState {alex_bytes = [],+                        alex_pos = alexStartPos,+                        alex_inp = input__,+                        alex_chr = '\n',+#ifdef ALEX_MONAD_USER_STATE+                        alex_ust = alexInitUserState,+#endif+                        alex_scd = 0}) of Left msg -> Left msg+                                          Right ( _, a ) -> Right a+#endif++newtype Alex a = Alex { unAlex :: AlexState -> Either String (AlexState, a) }++instance Functor Alex where+  fmap f a = Alex $ \s -> case unAlex a s of+                            Left msg -> Left msg+                            Right (s', a') -> Right (s', f a')++instance Applicative Alex where+  pure a   = Alex $ \s -> Right (s, a)+  fa <*> a = Alex $ \s -> case unAlex fa s of+                            Left msg -> Left msg+                            Right (s', f) -> case unAlex a s' of+                                               Left msg -> Left msg+                                               Right (s'', b) -> Right (s'', f b)++instance Monad Alex where+  m >>= k  = Alex $ \s -> case unAlex m s of+                                Left msg -> Left msg+                                Right (s',a) -> unAlex (k a) s'+  return = App.pure+++#ifdef ALEX_MONAD+alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} ->+        Right (s, (pos,c,bs,inp__))+#endif++#ifdef ALEX_MONAD_BYTESTRING+alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_bpos=bpos,alex_chr=c,alex_inp=inp__} ->+        Right (s, (pos,c,inp__,bpos))+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+alexGetInput :: Alex AlexInput+alexGetInput+ = Alex $ \s@AlexState{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} ->+        Right (s, (pos,c,bs,inp__))+#endif++#ifdef ALEX_MONAD+alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,bs,inp__)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of+                    state__@(AlexState{}) -> Right (state__, ())+#endif++#ifdef ALEX_MONAD_BYTESTRING+alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,inp__,bpos)+ = Alex $ \s -> case s{alex_pos=pos,+                       alex_bpos=bpos,+                       alex_chr=c,+                       alex_inp=inp__} of+                    state__@(AlexState{}) -> Right (state__, ())+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+alexSetInput :: AlexInput -> Alex ()+alexSetInput (pos,c,bs,inp__)+ = Alex $ \s -> case s{alex_pos=pos,alex_chr=c,alex_bytes=bs,alex_inp=inp__} of+                    state__@(AlexState{}) -> Right (state__, ())+#endif++alexError :: String -> Alex a+alexError message = Alex $ const $ Left message++alexGetStartCode :: Alex Int+alexGetStartCode = Alex $ \s@AlexState{alex_scd=sc} -> Right (s, sc)++alexSetStartCode :: Int -> Alex ()+alexSetStartCode sc = Alex $ \s -> Right (s{alex_scd=sc}, ())++#if defined(ALEX_MONAD_USER_STATE)+alexGetUserState :: Alex AlexUserState+alexGetUserState = Alex $ \s@AlexState{alex_ust=ust} -> Right (s,ust)++alexSetUserState :: AlexUserState -> Alex ()+alexSetUserState ss = Alex $ \s -> Right (s{alex_ust=ss}, ())+#endif /* defined(ALEX_MONAD_USER_STATE) */++#ifdef ALEX_MONAD+alexMonadScan = do+  inp__ <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp__ sc of+    AlexEOF -> alexEOF+    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+    AlexSkip  inp__' _len -> do+        alexSetInput inp__'+        alexMonadScan+    AlexToken inp__' len action -> do+        alexSetInput inp__'+        action (ignorePendingBytes inp__) len+#endif++#ifdef ALEX_MONAD_BYTESTRING+alexMonadScan = do+  inp__@(_,_,_,n) <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp__ sc of+    AlexEOF -> alexEOF+    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+    AlexSkip  inp__' _len -> do+        alexSetInput inp__'+        alexMonadScan+    AlexToken inp__'@(_,_,_,n') _ action -> let len = n'-n in do+        alexSetInput inp__'+        action (ignorePendingBytes inp__) len+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+alexMonadScan = do+  inp__ <- alexGetInput+  sc <- alexGetStartCode+  case alexScan inp__ sc of+    AlexEOF -> alexEOF+    AlexError ((AlexPn _ line column),_,_,_) -> alexError $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+    AlexSkip  inp__' _len -> do+        alexSetInput inp__'+        alexMonadScan+    AlexToken inp__' len action -> do+        alexSetInput inp__'+        action (ignorePendingBytes inp__) len+#endif++-- -----------------------------------------------------------------------------+-- Useful token actions++#ifdef ALEX_MONAD+type AlexAction result = AlexInput -> Int -> Alex result+#endif++#ifdef ALEX_MONAD_BYTESTRING+type AlexAction result = AlexInput -> Int64 -> Alex result+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+type AlexAction result = AlexInput -> Int -> Alex result+#endif++-- just ignore this token and scan another one+-- skip :: AlexAction result+skip _input _len = alexMonadScan++-- ignore this token, but set the start code to a new value+-- begin :: Int -> AlexAction result+begin code _input _len = do alexSetStartCode code; alexMonadScan++-- perform an action for this token, and set the start code to a new value+andBegin :: AlexAction result -> Int -> AlexAction result+(action `andBegin` code) input__ len = do+  alexSetStartCode code+  action input__ len++#ifdef ALEX_MONAD+token :: (AlexInput -> Int -> token) -> AlexAction token+token t input__ len = return (t input__ len)+#endif++#ifdef ALEX_MONAD_BYTESTRING+token :: (AlexInput -> Int64 -> token) -> AlexAction token+token t input__ len = return (t input__ len)+#endif++#ifdef ALEX_MONAD_STRICT_TEXT+token :: (AlexInput -> Int -> token) -> AlexAction token+token t input__ len = return (t input__ len)+#endif++#endif /* defined(ALEX_MONAD) || defined(ALEX_MONAD_BYTESTRING) || defined(ALEX_MONAD_STRICT_TEXT) */++-- -----------------------------------------------------------------------------+-- Basic wrapper++#ifdef ALEX_BASIC+type AlexInput = (Char,[Byte],String)++alexInputPrevChar :: AlexInput -> Char+alexInputPrevChar (c,_,_) = c++-- alexScanTokens :: String -> [token]+alexScanTokens str = go ('\n',[],str)+  where go inp__@(_,_bs,s) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _ln     -> go inp__'+                AlexToken inp__' len act -> act (take len s) : go inp__'++alexGetByte :: AlexInput -> Maybe (Byte,AlexInput)+alexGetByte (c,(b:bs),s) = Just (b,(c,bs,s))+alexGetByte (_,[],[])    = Nothing+alexGetByte (_,[],(c:s)) = case utf8Encode' c of+                             (b, bs) -> Just (b, (c, bs, s))+#endif+++-- -----------------------------------------------------------------------------+-- Basic wrapper, ByteString version++#ifdef ALEX_BASIC_BYTESTRING++-- alexScanTokens :: ByteString.ByteString -> [token]+alexScanTokens str = go (AlexInput '\n' str 0)+  where go inp__ =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' _ act ->+                  let len = alexBytePos inp__' - alexBytePos inp__ in+                  act (ByteString.take len (alexStr inp__)) : go inp__'++#endif++#ifdef ALEX_STRICT_BYTESTRING++-- alexScanTokens :: ByteString.ByteString -> [token]+alexScanTokens str = go (AlexInput '\n' str 0)+  where go inp__ =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' _ act ->+                  let len = alexBytePos inp__' - alexBytePos inp__ in+                  act (ByteString.take len (alexStr inp__)) : go inp__'++#endif++#ifdef ALEX_STRICT_TEXT+-- alexScanTokens :: Data.Text.Text -> [token]+alexScanTokens str = go ('\n',[],str)+  where go inp__@(_,_bs,s) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError _ -> error "lexical error"+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' len act -> act (Data.Text.take len s) : go inp__'+#endif++#ifdef ALEX_POSN_STRICT_TEXT+-- alexScanTokens :: Data.Text.Text -> [token]+alexScanTokens str = go (alexStartPos,'\n',[],str)+  where go inp__@(pos,_,_bs,s) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+                AlexSkip  inp__' _len  -> go inp__'+                AlexToken inp__' len act -> act pos (Data.Text.take len s) : go inp__'+#endif+++-- -----------------------------------------------------------------------------+-- Posn wrapper++-- Adds text positions to the basic model.++#ifdef ALEX_POSN+--alexScanTokens :: String -> [token]+alexScanTokens str0 = go (alexStartPos,'\n',[],str0)+  where go inp__@(pos,_,_,str) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+                AlexSkip  inp__' _ln     -> go inp__'+                AlexToken inp__' len act -> act pos (take len str) : go inp__'+#endif+++-- -----------------------------------------------------------------------------+-- Posn wrapper, ByteString version++#ifdef ALEX_POSN_BYTESTRING+--alexScanTokens :: ByteString.ByteString -> [token]+alexScanTokens str0 = go (alexStartPos,'\n',str0,0)+  where go inp__@(pos,_,str,n) =+          case alexScan inp__ 0 of+                AlexEOF -> []+                AlexError ((AlexPn _ line column),_,_,_) -> error $ "lexical error at line " ++ (show line) ++ ", column " ++ (show column)+                AlexSkip  inp__' _len       -> go inp__'+                AlexToken inp__'@(_,_,_,n') _ act ->+                  act pos (ByteString.take (n'-n) str) : go inp__'+#endif+++-- -----------------------------------------------------------------------------+-- GScan wrapper++-- For compatibility with previous versions of Alex, and because we can.++#ifdef ALEX_GSCAN+alexGScan stop__ state__ inp__ =+  alex_gscan stop__ alexStartPos '\n' [] inp__ (0,state__)++alex_gscan stop__ p c bs inp__ (sc,state__) =+  case alexScan (p,c,bs,inp__) sc of+        AlexEOF     -> stop__ p c inp__ (sc,state__)+        AlexError _ -> stop__ p c inp__ (sc,state__)+        AlexSkip (p',c',bs',inp__') _len ->+          alex_gscan stop__ p' c' bs' inp__' (sc,state__)+        AlexToken (p',c',bs',inp__') len k ->+           k p c inp__ len (\scs -> alex_gscan stop__ p' c' bs' inp__' scs)                  (sc,state__)+#endif+alex_tab_size :: Int+alex_tab_size = 8+alex_base :: AlexAddr+alex_base = AlexA#+  "\xf8\xff\xff\xff\x00\x00\x00\x00\x6d\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\xfd\xff\xff\xff\x02\x00\x00\x00\x51\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\x35\x02\x00\x00"#++alex_table :: AlexAddr+alex_table = AlexA#+  "\x00\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x00\x00\x05\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x09\x00\x00\x00\x08\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++alex_check :: AlexAddr+alex_check = AlexA#+  "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\x20\x00\xff\xff\x27\x00\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\xff\xff\x7d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_deflt :: AlexAddr+alex_deflt = AlexA#+  "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#++alex_accept = Data.Array.listArray (0 :: Int, 11)+  [ AlexAccNone+  , AlexAcc 4+  , AlexAccNone+  , AlexAccNone+  , AlexAcc 3+  , AlexAccSkip+  , AlexAccNone+  , AlexAccNone+  , AlexAcc 2+  , AlexAcc 1+  , AlexAcc 0+  , AlexAccNone+  ]++alex_actions = Data.Array.array (0 :: Int, 5)+  [ (4,alex_action_2)+  , (3,alex_action_1)+  , (2,alex_action_5)+  , (1,alex_action_4)+  , (0,alex_action_3)+  ]++alex_action_1 = (\(position, _previousCharacter, _bytes, inputString) len -> return $ TokenAction position (take len inputString))+alex_action_2 = (\(position, _previousCharacter, _bytes, inputString) len -> return $ TokenAction position ("# " <> take len inputString)) -- # is a placeholder id that will later be replaced by a unique identifier+alex_action_3 = (\(position, _previousCharacter, _bytes, inputString) len -> return $ TokenSoloIdentifier position (take len inputString))+alex_action_4 = (\(position, _previousCharacter, _bytes, _inputString) len -> return $ TokenOCB position)+alex_action_5 = (\(position, _previousCharacter, _bytes, _inputString) len -> return $ TokenCCB position)++#define ALEX_GHC 1+#define ALEX_NOPRED 1+-- -----------------------------------------------------------------------------+-- ALEX TEMPLATE+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++-- -----------------------------------------------------------------------------+-- INTERNALS and main scanner engine++#ifdef ALEX_GHC+#  define ILIT(n) n#+#  define IBOX(n) (I# (n))+#  define FAST_INT Int#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#  if __GLASGOW_HASKELL__ > 706+#    define CMP_GEQ(n,m) (((n) >=# (m)) :: Int#)+#    define CMP_EQ(n,m) (((n) ==# (m)) :: Int#)+#    define CMP_MKBOOL(x) ((GHC.Exts.tagToEnum# (x)) :: Bool)+#  else+#    define CMP_GEQ(n,m) (((n) >= (m)) :: Bool)+#    define CMP_EQ(n,m) (((n) == (m)) :: Bool)+#    define CMP_MKBOOL(x) ((x) :: Bool)+#  endif+#  define GTE(n,m) CMP_MKBOOL(CMP_GEQ(n,m))+#  define EQ(n,m) CMP_MKBOOL(CMP_EQ(n,m))+#  define PLUS(n,m) (n +# m)+#  define MINUS(n,m) (n -# m)+#  define TIMES(n,m) (n *# m)+#  define NEGATE(n) (negateInt# (n))+#  define IF_GHC(x) (x)+#else+#  define ILIT(n) (n)+#  define IBOX(n) (n)+#  define FAST_INT Int+#  define GTE(n,m) (n >= m)+#  define EQ(n,m) (n == m)+#  define PLUS(n,m) (n + m)+#  define MINUS(n,m) (n - m)+#  define TIMES(n,m) (n * m)+#  define NEGATE(n) (negate (n))+#  define IF_GHC(x)+#endif++#ifdef ALEX_GHC+data AlexAddr = AlexA# Addr#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.++{-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#+alexIndexInt16OffAddr (AlexA# arr) off =+#if __GLASGOW_HASKELL__ >= 901+  GHC.Exts.int16ToInt# -- qualified import because it doesn't exist on older GHC's+#endif+#ifdef WORDS_BIGENDIAN+  (GHC.Exts.word16ToInt16# (GHC.Exts.wordToWord16# (GHC.Exts.byteSwap16# (GHC.Exts.word16ToWord# (GHC.Exts.int16ToWord16#+#endif+  (indexInt16OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+  )))))+#endif+#else+alexIndexInt16OffAddr = (Data.Array.!)+#endif++#ifdef ALEX_GHC+{-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#+alexIndexInt32OffAddr (AlexA# arr) off =+#if __GLASGOW_HASKELL__ >= 901+  GHC.Exts.int32ToInt# -- qualified import because it doesn't exist on older GHC's+#endif+#ifdef WORDS_BIGENDIAN+  (GHC.Exts.word32ToInt32# (GHC.Exts.wordToWord32# (GHC.Exts.byteSwap32# (GHC.Exts.word32ToWord# (GHC.Exts.int32ToWord32#+#endif+  (indexInt32OffAddr# arr off)+#ifdef WORDS_BIGENDIAN+  )))))+#endif+#else+alexIndexInt32OffAddr = (Data.Array.!)+#endif++#ifdef ALEX_GHC+-- GHC >= 503, unsafeAt is available from Data.Array.Base.+quickIndex = unsafeAt+#else+quickIndex = (Data.Array.!)+#endif++-- -----------------------------------------------------------------------------+-- Main lexing routines++data AlexReturn a+  = AlexEOF+  | AlexError  !AlexInput+  | AlexSkip   !AlexInput !Int+  | AlexToken  !AlexInput !Int a++-- alexScan :: AlexInput -> StartCode -> AlexReturn a+alexScan input__ IBOX(sc)+  = alexScanUser (error "alex rule requiring context was invoked by alexScan; use alexScanUser instead?") input__ IBOX(sc)++-- If the generated alexScan/alexScanUser functions are called multiple times+-- in the same file, alexScanUser gets broken out into a separate function and+-- increases memory usage. Make sure GHC inlines this function and optimizes it.+{-# INLINE alexScanUser #-}++alexScanUser user__ input__ IBOX(sc)+  = case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of+  (AlexNone, input__') ->+    case alexGetByte input__ of+      Nothing ->+#ifdef ALEX_DEBUG+                                   Debug.Trace.trace ("End of input.") $+#endif+                                   AlexEOF+      Just _ ->+#ifdef ALEX_DEBUG+                                   Debug.Trace.trace ("Error.") $+#endif+                                   AlexError input__'++  (AlexLastSkip input__'' len, _) ->+#ifdef ALEX_DEBUG+    Debug.Trace.trace ("Skipping.") $+#endif+    AlexSkip input__'' len++  (AlexLastAcc k input__''' len, _) ->+#ifdef ALEX_DEBUG+    Debug.Trace.trace ("Accept.") $+#endif+    AlexToken input__''' len ((Data.Array.!) alex_actions k)+++-- Push the input through the DFA, remembering the most recent accepting+-- state it encountered.++alex_scan_tkn user__ orig_input len input__ s last_acc =+  input__ `seq` -- strict in the input+  let+  new_acc = (check_accs (alex_accept `quickIndex` IBOX(s)))+  in+  new_acc `seq`+  case alexGetByte input__ of+     Nothing -> (new_acc, input__)+     Just (c, new_input) ->+#ifdef ALEX_DEBUG+      Debug.Trace.trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c ++ " " ++ (show . Data.Char.chr . fromIntegral) c) $+#endif+      case fromIntegral c of { IBOX(ord_c) ->+        let+                base   = alexIndexInt32OffAddr alex_base s+                offset = PLUS(base,ord_c)++                new_s = if GTE(offset,ILIT(0))+                          && let check  = alexIndexInt16OffAddr alex_check offset+                             in  EQ(check,ord_c)+                          then alexIndexInt16OffAddr alex_table offset+                          else alexIndexInt16OffAddr alex_deflt s+        in+        case new_s of+            ILIT(-1) -> (new_acc, input__)+                -- on an error, we want to keep the input *before* the+                -- character that failed, not after.+            _ -> alex_scan_tkn user__ orig_input+#ifdef ALEX_LATIN1+                   PLUS(len,ILIT(1))+                   -- issue 119: in the latin1 encoding, *each* byte is one character+#else+                   (if c < 0x80 || c >= 0xC0 then PLUS(len,ILIT(1)) else len)+                   -- note that the length is increased ONLY if this is the 1st byte in a char encoding)+#endif+                   new_input new_s new_acc+      }+  where+        check_accs (AlexAccNone) = last_acc+        check_accs (AlexAcc a  ) = AlexLastAcc a input__ IBOX(len)+        check_accs (AlexAccSkip) = AlexLastSkip  input__ IBOX(len)+#ifndef ALEX_NOPRED+        check_accs (AlexAccPred a predx rest)+           | predx user__ orig_input IBOX(len) input__+           = AlexLastAcc a input__ IBOX(len)+           | otherwise+           = check_accs rest+        check_accs (AlexAccSkipPred predx rest)+           | predx user__ orig_input IBOX(len) input__+           = AlexLastSkip input__ IBOX(len)+           | otherwise+           = check_accs rest+#endif++data AlexLastAcc+  = AlexNone+  | AlexLastAcc !Int !AlexInput !Int+  | AlexLastSkip     !AlexInput !Int++data AlexAcc user+  = AlexAccNone+  | AlexAcc Int+  | AlexAccSkip+#ifndef ALEX_NOPRED+  | AlexAccPred Int (AlexAccPred user) (AlexAcc user)+  | AlexAccSkipPred (AlexAccPred user) (AlexAcc user)++type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool++-- -----------------------------------------------------------------------------+-- Predicates on a rule++alexAndPred p1 p2 user__ in1 len in2+  = p1 user__ in1 len in2 && p2 user__ in1 len in2++--alexPrevCharIsPred :: Char -> AlexAccPred _+alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__++alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)++--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _+alexPrevCharIsOneOf arr _ input__ _ _ = arr Data.Array.! alexInputPrevChar input__++--alexRightContext :: Int -> AlexAccPred _+alexRightContext IBOX(sc) user__ _ _ input__ =+     case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of+          (AlexNone, _) -> False+          _ -> True+        -- TODO: there's no need to find the longest+        -- match when checking the right context, just+        -- the first match will do.+#endif+{-# LINE 32 "./src/lib/LexerV3.x" #-}+-- Each token action (the right hand side function) is of type :: AlexInput -> Int -> Alex Token++data Token+  = TokenAction AlexPosn String+  | TokenSoloIdentifier AlexPosn String+  | TokenOCB AlexPosn+  | TokenCCB AlexPosn+  | TokenEOF+  deriving (Eq, Show)++alexEOF :: Alex Token+alexEOF = return TokenEOF++lexAll :: Alex [Token]+lexAll = go+    where+        go = do+            t <- alexMonadScan+            case t of+                TokenEOF -> return []+                _ -> (t:) <$> go
+ src/lib/LexerV3.x view
@@ -0,0 +1,54 @@+{+module LexerV3+  (lexAll,+  runAlex,+  Token(TokenAction,+  TokenSoloIdentifier,+  TokenOCB,+  TokenCCB),+  AlexPosn(..)) where+}++%wrapper "monad"++$digit        = 0-9+$alpha        = [a-zA-Z]++$idChar       = [$alpha $digit \']+$contentChar  = [$alpha $digit $white \' \, \! \- \. \/ \? \= \< \> \[ \] \+ \( \)]++@id           = $idChar++@content      = $contentChar+++tokens :-++  $white+                         ;+  @id [$white]+ \"@content\"      { (\(position, _previousCharacter, _bytes, inputString) len -> return $ TokenAction position (take len inputString)) }+  \"@content\"                    { (\(position, _previousCharacter, _bytes, inputString) len -> return $ TokenAction position ("# " <> take len inputString)) -- # is a placeholder id that will later be replaced by a unique identifier }+  @id                             { (\(position, _previousCharacter, _bytes, inputString) len -> return $ TokenSoloIdentifier position (take len inputString)) }+  \{                              { (\(position, _previousCharacter, _bytes, _inputString) len -> return $ TokenOCB position) }+  \}                              { (\(position, _previousCharacter, _bytes, _inputString) len -> return $ TokenCCB position) }++{+-- Each token action (the right hand side function) is of type :: AlexInput -> Int -> Alex Token++data Token+  = TokenAction AlexPosn String+  | TokenSoloIdentifier AlexPosn String+  | TokenOCB AlexPosn+  | TokenCCB AlexPosn+  | TokenEOF+  deriving (Eq, Show)++alexEOF :: Alex Token+alexEOF = return TokenEOF++lexAll :: Alex [Token]+lexAll = go+    where+        go = do+            t <- alexMonadScan+            case t of+                TokenEOF -> return []+                _ -> (t:) <$> go+}
src/lib/Parser.hs view
@@ -12,7 +12,7 @@ import Data.Char import Data.String.Utils (lstrip) import ID-import Lexer+import LexerV3 import Blocks import qualified Control.Monad as Happy_Prelude import qualified Data.Bool as Happy_Prelude@@ -132,7 +132,7 @@ happyReduction_7 (_ `HappyStk`         (HappyAbsSyn6  happy_var_3) `HappyStk`         _ `HappyStk`-        (HappyTerminal (TokenAction happy_var_1)) `HappyStk`+        (HappyTerminal (TokenAction _ happy_var_1)) `HappyStk`         happyRest)          = HappyAbsSyn7                  (happy_var_3 <> [toHeadline happy_var_1]@@ -140,17 +140,17 @@  happyReduce_8 = happyReduce 5# 2# happyReduction_8 happyReduction_8 (_ `HappyStk`-        (HappyTerminal (TokenSoloIdentifier happy_var_4)) `HappyStk`+        (HappyTerminal (TokenSoloIdentifier _ happy_var_4)) `HappyStk`         (HappyAbsSyn6  happy_var_3) `HappyStk`         _ `HappyStk`-        (HappyTerminal (TokenAction happy_var_1)) `HappyStk`+        (HappyTerminal (TokenAction _ happy_var_1)) `HappyStk`         happyRest)          = HappyAbsSyn7                  (toAddress happy_var_4 : happy_var_3 <> [toHeadline happy_var_1]         ) `HappyStk` happyRest  happyReduce_9 = happySpecReduce_1  3# happyReduction_9-happyReduction_9 (HappyTerminal (TokenAction happy_var_1))+happyReduction_9 (HappyTerminal (TokenAction _ happy_var_1))          =  HappyAbsSyn8                  (toAction happy_var_1         )@@ -163,7 +163,7 @@         _ `HappyStk`         (HappyAbsSyn6  happy_var_3) `HappyStk`         _ `HappyStk`-        (HappyTerminal (TokenAction happy_var_1)) `HappyStk`+        (HappyTerminal (TokenAction _ happy_var_1)) `HappyStk`         happyRest)          = HappyAbsSyn8                  (toFork happy_var_1 happy_var_3 happy_var_6 Nothing@@ -171,13 +171,13 @@  happyReduce_11 = happyReduce 8# 3# happyReduction_11 happyReduction_11 (_ `HappyStk`-        (HappyTerminal (TokenSoloIdentifier happy_var_7)) `HappyStk`+        (HappyTerminal (TokenSoloIdentifier _ happy_var_7)) `HappyStk`         (HappyAbsSyn6  happy_var_6) `HappyStk`         _ `HappyStk`         _ `HappyStk`         (HappyAbsSyn6  happy_var_3) `HappyStk`         _ `HappyStk`-        (HappyTerminal (TokenAction happy_var_1)) `HappyStk`+        (HappyTerminal (TokenAction _ happy_var_1)) `HappyStk`         happyRest)          = HappyAbsSyn8                  (toFork happy_var_1 happy_var_3 happy_var_6 (Just (ID happy_var_7))@@ -185,13 +185,13 @@  happyReduce_12 = happyReduce 8# 3# happyReduction_12 happyReduction_12 (_ `HappyStk`-        (HappyTerminal (TokenSoloIdentifier happy_var_7)) `HappyStk`+        (HappyTerminal (TokenSoloIdentifier _ happy_var_7)) `HappyStk`         (HappyAbsSyn6  happy_var_6) `HappyStk`         _ `HappyStk`         _ `HappyStk`         (HappyAbsSyn6  happy_var_3) `HappyStk`         _ `HappyStk`-        (HappyTerminal (TokenAction happy_var_1)) `HappyStk`+        (HappyTerminal (TokenAction _ happy_var_1)) `HappyStk`         happyRest)          = HappyAbsSyn8                  (toFork happy_var_1 happy_var_3 happy_var_6 (Just (ID happy_var_7))@@ -204,17 +204,17 @@         _ `HappyStk`         (HappyAbsSyn6  happy_var_3) `HappyStk`         _ `HappyStk`-        (HappyTerminal (TokenAction happy_var_1)) `HappyStk`+        (HappyTerminal (TokenAction _ happy_var_1)) `HappyStk`         happyRest)          = HappyAbsSyn8                  (toFork happy_var_1 happy_var_3 happy_var_6 Nothing         ) `HappyStk` happyRest  happyTerminalToTok term = case term of {-        TokenAction happy_dollar_dollar -> 2#;-        TokenSoloIdentifier happy_dollar_dollar -> 3#;-        TokenOCB -> 4#;-        TokenCCB -> 5#;+        TokenAction _ happy_dollar_dollar -> 2#;+        TokenSoloIdentifier _ happy_dollar_dollar -> 3#;+        TokenOCB _ -> 4#;+        TokenCCB _ -> 5#;         _ -> -1#;         } {-# NOINLINE happyTerminalToTok #-}@@ -263,7 +263,9 @@   in  take (length idFreeContent' - 1) idFreeContent'  toAction :: String -> Block-toAction t = Action (toId t) (toContent t)+toAction t =+    Action Nothing (show t)+    -- Action (toId t) (toContent t)  toFork :: String -> [Block] -> [Block] -> Maybe ID -> Block toFork t l r rId = Fork (toId t) (toContent t) l r rId
src/lib/Parser.y view
@@ -3,7 +3,7 @@ import Data.Char import Data.String.Utils (lstrip) import ID-import Lexer+import LexerV3 import Blocks } @@ -12,10 +12,10 @@ %monad                                                    { P } { thenP } { returnP }  %token-  action                                                  { TokenAction $$ }-  soloId                                                  { TokenSoloIdentifier $$ }-  '{'                                                     { TokenOCB }-  '}'                                                     { TokenCCB }+  action                                                  { TokenAction _ $$ }+  soloId                                                  { TokenSoloIdentifier _ $$ }+  '{'                                                     { TokenOCB _ }+  '}'                                                     { TokenCCB _ }  %% @@ -51,7 +51,9 @@   in  take (length idFreeContent' - 1) idFreeContent'  toAction :: String -> Block-toAction t = Action (toId t) (toContent t)+toAction t =+    Action Nothing (show t)+    -- Action (toId t) (toContent t)  toFork :: String -> [Block] -> [Block] -> Maybe ID -> Block toFork t l r rId = Fork (toId t) (toContent t) l r rId
wyvern-diagrams.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.4 name:               wyvern-diagrams-version:            0.3.1.3+version:            0.3.2.0 synopsis:           Simple flowchart diagrams. Inspired by DRAKON. description:        Wyvern combines syntax and rendering engine                     for simple, DRAKON-like flowcharts.@@ -29,6 +29,8 @@                       Blocks                       HelperDiagrams                       Lexer+                      LexerV2+                      LexerV3                       Parser                       InputArguments     hs-source-dirs:   src/lib