śĪpŽdĪŌ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓSafe;=[#Standalone comment Empty lines Parser unhandled lines Code # (M in M5) Code value (81 in G81) Code subcode (1 in G92.1) Code Code Comment following this CodeList of sMap of  to ŌMap of  to Ō Param letter!S parameter - usually spindle RPM P parameterF parameter - usually feedrate R parameter Axis letterX-axisY-axisZ-axisA-axisB-axis C-axis! Extruder axis# Code class$G-code%M-code&T-code (temperature)'Stand-alone P-code(Stand-alone F-code)Stand-alone S-code*Convert Õ! representation of a code to its #+Convert Õ" representation of an axis to its ,Convert Õ" representation of a param to its :   !"#&%$'()*+,-./0123456789:#$%&'() !" *+1,3-./02456789Ö×   !"#$%&'()SafeL!Parse single line of G-code into MParse lines of G-code into N8Parse lines of G-code returning either parsing error or LMNMLNNone"#V`]PTrue if  is a G-codeQTrue if  is a M-codeRTrue if  is a G{N} codeSTrue if  is a G{N}.{sub} codeTTrue if  is a M{N} codeUTrue if  is a M{N}.{sub} codeVTrue if  is a G0 codeWTrue if % is a G0 (rapid move) code, alias to VXTrue if  is a G1 codeYTrue if  is a G1 (move) code, alias to XZTrue if  is a G2 code[True if 2 is a G2 (clockwise circular move) code, alias to Z\True if  is a G3 code]True if : is a G3 (counter-clockwise circular move) code, alias to \^True if  is a G4 code_True if  is a G4 (dwell) code, alias to ^`True if  is a G5 codeaTrue if ' is a G5 (cubic spline) code, alias to `bTrue if  is a G5.1 codecTrue if - is a G5.1 (quadratic spline) code, alias to bdTrue if  is a G5.2 codeeTrue if " is a G5.2 (NURBS) code, alias to dfTrue if ! is a G17 (select XYZ plane) codegTrue if ! is a G18 (select XZY plane) codehTrue if ! is a G19 (select YZX plane) codejTrue if  is a G20 (inch mode) codekTrue if  is a G21 (millimeter mode) codemTrue if  is a G33 codenTrue if 7 is a G33 (spindle synchronized motion) code, alias to moTrue if  is a G33.1 codepTrue if + is a G33.1 (rigit tapping) code, alias to oqTrue if  is a G38 coderTrue if ! is a G38 (probe) code, alias to qtTrue if . is a G73 (drilling cycle, chip breaking) codeuTrue if  is a G76 (threading cycle) codevTrue if & is a G80 (cancel drilling cycle) codewTrue if  is a G81 (drilling cycle) codexTrue if & is a G82 (drilling cycle, dwell) codeyTrue if & is a G83 (drilling cycle, pecky) codezTrue if ' is a G85 (boring cycle, feed out) code{True if . is a G89 (boring cycle, dwell, feed out) code}True if  is a G90 (absolute mode) code~True if  is a G91 (relative mode) codeTrue if $ is a G90.1 (absolute arc mode) code€True if $ is a G91.1 (relative arc mode) codeTrue if # is a G7 (lathe diameter mode) code‚True if ! is a G8 (lathe radius mode) code„True if " is a G93 (inverse time mode) code…True if + is a G94 (units per minute time mode) code†True if / is a G95 (units per revolution time mode) codeˆTrue if ' is a M3 (spindle start clockwise) code‰True if / is a M4 (spindle start counter-clockwise) codeŠTrue if  is a M5 (spindle stop) codeŒTrue if $ is a M7 (turn mist coolant on) codeTrue if % is a M8 (turn flood coolant on) codeŽTrue if $ is a M9 (turn all coolant off) codeTrue if # is a G43 (tool length offset) code‘True if - is a G43.1 (dynamic tool length offset) code’True if 6 is a G43.2 (apply additional tool length offset) code“True if * is a G49 (cancel tool length offset) code•True if  is a M0 (pause) code–True if  is a M1 (optional pause) code—True if  is a M2 (program end) code˜True if ) is a M30 (exchange pallet shuttles) code›True if  has a coordinate in axis aŸTrue if  contains  axis True if  contains  axis”True if  contains  axis¢True if  contains ! axis£True if  contains parameter with „True if , contains feedrate parameter (e.g. G0 F3000)¦Filter G-codes§Filter M-codesØFilter rapid moves© Filter movesŖReplace # of  (e.g. for chaning G0 to M0)«Replace code value of  (e.g. for chaning G0 to G1)¬Replace axis with  in  returning new ±Replace or add axis with  in  returning new ²Replace X axis coordnate³Replace Y axis coordinate“Replace Z axis coordinateµReplace E axis coordinate¶ Replace or add X axis coordinate· Replace or add Y axis coordinateø Replace or add Z axis coordinate¹ Replace or add E axis coordinateŗReplace parameter with  in  returning new ¼Replace or add parameter with  in  returning new ½"Replace feedrate (F parameter) in  returning new æ"Sum of all axis distances of this ĄTest if  belongs to group gĮTest if  belongs to any groupOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪρPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅOĘĒČÉŹĖĢĶĪĻNone"#a`Š Pretty-print  using colorsŲ Pretty-print 2 using colors with custom floating precision widthŃPretty-print single  using colorsŁPretty-print single 2 using colors with custom floating precision widthŅ Pretty-print  without colorsŚ Pretty-print 4 without colors with custom floating precision widthÓPretty-print single  without colorsŪPretty-print single 4 without colors with custom floating precision widthŠŃŅÓŠŃŅÓNoneaĄĀ   !"#&%$'()*+,-./0123456789LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓÜ       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŲŁŪ ÜŻŽßąį&gcodehs-0.1.1.0-BR9HHbSfO8rDKqMBzCwKJmData.GCode.TypesData.GCode.ParseData.GCode.UtilsData.GCode.Pretty Data.GCodeStylestylePrecision styleColorfulCodeModCodeCommentEmptyOthercodeClscodeNumcodeSubcodeAxes codeParams codeCommentGCode ParamLimitsParamsLimitsAxesParamDesignatorSPFRAxisDesignatorXYZABCELClassGMTStPStFStScodeclsaxisparamclsnumsubaxesaxis'paramsparam'commentappmodeval emptyCode defaultPrec defaultStyle$fSemigroupCodeMod$fMonoidCodeMod $fShowClass $fEnumClass $fEqClass $fOrdClass$fShowAxisDesignator$fEnumAxisDesignator$fEqAxisDesignator$fOrdAxisDesignator$fShowParamDesignator$fEnumParamDesignator$fEqParamDesignator$fOrdParamDesignator $fShowCode$fEqCode $fOrdCode $fShowStyleparseGCodeLine parseGCodeparseOnlyGCode EvaluatorisGisMisGNisGNsisMNisMNsisG0isRapidisG1isMoveisG2isArcCWisG3isArcCCWisG4isDwellisG5 isCubicSplineisG5s1 isQuadSplineisG5s2isNURBS isXYZplane isXZYplane isYZXplane groupPlaneisInchisMM groupUnitsisG33 isSpindleSyncisG33s1 isRigidTapisG38isProbe groupMotionisDrillingCycleCBisThreadingCycleisDrillingCycleCancelisDrillingCycleisDrillingCycleDwellisDrillingCyclePeck isBoringCycleisBoringCycleDwell groupCycles isAbsolute isRelative isArcAbsolute isArcRelativeisLatheDiameter isLatheRadius groupDistance isInverseTimeisUnitsPerMinuteisUnitsPerRevolutiongroupFeedRateMode isSpindleCW isSpindleCCW isSpindleStopgroupSpindleControl isCoolantMistisCoolantFlood isCoolantStopgroupCoolantControl isToolLengthisToolLengthDynamicisToolLengthAddisToolLengthCancelgroupToolLengthOffsetisPauseisOptionalPauseisEnd isExchange groupStoppinggroupshasAxisgetAxisgetAxes getAxesToListhasXhasYhasZhasEhasParamgetParam hasFeedrategcodesmcodesrapidsmoves replaceClass replaceCode replaceAxis modifyAxis modifyAxeshasXYmodifyXYaddReplaceAxisreplaceXreplaceYreplaceZreplaceE addReplaceX addReplaceY addReplaceZ addReplaceE replaceParam modifyParamaddReplaceParamreplaceFeedratemodifyFeedratetravelinGroupknown updateModals appendAxes incompletetotalize totalizer totalize'updateFromEffectupdateIncompleteFromEffect emptyGroupsappendOnlyAxesrot roundprecupdateLimitsCode updateLimitsppGCode ppGCodeLineppGCodeCompactppGCodeLineCompactghc-prim GHC.TypesDoubleChar applyCodeMod ppGCodeStyleppGCodeLineStyleppGCodeCompactStyleppGCodeLineCompactStyle