[{"name":"Algorithm","comment":" Documentation to come\n\n@docs Algorithm, Turn, TurnDirection, TurnLength, Turnable, allTurnDirections, allTurnLengths, allTurnables, allTurns, append, appendTo, aufs, build, empty, extractInternals, fromString, inverse\n\n","unions":[{"name":"Algorithm","comment":" Placeholder\n","args":[],"cases":[]},{"name":"Turn","comment":" Placeholder\n","args":[],"cases":[["Turn",["Algorithm.Turnable","Algorithm.TurnLength","Algorithm.TurnDirection"]]]},{"name":"TurnDirection","comment":" Placeholder\n","args":[],"cases":[["Clockwise",[]],["CounterClockwise",[]]]},{"name":"TurnLength","comment":" Placeholder\n","args":[],"cases":[["OneQuarter",[]],["Halfway",[]],["ThreeQuarters",[]]]},{"name":"Turnable","comment":" Placeholder\n","args":[],"cases":[["U",[]],["D",[]],["L",[]],["R",[]],["F",[]],["B",[]],["M",[]],["S",[]],["E",[]],["X",[]],["Y",[]],["Z",[]]]}],"aliases":[],"values":[{"name":"allTurnDirections","comment":" All possible turn directions\n\n    List.length allTurnDirections --> 2\n\n","type":"List.List Algorithm.TurnDirection"},{"name":"allTurnLengths","comment":" All possible turn lengths\n\n    List.length allTurnLengths --> 3\n\n","type":"List.List Algorithm.TurnLength"},{"name":"allTurnables","comment":" All possible turnables\n\n    List.length allTurnables --> 12\n\n","type":"List.List Algorithm.Turnable"},{"name":"allTurns","comment":" All possible combinations of turnables, lengths and directions\n\n    List.length allTurns\n    --> List.length allTurnables * List.length allTurnLengths * List.length allTurnDirections\n\n","type":"List.List Algorithm.Turn"},{"name":"append","comment":" We append the first argument, so b ++ a\n","type":"Algorithm.Algorithm -> Algorithm.Algorithm -> Algorithm.Algorithm"},{"name":"appendTo","comment":" We append to the first argument, so a ++ b\n","type":"Algorithm.Algorithm -> Algorithm.Algorithm -> Algorithm.Algorithm"},{"name":"aufs","comment":" Placeholder\n","type":"List.Nonempty.Nonempty Algorithm.Algorithm"},{"name":"build","comment":" Placeholder\n","type":"List.List Algorithm.Turn -> Algorithm.Algorithm"},{"name":"empty","comment":" Placeholder\n","type":"Algorithm.Algorithm"},{"name":"extractInternals","comment":" Placeholder\n","type":"Algorithm.Algorithm -> List.List Algorithm.Turn"},{"name":"fromString","comment":" Placeholder\n","type":"String.String -> Result.Result String.String Algorithm.Algorithm"},{"name":"inverse","comment":" Placeholder\n","type":"Algorithm.Algorithm -> Algorithm.Algorithm"}],"binops":[]},{"name":"Cube","comment":" Documentation to come\n\n@docs Cube, applyAlgorithm, solved, viewUBLWithLetters, viewUFRNoLetters, viewUFRWithLetters\n\n","unions":[{"name":"Cube","comment":" Placeholder\n","args":[],"cases":[["Cube",["Internal.Cube.Cube"]]]}],"aliases":[],"values":[{"name":"applyAlgorithm","comment":" Placeholder\n","type":"Algorithm.Algorithm -> Cube.Cube -> Cube.Cube"},{"name":"solved","comment":" Placeholder\n","type":"Cube.Cube"},{"name":"viewUBLWithLetters","comment":" Placeholder\n","type":"Basics.Int -> Cube.Cube -> Html.Html msg"},{"name":"viewUFRNoLetters","comment":" Placeholder\n","type":"Basics.Int -> Cube.Cube -> Html.Html msg"},{"name":"viewUFRWithLetters","comment":" Placeholder\n","type":"Basics.Int -> Cube.Cube -> Html.Html msg"}],"binops":[]},{"name":"Cube.Advanced","comment":" Documentation to come\n\n@docs render\n\n","unions":[],"aliases":[],"values":[{"name":"render","comment":" Placeholder\n","type":"Cube.Cube -> Cube.Advanced.Types.Rendering"}],"binops":[]},{"name":"Cube.Advanced.Types","comment":" Documentation to come\n\n@docs Color, CubieRendering, Rendering\n\n","unions":[{"name":"Color","comment":" Placeholder\n","args":[],"cases":[["UpColor",[]],["DownColor",[]],["FrontColor",[]],["BackColor",[]],["LeftColor",[]],["RightColor",[]],["PlasticColor",[]]]}],"aliases":[{"name":"CubieRendering","comment":" Placeholder\n","args":[],"type":"{ u : Cube.Advanced.Types.Color, d : Cube.Advanced.Types.Color, f : Cube.Advanced.Types.Color, b : Cube.Advanced.Types.Color, l : Cube.Advanced.Types.Color, r : Cube.Advanced.Types.Color }"},{"name":"Rendering","comment":" Placeholder\n","args":[],"type":"{ ufr : Cube.Advanced.Types.CubieRendering, ufl : Cube.Advanced.Types.CubieRendering, ubl : Cube.Advanced.Types.CubieRendering, ubr : Cube.Advanced.Types.CubieRendering, dfr : Cube.Advanced.Types.CubieRendering, dfl : Cube.Advanced.Types.CubieRendering, dbl : Cube.Advanced.Types.CubieRendering, dbr : Cube.Advanced.Types.CubieRendering, uf : Cube.Advanced.Types.CubieRendering, df : Cube.Advanced.Types.CubieRendering, db : Cube.Advanced.Types.CubieRendering, ub : Cube.Advanced.Types.CubieRendering, ur : Cube.Advanced.Types.CubieRendering, ul : Cube.Advanced.Types.CubieRendering, dl : Cube.Advanced.Types.CubieRendering, dr : Cube.Advanced.Types.CubieRendering, fl : Cube.Advanced.Types.CubieRendering, fr : Cube.Advanced.Types.CubieRendering, br : Cube.Advanced.Types.CubieRendering, bl : Cube.Advanced.Types.CubieRendering, u : Cube.Advanced.Types.CubieRendering, d : Cube.Advanced.Types.CubieRendering, f : Cube.Advanced.Types.CubieRendering, b : Cube.Advanced.Types.CubieRendering, l : Cube.Advanced.Types.CubieRendering, r : Cube.Advanced.Types.CubieRendering }"}],"values":[],"binops":[]},{"name":"PLL","comment":" Documentation to come\n\n@docs Algorithms, PLL, allPlls, getAlg, getLetters, referenceAlgs\n\n","unions":[{"name":"PLL","comment":" Placeholder\n","args":[],"cases":[["H",[]],["Ua",[]],["Ub",[]],["Z",[]],["Aa",[]],["Ab",[]],["E",[]],["F",[]],["Ga",[]],["Gb",[]],["Gc",[]],["Gd",[]],["Ja",[]],["Jb",[]],["Na",[]],["Nb",[]],["Ra",[]],["Rb",[]],["T",[]],["V",[]],["Y",[]]]}],"aliases":[{"name":"Algorithms","comment":" Placeholder\n","args":[],"type":"{ h : Algorithm.Algorithm, ua : Algorithm.Algorithm, ub : Algorithm.Algorithm, z : Algorithm.Algorithm, aa : Algorithm.Algorithm, ab : Algorithm.Algorithm, e : Algorithm.Algorithm, f : Algorithm.Algorithm, ga : Algorithm.Algorithm, gb : Algorithm.Algorithm, gc : Algorithm.Algorithm, gd : Algorithm.Algorithm, ja : Algorithm.Algorithm, jb : Algorithm.Algorithm, na : Algorithm.Algorithm, nb : Algorithm.Algorithm, ra : Algorithm.Algorithm, rb : Algorithm.Algorithm, t : Algorithm.Algorithm, v : Algorithm.Algorithm, y : Algorithm.Algorithm }"}],"values":[{"name":"allPlls","comment":" A list of all the PLLs\n\n    import List.Nonempty\n\n    List.Nonempty.length allPlls --> 21\n\n","type":"List.Nonempty.Nonempty PLL.PLL"},{"name":"getAlg","comment":" Placeholder\n","type":"PLL.PLL -> Algorithm.Algorithm"},{"name":"getLetters","comment":" Placeholder\n","type":"PLL.PLL -> String.String"},{"name":"referenceAlgs","comment":" Plls verified to be correct so they can be used to verify user selected plls\nor for displaying a pll case somewhere on the site.\nThey have been chosen to be the optimally lowest move count in HTM just for a\nsmall performance boost. The example tests below are just meant for an easier\nto read version of all the algorithms that are verified to be correct\n\n    import Algorithm\n\n    -- Edges Only\n\n    Algorithm.fromString \"R2 U2 R U2 R2 U2 R2 U2 R U2 R2\"\n    --> Ok referenceAlgs.h\n\n    Algorithm.fromString \"F2 U' (L R') F2 (L' R) U' F2\"\n    --> Ok referenceAlgs.ua\n\n    Algorithm.fromString \"F2 U (R' L) F2 (R L') U F2\"\n    --> Ok referenceAlgs.ub\n\n    Algorithm.fromString \"R B' R' B F R' F B' R' B R F2\"\n    --> Ok referenceAlgs.z\n\n    -- Corners Only\n\n    Algorithm.fromString \"R' F R' B2 R F' R' B2 R2\"\n    --> Ok referenceAlgs.aa\n\n    Algorithm.fromString \"R B' R F2 R' B R F2 R2\"\n    --> Ok referenceAlgs.ab\n\n    Algorithm.fromString \"D R' D2 F' D L D' F D2 R D' F' L' F\"\n    --> Ok referenceAlgs.e\n\n    -- Corners And Edges\n\n    Algorithm.fromString \"L F R' F' L' F' D2 B' L' B D2 F' R F2\"\n    --> Ok referenceAlgs.f\n\n    Algorithm.fromString \"F2' D (R' U R' U' R) D' F2 L' U L\"\n    --> Ok referenceAlgs.ga\n\n    Algorithm.fromString \"R' U' R B2 D (L' U L U' L) D' B2\"\n    --> Ok referenceAlgs.gb\n\n    Algorithm.fromString \"R2' D' F U' F U F' D R2 B U' B'\"\n    --> Ok referenceAlgs.gc\n\n    Algorithm.fromString \"R U R' F2 D' (L U' L' U L') D F2\"\n    --> Ok referenceAlgs.gd\n\n    Algorithm.fromString \"B2 R' U' R B2 L' D L' D' L2\"\n    --> Ok referenceAlgs.ja\n\n    Algorithm.fromString \"B2 (L U L') B2 (R D' R D) R2\"\n    --> Ok referenceAlgs.jb\n\n    Algorithm.fromString \"L U' R U2 L' U R' L U' R U2 L' U R'\"\n    --> Ok referenceAlgs.na\n\n    Algorithm.fromString \"R' U L' U2 R U' L R' U L' U2 R U' L\"\n    --> Ok referenceAlgs.nb\n\n    Algorithm.fromString \"F2 R' F' U' F' U F R F' U2 F U2 F'\"\n    --> Ok referenceAlgs.ra\n\n    Algorithm.fromString \"R2 F R U R U' R' F' R U2 R' U2 R\"\n    --> Ok referenceAlgs.rb\n\n    Algorithm.fromString \"F2 D R2 U' R2 F2 D' L2 U L2\"\n    --> Ok referenceAlgs.t\n\n    Algorithm.fromString \"R' U R' U' B' R' B2 U' B' U B' R B R\"\n    --> Ok referenceAlgs.v\n\n    Algorithm.fromString \"F2 D R2 U R2 D' R' U' R F2 R' U R\"\n    --> Ok referenceAlgs.y\n\n","type":"PLL.Algorithms"}],"binops":[]}]