cubing 0.23.0 → 0.24.0-pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/{2x2x2.kpuzzle.json-JOGUSQ4N.js → 2x2x2.kpuzzle.json-U5KOZCMU.js} +11 -11
- package/dist/esm/2x2x2.kpuzzle.json-U5KOZCMU.js.map +7 -0
- package/dist/esm/{2x2x2.sgs.json-FRBWMMA7.js → 2x2x2.sgs.json-VLYEQLNB.js} +5 -5
- package/dist/esm/2x2x2.sgs.json-VLYEQLNB.js.map +7 -0
- package/dist/esm/{3d-Q4WSD4BC.js → 3d-KAC5GXA4.js} +4 -4
- package/dist/esm/{3d-Q4WSD4BC.js.map → 3d-KAC5GXA4.js.map} +0 -0
- package/dist/esm/bluetooth/index.js +39 -33
- package/dist/esm/bluetooth/index.js.map +2 -2
- package/dist/esm/{chunk-FK2SCC3Z.js → chunk-23FEDDYH.js} +33 -27
- package/dist/esm/chunk-23FEDDYH.js.map +7 -0
- package/dist/esm/{chunk-DK6PXBB2.js → chunk-25PPOENI.js} +66 -56
- package/dist/esm/chunk-25PPOENI.js.map +7 -0
- package/dist/esm/{chunk-XVZOMB6J.js → chunk-27KJGD3S.js} +15 -20
- package/dist/esm/chunk-27KJGD3S.js.map +7 -0
- package/dist/esm/{chunk-DPMEZY7V.js → chunk-DBWASN5Q.js} +19 -10
- package/dist/esm/chunk-DBWASN5Q.js.map +7 -0
- package/dist/esm/{chunk-PUPUQWJC.js → chunk-J2U2GRS4.js} +27 -32
- package/dist/esm/chunk-J2U2GRS4.js.map +7 -0
- package/dist/esm/{chunk-Z6X7HTPP.js → chunk-MQYHOXEK.js} +4 -4
- package/dist/esm/{chunk-Z6X7HTPP.js.map → chunk-MQYHOXEK.js.map} +2 -2
- package/dist/esm/chunk-PMAQZQHL.js +810 -0
- package/dist/esm/chunk-PMAQZQHL.js.map +7 -0
- package/dist/esm/{chunk-N3RNWU5T.js → chunk-PQKDEV4Z.js} +36 -51
- package/dist/esm/chunk-PQKDEV4Z.js.map +7 -0
- package/dist/esm/{chunk-JZWB7AIU.js → chunk-PYOHTUEC.js} +17 -10
- package/dist/esm/chunk-PYOHTUEC.js.map +7 -0
- package/dist/esm/chunk-W6AA6TVR.js +274 -0
- package/dist/esm/chunk-W6AA6TVR.js.map +7 -0
- package/dist/esm/{chunk-MLOCDLUF.js → chunk-YLKDBBMW.js} +13 -13
- package/dist/esm/{chunk-MLOCDLUF.js.map → chunk-YLKDBBMW.js.map} +2 -2
- package/dist/esm/{clock.kpuzzle.json-EKWRMHJM.js → clock.kpuzzle.json-J3YBOI3G.js} +7 -45
- package/dist/esm/clock.kpuzzle.json-J3YBOI3G.js.map +7 -0
- package/dist/esm/{entry-L6CE2HLF.js → entry-ZLEDRTCM.js} +172 -167
- package/dist/esm/entry-ZLEDRTCM.js.map +7 -0
- package/dist/esm/{fto.sgs.json-62YNULOK.js → fto.sgs.json-PUAEKD7W.js} +6 -14
- package/dist/esm/fto.sgs.json-PUAEKD7W.js.map +7 -0
- package/dist/esm/kpuzzle/index.js +5 -35
- package/dist/esm/megaminx.sgs.json-DPQBIFB6.js +16 -0
- package/dist/esm/{megaminx.sgs.json-PRL46G5J.js.map → megaminx.sgs.json-DPQBIFB6.js.map} +0 -0
- package/dist/esm/{module-entry-J2N3UZP7.js → module-entry-UAGINHYL.js} +2 -2
- package/dist/esm/{module-entry-J2N3UZP7.js.map → module-entry-UAGINHYL.js.map} +0 -0
- package/dist/esm/protocol/index.js +2 -1
- package/dist/esm/puzzle-geometry/index.js +3 -1
- package/dist/esm/puzzles/index.js +4 -4
- package/dist/esm/{pyraminx.sgs.json-7QMPT5XP.js → pyraminx.sgs.json-5UKE76QP.js} +5 -5
- package/dist/esm/{pyraminx.sgs.json-7QMPT5XP.js.map → pyraminx.sgs.json-5UKE76QP.js.map} +0 -0
- package/dist/esm/scramble/index.js +4 -4
- package/dist/esm/{scramble_444-JP3CWLJM.js → scramble_444-ZNWCGUX5.js} +4 -4
- package/dist/esm/{scramble_444-JP3CWLJM.js.map → scramble_444-ZNWCGUX5.js.map} +0 -0
- package/dist/esm/search/index.js +4 -4
- package/dist/esm/skewb.sgs.json-O2CG5ALM.js +16 -0
- package/dist/esm/{skewb.sgs.json-FWHYACJG.js.map → skewb.sgs.json-O2CG5ALM.js.map} +0 -0
- package/dist/esm/{sq1-hyperorbit.kpuzzle.json-N3FGCPML.js → sq1-hyperorbit.kpuzzle.json-AWDGN4ZW.js} +6 -6
- package/dist/esm/sq1-hyperorbit.kpuzzle.json-AWDGN4ZW.js.map +7 -0
- package/dist/esm/twisty/index.js +334 -227
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/worker-inside-generated-string-K4KJGMPV.js +3447 -0
- package/dist/esm/worker-inside-generated-string-K4KJGMPV.js.map +7 -0
- package/dist/types/alg/Alg.d.ts +0 -1
- package/dist/types/alg/Alg.spec.d.ts +0 -1
- package/dist/types/alg/AlgBuilder.d.ts +0 -1
- package/dist/types/alg/Serializable.d.ts +0 -1
- package/dist/types/alg/common.d.ts +0 -1
- package/dist/types/alg/debug.d.ts +0 -1
- package/dist/types/alg/example.d.ts +0 -1
- package/dist/types/alg/index.d.ts +0 -1
- package/dist/types/alg/is.d.ts +0 -1
- package/dist/types/alg/iteration.d.ts +0 -1
- package/dist/types/alg/keyboard.d.ts +0 -1
- package/dist/types/alg/limits.d.ts +0 -1
- package/dist/types/alg/operation.d.ts +0 -1
- package/dist/types/alg/operation.spec.d.ts +0 -1
- package/dist/types/alg/parse.d.ts +0 -1
- package/dist/types/alg/parse.spec.d.ts +0 -1
- package/dist/types/alg/test/alg-comparison.d.ts +0 -1
- package/dist/types/alg/test/alg.spec.d.ts +0 -1
- package/dist/types/alg/traversal.d.ts +0 -1
- package/dist/types/alg/units/QuantumWithAmount.d.ts +0 -1
- package/dist/types/alg/units/Unit.d.ts +0 -1
- package/dist/types/alg/units/containers/Commutator.d.ts +0 -1
- package/dist/types/alg/units/containers/Conjugate.d.ts +0 -1
- package/dist/types/alg/units/containers/Grouping.d.ts +0 -1
- package/dist/types/alg/units/index.d.ts +0 -1
- package/dist/types/alg/units/leaves/LineComment.d.ts +0 -1
- package/dist/types/alg/units/leaves/LineComment.spec.d.ts +0 -1
- package/dist/types/alg/units/leaves/Move.d.ts +0 -1
- package/dist/types/alg/units/leaves/Move.spec.d.ts +0 -1
- package/dist/types/alg/units/leaves/Newline.d.ts +0 -1
- package/dist/types/alg/units/leaves/Pause.d.ts +0 -1
- package/dist/types/alg/url.d.ts +0 -1
- package/dist/types/alg/url.spec.d.ts +0 -1
- package/dist/types/alg/validation.d.ts +0 -1
- package/dist/types/alg/warnOnce.d.ts +0 -1
- package/dist/types/bluetooth/connect/index.d.ts +0 -1
- package/dist/types/bluetooth/debug.d.ts +0 -1
- package/dist/types/bluetooth/index.d.ts +0 -1
- package/dist/types/bluetooth/keyboard.d.ts +5 -5
- package/dist/types/bluetooth/smart-puzzle/Heykube.d.ts +3 -3
- package/dist/types/bluetooth/smart-puzzle/bluetooth-puzzle.d.ts +3 -5
- package/dist/types/bluetooth/smart-puzzle/connect.d.ts +0 -1
- package/dist/types/bluetooth/smart-puzzle/endianness.d.ts +0 -1
- package/dist/types/bluetooth/smart-puzzle/gan.d.ts +5 -4
- package/dist/types/bluetooth/smart-puzzle/giiker.d.ts +3 -3
- package/dist/types/bluetooth/smart-puzzle/giiker.spec.d.ts +0 -1
- package/dist/types/bluetooth/smart-puzzle/gocube.d.ts +0 -1
- package/dist/types/bluetooth/smart-robot/GanRobot.d.ts +0 -1
- package/dist/types/bluetooth/smart-robot/index.d.ts +0 -1
- package/dist/types/bluetooth/smart-timer/GanTimer.d.ts +0 -1
- package/dist/types/bluetooth/smart-timer/index.d.ts +0 -1
- package/dist/types/bluetooth/transformer.d.ts +0 -1
- package/dist/types/cubing.bundle-global.d.ts +0 -1
- package/dist/types/cubing.bundle-global.exports.d.ts +0 -1
- package/dist/types/esm-test-worker.d.ts +0 -1
- package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.d.ts +2 -3
- package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.spec.d.ts +0 -1
- package/dist/types/kpuzzle/3x3x3/puzzle-orientation.d.ts +4 -0
- package/dist/types/kpuzzle/KPuzzle.d.ts +21 -0
- package/dist/types/kpuzzle/KPuzzleDefinition.d.ts +20 -0
- package/dist/types/kpuzzle/KState.d.ts +16 -0
- package/dist/types/kpuzzle/KTransformation.d.ts +20 -0
- package/dist/types/kpuzzle/calculate.d.ts +16 -0
- package/dist/types/kpuzzle/combine.d.ts +3 -0
- package/dist/types/kpuzzle/construct.d.ts +5 -0
- package/dist/types/kpuzzle/index.d.ts +6 -10
- package/dist/types/notation/CountAnimatedLeaves.d.ts +0 -1
- package/dist/types/notation/CountMoves.d.ts +0 -1
- package/dist/types/notation/index.d.ts +0 -1
- package/dist/types/protocol/binary/binary3x3x3.d.ts +5 -6
- package/dist/types/protocol/binary/binary3x3x3.spec.d.ts +0 -1
- package/dist/types/protocol/binary/hex.d.ts +0 -1
- package/dist/types/protocol/binary/hex.spec.d.ts +0 -1
- package/dist/types/protocol/binary/orbit-indexing.d.ts +0 -1
- package/dist/types/protocol/binary/orbit-indexing.spec.d.ts +0 -1
- package/dist/types/protocol/binary/puzzle-orientation.d.ts +4 -5
- package/dist/types/protocol/index.d.ts +0 -1
- package/dist/types/puzzle-geometry/FaceNameSwizzler.d.ts +0 -1
- package/dist/types/puzzle-geometry/Options.d.ts +0 -1
- package/dist/types/puzzle-geometry/PGPuzzles.d.ts +0 -1
- package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts +0 -1
- package/dist/types/puzzle-geometry/Perm.d.ts +0 -1
- package/dist/types/puzzle-geometry/PermOriSet.d.ts +4 -5
- package/dist/types/puzzle-geometry/PlatonicGenerator.d.ts +0 -1
- package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts +9 -3
- package/dist/types/puzzle-geometry/Quat.d.ts +0 -1
- package/dist/types/puzzle-geometry/Quat.spec.d.ts +0 -1
- package/dist/types/puzzle-geometry/SchreierSims.d.ts +0 -1
- package/dist/types/puzzle-geometry/index.d.ts +1 -1
- package/dist/types/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/NotationMapper.d.ts +3 -2
- package/dist/types/puzzle-geometry/notation-mapping/NullMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/index.d.ts +0 -1
- package/dist/types/puzzle-geometry/orientcenters.spec.d.ts +0 -1
- package/dist/types/puzzles/PuzzleLoader.d.ts +3 -3
- package/dist/types/puzzles/async/async-pg3d.d.ts +3 -3
- package/dist/types/puzzles/async/lazy-cached-kpuzzle.d.ts +2 -0
- package/dist/types/puzzles/customPGPuzzleLoader.d.ts +2 -3
- package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.json.d.ts +1 -2
- package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/2x2x2/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/3x3x3/3x3x3.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/3x3x3/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/clock/clock.kpuzzle.json.d.ts +1 -2
- package/dist/types/puzzles/implementations/clock/clock.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/clock/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/fto/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/megaminx/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/pyraminx/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.json.d.ts +0 -1
- package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/implementations/square1/index.d.ts +0 -1
- package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.json.d.ts +1 -2
- package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.svg.d.ts +0 -1
- package/dist/types/puzzles/index.d.ts +1 -2
- package/dist/types/puzzles/stickerings/appearance.d.ts +6 -7
- package/dist/types/puzzles/stickerings/cube-stickerings.d.ts +0 -1
- package/dist/types/puzzles/stickerings/fto-stickerings.d.ts +0 -1
- package/dist/types/puzzles/stickerings/global-custom-stickering-hack.d.ts +0 -1
- package/dist/types/puzzles/stickerings/megaminx-stickerings.d.ts +0 -1
- package/dist/types/scramble/index.d.ts +0 -1
- package/dist/types/search/esm-test-worker.d.ts +0 -1
- package/dist/types/search/index.d.ts +0 -1
- package/dist/types/search/inside/api.d.ts +6 -7
- package/dist/types/search/inside/api.spec.d.ts +0 -1
- package/dist/types/search/inside/entry.d.ts +0 -1
- package/dist/types/search/inside/inside-worker.d.ts +0 -1
- package/dist/types/search/inside/module-entry-path-getter.d.ts +0 -1
- package/dist/types/search/inside/module-entry.d.ts +0 -1
- package/dist/types/search/inside/solve/addOrientationSuffix.d.ts +0 -1
- package/dist/types/search/inside/solve/parseSGS.d.ts +3 -4
- package/dist/types/search/inside/solve/puzzles/2x2x2.d.ts +3 -4
- package/dist/types/search/inside/solve/puzzles/2x2x2.sgs.json.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3/convert.d.ts +2 -3
- package/dist/types/search/inside/solve/puzzles/3x3x3/filter.d.ts +4 -4
- package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts +3 -4
- package/dist/types/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3-inefficient.sgs.json.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/5x5x5.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/big-cubes.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/clock.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/fto.d.ts +2 -3
- package/dist/types/search/inside/solve/puzzles/fto.sgs.json.d.ts +0 -3
- package/dist/types/search/inside/solve/puzzles/megaminx.d.ts +2 -3
- package/dist/types/search/inside/solve/puzzles/megaminx.sgs.json.d.ts +2 -3
- package/dist/types/search/inside/solve/puzzles/pyraminx.d.ts +3 -4
- package/dist/types/search/inside/solve/puzzles/pyraminx.sgs.json.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/sgs-defs.spec.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/skewb.d.ts +3 -4
- package/dist/types/search/inside/solve/puzzles/skewb.sgs.json.d.ts +2 -3
- package/dist/types/search/inside/solve/puzzles/sq1.d.ts +0 -1
- package/dist/types/search/inside/solve/puzzles/wca-minx.d.ts +0 -1
- package/dist/types/search/inside/solve/tremble.d.ts +6 -6
- package/dist/types/search/instantiator.d.ts +0 -1
- package/dist/types/search/outside.d.ts +6 -7
- package/dist/types/search/worker-inside-generated-string.d.ts +1 -2
- package/dist/types/stream/index.d.ts +0 -1
- package/dist/types/stream/process/ReorientedStream.d.ts +1 -3
- package/dist/types/stream/proxy-event.d.ts +0 -1
- package/dist/types/stream/twizzle/TwizzleStream.d.ts +0 -1
- package/dist/types/stream/twizzle/stream-types.d.ts +0 -1
- package/dist/types/stream/websocket-proxy.d.ts +0 -1
- package/dist/types/twisty/controllers/AnimationTypes.d.ts +2 -3
- package/dist/types/twisty/controllers/RenderScheduler.d.ts +0 -1
- package/dist/types/twisty/controllers/TwistyAnimationController.d.ts +0 -1
- package/dist/types/twisty/controllers/TwistyPlayerController.d.ts +0 -1
- package/dist/types/twisty/controllers/easing.d.ts +0 -1
- package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts +0 -1
- package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts +6 -6
- package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts +7 -7
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +8 -8
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts +9 -9
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts +0 -1
- package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts +36 -37
- package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts +7 -7
- package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts +0 -1
- package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts +0 -1
- package/dist/types/twisty/heavy-code-imports/3d.d.ts +0 -1
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts +0 -1
- package/dist/types/twisty/index.d.ts +1 -2
- package/dist/types/twisty/model/PromiseFreshener.d.ts +0 -1
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts +6 -7
- package/dist/types/twisty/model/UserVisibleErrorTracker.d.ts +0 -1
- package/dist/types/twisty/model/helpers.d.ts +0 -1
- package/dist/types/twisty/model/props/TwistyProp.d.ts +0 -1
- package/dist/types/twisty/model/props/TwistyProp.spec.d.ts +0 -1
- package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +0 -1
- package/dist/types/twisty/model/props/general/URLProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/display/SpriteProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/AlgProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts +5 -8
- package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts +5 -7
- package/dist/types/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/{CurrentLeavesProp.d.ts → CurrentMoveInfoProp.d.ts} +2 -3
- package/dist/types/twisty/model/props/puzzle/state/CurrentStateProp.d.ts +14 -0
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +7 -8
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts +5 -6
- package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +2 -3
- package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +4 -5
- package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/KPuzzleProp.d.ts +10 -0
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +0 -1
- package/dist/types/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts +0 -1
- package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +0 -1
- package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts +0 -1
- package/dist/types/twisty/model/props/timeline/TempoScaleProp.d.ts +0 -1
- package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/ButtonAppearanceProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/LatitudeLimit.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts +2 -3
- package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts +0 -1
- package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +0 -1
- package/dist/types/twisty/views/2D/KPuzzleSVGWrapper.d.ts +17 -0
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts +0 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts +4 -4
- package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +0 -1
- package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +0 -1
- package/dist/types/twisty/views/3D/DragTracker.d.ts +0 -1
- package/dist/types/twisty/views/3D/RendererPool.d.ts +0 -1
- package/dist/types/twisty/views/3D/TAU.d.ts +0 -1
- package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +0 -1
- package/dist/types/twisty/views/3D/Twisty3DRenderTarget.d.ts +0 -1
- package/dist/types/twisty/views/3D/Twisty3DScene.d.ts +0 -1
- package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts +0 -1
- package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts +0 -1
- package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts +0 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts +0 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts +0 -1
- package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts +4 -5
- package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts +5 -6
- package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +0 -1
- package/dist/types/twisty/views/ClassListManager.d.ts +0 -1
- package/dist/types/twisty/views/ManagedCustomElement.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/model.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts +0 -1
- package/dist/types/twisty/views/TwistyAlgViewer.d.ts +0 -1
- package/dist/types/twisty/views/TwistyPlayer.css.d.ts +0 -1
- package/dist/types/twisty/views/TwistyPlayer.d.ts +0 -1
- package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +0 -1
- package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts +0 -1
- package/dist/types/twisty/views/canvas.d.ts +0 -1
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts +0 -1
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts +0 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts +0 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts +0 -1
- package/dist/types/twisty/views/control-panel/webkit-fullscreen.d.ts +0 -1
- package/dist/types/twisty/views/document.d.ts +0 -1
- package/dist/types/twisty/views/node-custom-element-shims.d.ts +0 -1
- package/dist/types/twisty/views/screenshot.d.ts +0 -1
- package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts +0 -1
- package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts +0 -1
- package/dist/types/vendor/comlink-everywhere/inside/index.d.ts +0 -1
- package/dist/types/vendor/comlink-everywhere/inside/node.d.ts +0 -1
- package/dist/types/vendor/comlink-everywhere/outside/index.d.ts +0 -1
- package/dist/types/vendor/comlink-everywhere/outside/node.d.ts +0 -1
- package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts +0 -1
- package/dist/types/vendor/cstimer/src/js/scramble/scramble_444.d.ts +0 -1
- package/dist/types/vendor/min2phase/gwt.d.ts +0 -1
- package/dist/types/vendor/p-lazy/p-lazy.d.ts +0 -1
- package/dist/types/vendor/random-uint-below/get-random-values.d.ts +0 -1
- package/dist/types/vendor/random-uint-below/index.d.ts +0 -1
- package/dist/types/vendor/random-uint-below/random-choice.d.ts +0 -1
- package/dist/types/vendor/random-uint-below/random53BitValue.d.ts +0 -1
- package/dist/types/vendor/sq12phase/scramble_sq1.d.ts +0 -1
- package/dist/types/vendor/three/examples/jsm/libs/stats.modified.module.d.ts +0 -1
- package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts +0 -1
- package/package.json +3 -4
- package/dist/bin/order.js +0 -16675
- package/dist/bin/order.js.map +0 -7
- package/dist/bin/puzzle-geometry-bin.js +0 -5444
- package/dist/bin/puzzle-geometry-bin.js.map +0 -7
- package/dist/bundle-global/cubing.bundle-global.js +0 -10432
- package/dist/esm/2x2x2.kpuzzle.json-JOGUSQ4N.js.map +0 -7
- package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js.map +0 -7
- package/dist/esm/chunk-DK6PXBB2.js.map +0 -7
- package/dist/esm/chunk-DPMEZY7V.js.map +0 -7
- package/dist/esm/chunk-FK2SCC3Z.js.map +0 -7
- package/dist/esm/chunk-JZWB7AIU.js.map +0 -7
- package/dist/esm/chunk-N3RNWU5T.js.map +0 -7
- package/dist/esm/chunk-PUPUQWJC.js.map +0 -7
- package/dist/esm/chunk-X6JHXPDX.js +0 -2359
- package/dist/esm/chunk-X6JHXPDX.js.map +0 -7
- package/dist/esm/chunk-XVZOMB6J.js.map +0 -7
- package/dist/esm/clock.kpuzzle.json-EKWRMHJM.js.map +0 -7
- package/dist/esm/entry-L6CE2HLF.js.map +0 -7
- package/dist/esm/fto.sgs.json-62YNULOK.js.map +0 -7
- package/dist/esm/megaminx.sgs.json-PRL46G5J.js +0 -16
- package/dist/esm/skewb.sgs.json-FWHYACJG.js +0 -16
- package/dist/esm/sq1-hyperorbit.kpuzzle.json-N3FGCPML.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js +0 -3450
- package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js.map +0 -7
- package/dist/types/alg/Alg.d.ts.map +0 -1
- package/dist/types/alg/Alg.spec.d.ts.map +0 -1
- package/dist/types/alg/AlgBuilder.d.ts.map +0 -1
- package/dist/types/alg/Serializable.d.ts.map +0 -1
- package/dist/types/alg/common.d.ts.map +0 -1
- package/dist/types/alg/debug.d.ts.map +0 -1
- package/dist/types/alg/example.d.ts.map +0 -1
- package/dist/types/alg/index.d.ts.map +0 -1
- package/dist/types/alg/is.d.ts.map +0 -1
- package/dist/types/alg/iteration.d.ts.map +0 -1
- package/dist/types/alg/keyboard.d.ts.map +0 -1
- package/dist/types/alg/limits.d.ts.map +0 -1
- package/dist/types/alg/operation.d.ts.map +0 -1
- package/dist/types/alg/operation.spec.d.ts.map +0 -1
- package/dist/types/alg/parse.d.ts.map +0 -1
- package/dist/types/alg/parse.spec.d.ts.map +0 -1
- package/dist/types/alg/test/alg-comparison.d.ts.map +0 -1
- package/dist/types/alg/test/alg.spec.d.ts.map +0 -1
- package/dist/types/alg/traversal.d.ts.map +0 -1
- package/dist/types/alg/units/QuantumWithAmount.d.ts.map +0 -1
- package/dist/types/alg/units/Unit.d.ts.map +0 -1
- package/dist/types/alg/units/containers/Commutator.d.ts.map +0 -1
- package/dist/types/alg/units/containers/Conjugate.d.ts.map +0 -1
- package/dist/types/alg/units/containers/Grouping.d.ts.map +0 -1
- package/dist/types/alg/units/index.d.ts.map +0 -1
- package/dist/types/alg/units/leaves/LineComment.d.ts.map +0 -1
- package/dist/types/alg/units/leaves/LineComment.spec.d.ts.map +0 -1
- package/dist/types/alg/units/leaves/Move.d.ts.map +0 -1
- package/dist/types/alg/units/leaves/Move.spec.d.ts.map +0 -1
- package/dist/types/alg/units/leaves/Newline.d.ts.map +0 -1
- package/dist/types/alg/units/leaves/Pause.d.ts.map +0 -1
- package/dist/types/alg/url.d.ts.map +0 -1
- package/dist/types/alg/url.spec.d.ts.map +0 -1
- package/dist/types/alg/validation.d.ts.map +0 -1
- package/dist/types/alg/warnOnce.d.ts.map +0 -1
- package/dist/types/bluetooth/connect/index.d.ts.map +0 -1
- package/dist/types/bluetooth/debug.d.ts.map +0 -1
- package/dist/types/bluetooth/index.d.ts.map +0 -1
- package/dist/types/bluetooth/keyboard.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/Heykube.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/bluetooth-puzzle.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/connect.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/endianness.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/gan.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/giiker.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/giiker.spec.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-puzzle/gocube.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-robot/GanRobot.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-robot/index.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-timer/GanTimer.d.ts.map +0 -1
- package/dist/types/bluetooth/smart-timer/index.d.ts.map +0 -1
- package/dist/types/bluetooth/transformer.d.ts.map +0 -1
- package/dist/types/cubing.bundle-global.d.ts.map +0 -1
- package/dist/types/cubing.bundle-global.exports.d.ts.map +0 -1
- package/dist/types/esm-test-worker.d.ts.map +0 -1
- package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.d.ts.map +0 -1
- package/dist/types/kpuzzle/3x3x3/3x3x3.kpuzzle.json.spec.d.ts.map +0 -1
- package/dist/types/kpuzzle/canon.spec.d.ts +0 -2
- package/dist/types/kpuzzle/canon.spec.d.ts.map +0 -1
- package/dist/types/kpuzzle/canonicalize.d.ts +0 -55
- package/dist/types/kpuzzle/canonicalize.d.ts.map +0 -1
- package/dist/types/kpuzzle/definition_types.d.ts +0 -19
- package/dist/types/kpuzzle/definition_types.d.ts.map +0 -1
- package/dist/types/kpuzzle/index.d.ts.map +0 -1
- package/dist/types/kpuzzle/kpuzzle.d.ts +0 -17
- package/dist/types/kpuzzle/kpuzzle.d.ts.map +0 -1
- package/dist/types/kpuzzle/kpuzzle.spec.d.ts +0 -2
- package/dist/types/kpuzzle/kpuzzle.spec.d.ts.map +0 -1
- package/dist/types/kpuzzle/move_notation.d.ts +0 -6
- package/dist/types/kpuzzle/move_notation.d.ts.map +0 -1
- package/dist/types/kpuzzle/parser/index.d.ts +0 -2
- package/dist/types/kpuzzle/parser/index.d.ts.map +0 -1
- package/dist/types/kpuzzle/parser/parser-peggy.d.ts +0 -15
- package/dist/types/kpuzzle/parser/parser-peggy.d.ts.map +0 -1
- package/dist/types/kpuzzle/parser/parser-shim.d.ts +0 -4
- package/dist/types/kpuzzle/parser/parser-shim.d.ts.map +0 -1
- package/dist/types/kpuzzle/parser/parser.d.ts +0 -1
- package/dist/types/kpuzzle/parser/parser.d.ts.map +0 -1
- package/dist/types/kpuzzle/prunetable.spec.d.ts +0 -2
- package/dist/types/kpuzzle/prunetable.spec.d.ts.map +0 -1
- package/dist/types/kpuzzle/pruningtable.d.ts +0 -16
- package/dist/types/kpuzzle/pruningtable.d.ts.map +0 -1
- package/dist/types/kpuzzle/puzzle-orientation.d.ts +0 -5
- package/dist/types/kpuzzle/puzzle-orientation.d.ts.map +0 -1
- package/dist/types/kpuzzle/svg.d.ts +0 -18
- package/dist/types/kpuzzle/svg.d.ts.map +0 -1
- package/dist/types/kpuzzle/transformations.d.ts +0 -13
- package/dist/types/kpuzzle/transformations.d.ts.map +0 -1
- package/dist/types/kpuzzle/transformations.spec.d.ts +0 -2
- package/dist/types/kpuzzle/transformations.spec.d.ts.map +0 -1
- package/dist/types/notation/CountAnimatedLeaves.d.ts.map +0 -1
- package/dist/types/notation/CountMoves.d.ts.map +0 -1
- package/dist/types/notation/index.d.ts.map +0 -1
- package/dist/types/protocol/binary/binary3x3x3.d.ts.map +0 -1
- package/dist/types/protocol/binary/binary3x3x3.spec.d.ts.map +0 -1
- package/dist/types/protocol/binary/hex.d.ts.map +0 -1
- package/dist/types/protocol/binary/hex.spec.d.ts.map +0 -1
- package/dist/types/protocol/binary/orbit-indexing.d.ts.map +0 -1
- package/dist/types/protocol/binary/orbit-indexing.spec.d.ts.map +0 -1
- package/dist/types/protocol/binary/puzzle-orientation.d.ts.map +0 -1
- package/dist/types/protocol/index.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/FaceNameSwizzler.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/Options.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/PGPuzzles.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/PGPuzzles.spec.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/Perm.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/PermOriSet.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/PlatonicGenerator.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/PuzzleGeometry.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/Quat.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/Quat.spec.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/SchreierSims.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/index.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/interfaces.d.ts +0 -6
- package/dist/types/puzzle-geometry/interfaces.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/NotationMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/NullMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/notation-mapping/index.d.ts.map +0 -1
- package/dist/types/puzzle-geometry/orientcenters.spec.d.ts.map +0 -1
- package/dist/types/puzzles/PuzzleLoader.d.ts.map +0 -1
- package/dist/types/puzzles/async/async-pg3d.d.ts.map +0 -1
- package/dist/types/puzzles/customPGPuzzleLoader.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.json.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/2x2x2/2x2x2.kpuzzle.svg.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/2x2x2/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/3x3x3/3x3x3.kpuzzle.svg.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/3x3x3/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/clock/clock.kpuzzle.json.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/clock/clock.kpuzzle.svg.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/clock/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/fto/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/megaminx/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/pyraminx/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.json.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/square1/index.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.json.d.ts.map +0 -1
- package/dist/types/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.svg.d.ts.map +0 -1
- package/dist/types/puzzles/index.d.ts.map +0 -1
- package/dist/types/puzzles/stickerings/appearance.d.ts.map +0 -1
- package/dist/types/puzzles/stickerings/cube-stickerings.d.ts.map +0 -1
- package/dist/types/puzzles/stickerings/fto-stickerings.d.ts.map +0 -1
- package/dist/types/puzzles/stickerings/global-custom-stickering-hack.d.ts.map +0 -1
- package/dist/types/puzzles/stickerings/megaminx-stickerings.d.ts.map +0 -1
- package/dist/types/scramble/index.d.ts.map +0 -1
- package/dist/types/search/esm-test-worker.d.ts.map +0 -1
- package/dist/types/search/index.d.ts.map +0 -1
- package/dist/types/search/inside/api.d.ts.map +0 -1
- package/dist/types/search/inside/api.spec.d.ts.map +0 -1
- package/dist/types/search/inside/entry.d.ts.map +0 -1
- package/dist/types/search/inside/inside-worker.d.ts.map +0 -1
- package/dist/types/search/inside/module-entry-path-getter.d.ts.map +0 -1
- package/dist/types/search/inside/module-entry.d.ts.map +0 -1
- package/dist/types/search/inside/solve/addOrientationSuffix.d.ts.map +0 -1
- package/dist/types/search/inside/solve/parseSGS.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/2x2x2.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/2x2x2.sgs.json.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3/convert.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3/filter.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/3x3x3-inefficient.sgs.json.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/5x5x5.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/big-cubes.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/clock.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/fto.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/fto.sgs.json.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/megaminx.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/megaminx.sgs.json.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/pyraminx.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/pyraminx.sgs.json.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/sgs-defs.spec.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/skewb.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/skewb.sgs.json.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/sq1.d.ts.map +0 -1
- package/dist/types/search/inside/solve/puzzles/wca-minx.d.ts.map +0 -1
- package/dist/types/search/inside/solve/tremble.d.ts.map +0 -1
- package/dist/types/search/instantiator.d.ts.map +0 -1
- package/dist/types/search/outside.d.ts.map +0 -1
- package/dist/types/search/worker-inside-generated-string.d.ts.map +0 -1
- package/dist/types/stream/index.d.ts.map +0 -1
- package/dist/types/stream/process/ReorientedStream.d.ts.map +0 -1
- package/dist/types/stream/proxy-event.d.ts.map +0 -1
- package/dist/types/stream/twizzle/TwizzleStream.d.ts.map +0 -1
- package/dist/types/stream/twizzle/stream-types.d.ts.map +0 -1
- package/dist/types/stream/websocket-proxy.d.ts.map +0 -1
- package/dist/types/twisty/controllers/AnimationTypes.d.ts.map +0 -1
- package/dist/types/twisty/controllers/RenderScheduler.d.ts.map +0 -1
- package/dist/types/twisty/controllers/TwistyAnimationController.d.ts.map +0 -1
- package/dist/types/twisty/controllers/TwistyPlayerController.d.ts.map +0 -1
- package/dist/types/twisty/controllers/easing.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/AlgDuration.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/AlgIndexer.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/SimpleAlgIndexer.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/tree/AlgWalker.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts.map +0 -1
- package/dist/types/twisty/controllers/indexer/tree/chunkAlgs.d.ts.map +0 -1
- package/dist/types/twisty/controllers/stream/timeline-move-calculation-draft.d.ts.map +0 -1
- package/dist/types/twisty/heavy-code-imports/3d.d.ts.map +0 -1
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/3d.d.ts.map +0 -1
- package/dist/types/twisty/index.d.ts.map +0 -1
- package/dist/types/twisty/model/PromiseFreshener.d.ts.map +0 -1
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts.map +0 -1
- package/dist/types/twisty/model/UserVisibleErrorTracker.d.ts.map +0 -1
- package/dist/types/twisty/model/helpers.d.ts.map +0 -1
- package/dist/types/twisty/model/props/TwistyProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/TwistyProp.spec.d.ts.map +0 -1
- package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts.map +0 -1
- package/dist/types/twisty/model/props/general/URLProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/display/HintFaceletProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/display/SpriteProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/display/StickeringProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/AlgProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/AnchoredStartProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts +0 -15
- package/dist/types/twisty/model/props/puzzle/state/CurrentTransformationProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/IndexerProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/MovePressInputProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleDefProp.d.ts +0 -11
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleDefProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/timeline/PlayingInfoProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/timeline/TempoScaleProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/timeline/TimestampRequestProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/BackViewProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/BackgroundProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/ButtonAppearanceProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/ControlPanelProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/LatitudeLimit.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/TimeRangeProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/VisualizationProp.d.ts.map +0 -1
- package/dist/types/twisty/model/props/viewer/VisualizationStrategyProp.d.ts.map +0 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.css.d.ts.map +0 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzle.d.ts.map +0 -1
- package/dist/types/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts.map +0 -1
- package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/DragTracker.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/RendererPool.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/TAU.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/Twisty3DRenderTarget.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/Twisty3DScene.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/Twisty3DSceneWrapper.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/Twisty3DVantage.css.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/Twisty3DVantage.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControls.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/TwistyOrbitControls.spec.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/puzzles/Cube3D.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/puzzles/KPuzzleWrapper.d.ts +0 -48
- package/dist/types/twisty/views/3D/puzzles/KPuzzleWrapper.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/puzzles/PG3D.d.ts.map +0 -1
- package/dist/types/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts.map +0 -1
- package/dist/types/twisty/views/ClassListManager.d.ts.map +0 -1
- package/dist/types/twisty/views/ManagedCustomElement.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/LeafTokens.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgEditor/model.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgViewer.css.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyAlgViewer.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyPlayer.css.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyPlayer.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyPlayerSettable.d.ts.map +0 -1
- package/dist/types/twisty/views/TwistyViewerWrapper.css.d.ts.map +0 -1
- package/dist/types/twisty/views/canvas.d.ts.map +0 -1
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.css.d.ts.map +0 -1
- package/dist/types/twisty/views/control-panel/TwistyButtonsV2.d.ts.map +0 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubber.css.d.ts.map +0 -1
- package/dist/types/twisty/views/control-panel/TwistyScrubberV2.d.ts.map +0 -1
- package/dist/types/twisty/views/control-panel/webkit-fullscreen.d.ts.map +0 -1
- package/dist/types/twisty/views/document.d.ts.map +0 -1
- package/dist/types/twisty/views/node-custom-element-shims.d.ts.map +0 -1
- package/dist/types/twisty/views/screenshot.d.ts.map +0 -1
- package/dist/types/twisty/views/stream/TwistyStreamSource.css.d.ts.map +0 -1
- package/dist/types/twisty/views/stream/TwistyStreamSource.d.ts.map +0 -1
- package/dist/types/vendor/comlink-everywhere/inside/index.d.ts.map +0 -1
- package/dist/types/vendor/comlink-everywhere/inside/node.d.ts.map +0 -1
- package/dist/types/vendor/comlink-everywhere/outside/index.d.ts.map +0 -1
- package/dist/types/vendor/comlink-everywhere/outside/node.d.ts.map +0 -1
- package/dist/types/vendor/cstimer/src/js/lib/mathlib.d.ts.map +0 -1
- package/dist/types/vendor/cstimer/src/js/scramble/scramble_444.d.ts.map +0 -1
- package/dist/types/vendor/min2phase/gwt.d.ts.map +0 -1
- package/dist/types/vendor/p-lazy/p-lazy.d.ts.map +0 -1
- package/dist/types/vendor/random-uint-below/get-random-values.d.ts.map +0 -1
- package/dist/types/vendor/random-uint-below/index.d.ts.map +0 -1
- package/dist/types/vendor/random-uint-below/random-choice.d.ts.map +0 -1
- package/dist/types/vendor/random-uint-below/random53BitValue.d.ts.map +0 -1
- package/dist/types/vendor/sq12phase/scramble_sq1.d.ts.map +0 -1
- package/dist/types/vendor/three/examples/jsm/libs/stats.modified.module.d.ts.map +0 -1
- package/dist/types/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts.map +0 -1
- package/docs/.DS_Store +0 -0
- package/docs/CNAME +0 -1
- package/docs/cubing/.DS_Store +0 -0
- package/docs/cubing/alg/index.html +0 -174
- package/docs/cubing/api/index.html +0 -158
- package/docs/cubing/index.html +0 -191
- package/docs/cubing/scramble/index.html +0 -138
- package/docs/cubing/twisty/index.html +0 -329
- package/docs/favicon.ico +0 -0
- package/docs/index.html +0 -20
- package/docs/main.css +0 -193
- package/src/cubing/.DS_Store +0 -0
- package/src/cubing/alg/Alg.spec.ts +0 -10
- package/src/cubing/alg/Alg.ts +0 -290
- package/src/cubing/alg/AlgBuilder.ts +0 -33
- package/src/cubing/alg/Serializable.ts +0 -29
- package/src/cubing/alg/common.ts +0 -59
- package/src/cubing/alg/debug.ts +0 -27
- package/src/cubing/alg/example.ts +0 -152
- package/src/cubing/alg/index.ts +0 -21
- package/src/cubing/alg/is.ts +0 -38
- package/src/cubing/alg/iteration.ts +0 -45
- package/src/cubing/alg/keyboard.ts +0 -48
- package/src/cubing/alg/limits.ts +0 -4
- package/src/cubing/alg/operation.spec.ts +0 -48
- package/src/cubing/alg/operation.ts +0 -36
- package/src/cubing/alg/parse.spec.ts +0 -75
- package/src/cubing/alg/parse.ts +0 -408
- package/src/cubing/alg/test/alg-comparison.ts +0 -23
- package/src/cubing/alg/test/alg.spec.ts +0 -348
- package/src/cubing/alg/traversal.ts +0 -284
- package/src/cubing/alg/units/QuantumWithAmount.ts +0 -55
- package/src/cubing/alg/units/Unit.ts +0 -11
- package/src/cubing/alg/units/containers/Commutator.ts +0 -85
- package/src/cubing/alg/units/containers/Conjugate.ts +0 -53
- package/src/cubing/alg/units/containers/Grouping.ts +0 -116
- package/src/cubing/alg/units/index.ts +0 -8
- package/src/cubing/alg/units/leaves/LineComment.spec.ts +0 -35
- package/src/cubing/alg/units/leaves/LineComment.ts +0 -48
- package/src/cubing/alg/units/leaves/Move.spec.ts +0 -15
- package/src/cubing/alg/units/leaves/Move.ts +0 -265
- package/src/cubing/alg/units/leaves/Newline.ts +0 -24
- package/src/cubing/alg/units/leaves/Pause.ts +0 -24
- package/src/cubing/alg/url.spec.ts +0 -10
- package/src/cubing/alg/url.ts +0 -133
- package/src/cubing/alg/validation.ts +0 -62
- package/src/cubing/alg/warnOnce.ts +0 -7
- package/src/cubing/bluetooth/connect/index.ts +0 -93
- package/src/cubing/bluetooth/debug.ts +0 -18
- package/src/cubing/bluetooth/docs/gan-robot.md +0 -60
- package/src/cubing/bluetooth/docs/gan356i.md +0 -309
- package/src/cubing/bluetooth/index.ts +0 -19
- package/src/cubing/bluetooth/keyboard.ts +0 -55
- package/src/cubing/bluetooth/smart-puzzle/Heykube.ts +0 -165
- package/src/cubing/bluetooth/smart-puzzle/bluetooth-puzzle.ts +0 -95
- package/src/cubing/bluetooth/smart-puzzle/connect.ts +0 -19
- package/src/cubing/bluetooth/smart-puzzle/endianness.ts +0 -15
- package/src/cubing/bluetooth/smart-puzzle/gan.ts +0 -484
- package/src/cubing/bluetooth/smart-puzzle/giiker.spec.ts +0 -28
- package/src/cubing/bluetooth/smart-puzzle/giiker.ts +0 -277
- package/src/cubing/bluetooth/smart-puzzle/gocube.ts +0 -167
- package/src/cubing/bluetooth/smart-robot/GanRobot.ts +0 -311
- package/src/cubing/bluetooth/smart-robot/index.ts +0 -13
- package/src/cubing/bluetooth/smart-timer/GanTimer.ts +0 -141
- package/src/cubing/bluetooth/smart-timer/index.ts +0 -13
- package/src/cubing/bluetooth/transformer.ts +0 -74
- package/src/cubing/cubing.bundle-global.exports.ts +0 -25
- package/src/cubing/cubing.bundle-global.ts +0 -7
- package/src/cubing/esm-test-worker.js +0 -5
- package/src/cubing/kpuzzle/3x3x3/3x3x3.kpuzzle.json.spec.ts +0 -40
- package/src/cubing/kpuzzle/3x3x3/3x3x3.kpuzzle.json.ts +0 -339
- package/src/cubing/kpuzzle/canon.spec.ts +0 -48
- package/src/cubing/kpuzzle/canonicalize.ts +0 -325
- package/src/cubing/kpuzzle/definition_types.ts +0 -23
- package/src/cubing/kpuzzle/index.ts +0 -33
- package/src/cubing/kpuzzle/kpuzzle.spec.ts +0 -12
- package/src/cubing/kpuzzle/kpuzzle.ts +0 -124
- package/src/cubing/kpuzzle/move_notation.ts +0 -9
- package/src/cubing/kpuzzle/parser/index.ts +0 -1
- package/src/cubing/kpuzzle/parser/parser-peggy.js +0 -1221
- package/src/cubing/kpuzzle/parser/parser-peggy.peggy +0 -72
- package/src/cubing/kpuzzle/parser/parser-shim.ts +0 -11
- package/src/cubing/kpuzzle/parser/parser.js +0 -0
- package/src/cubing/kpuzzle/prunetable.spec.ts +0 -19
- package/src/cubing/kpuzzle/pruningtable.ts +0 -99
- package/src/cubing/kpuzzle/puzzle-orientation.ts +0 -34
- package/src/cubing/kpuzzle/svg.ts +0 -290
- package/src/cubing/kpuzzle/transformations.spec.ts +0 -75
- package/src/cubing/kpuzzle/transformations.ts +0 -258
- package/src/cubing/notation/CountAnimatedLeaves.ts +0 -56
- package/src/cubing/notation/CountMoves.ts +0 -89
- package/src/cubing/notation/index.ts +0 -4
- package/src/cubing/protocol/binary/binary3x3x3.spec.ts +0 -143
- package/src/cubing/protocol/binary/binary3x3x3.ts +0 -226
- package/src/cubing/protocol/binary/hex.spec.ts +0 -17
- package/src/cubing/protocol/binary/hex.ts +0 -12
- package/src/cubing/protocol/binary/orbit-indexing.spec.ts +0 -49
- package/src/cubing/protocol/binary/orbit-indexing.ts +0 -68
- package/src/cubing/protocol/binary/puzzle-orientation.ts +0 -69
- package/src/cubing/protocol/index.ts +0 -12
- package/src/cubing/puzzle-geometry/FaceNameSwizzler.ts +0 -148
- package/src/cubing/puzzle-geometry/Options.ts +0 -179
- package/src/cubing/puzzle-geometry/PGPuzzles.spec.ts +0 -127
- package/src/cubing/puzzle-geometry/PGPuzzles.ts +0 -80
- package/src/cubing/puzzle-geometry/Perm.ts +0 -154
- package/src/cubing/puzzle-geometry/PermOriSet.ts +0 -765
- package/src/cubing/puzzle-geometry/PlatonicGenerator.ts +0 -146
- package/src/cubing/puzzle-geometry/PuzzleGeometry.ts +0 -3013
- package/src/cubing/puzzle-geometry/Quat.spec.ts +0 -10
- package/src/cubing/puzzle-geometry/Quat.ts +0 -325
- package/src/cubing/puzzle-geometry/SchreierSims.ts +0 -144
- package/src/cubing/puzzle-geometry/index.ts +0 -17
- package/src/cubing/puzzle-geometry/interfaces.ts +0 -6
- package/src/cubing/puzzle-geometry/notation-mapping/FTONotationMapper.ts +0 -38
- package/src/cubing/puzzle-geometry/notation-mapping/FaceRenamingMapper.ts +0 -59
- package/src/cubing/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.ts +0 -50
- package/src/cubing/puzzle-geometry/notation-mapping/NotationMapper.ts +0 -6
- package/src/cubing/puzzle-geometry/notation-mapping/NullMapper.ts +0 -12
- package/src/cubing/puzzle-geometry/notation-mapping/NxNxNCubeMapper.ts +0 -77
- package/src/cubing/puzzle-geometry/notation-mapping/PyraminxNotationMapper.ts +0 -121
- package/src/cubing/puzzle-geometry/notation-mapping/SkewbNotationMapper.ts +0 -103
- package/src/cubing/puzzle-geometry/notation-mapping/index.ts +0 -13
- package/src/cubing/puzzle-geometry/orientcenters.spec.ts +0 -55
- package/src/cubing/puzzles/PuzzleLoader.ts +0 -20
- package/src/cubing/puzzles/async/async-pg3d.ts +0 -73
- package/src/cubing/puzzles/customPGPuzzleLoader.ts +0 -60
- package/src/cubing/puzzles/implementations/2x2x2/2x2x2.kpuzzle.json.ts +0 -92
- package/src/cubing/puzzles/implementations/2x2x2/2x2x2.kpuzzle.svg.ts +0 -45
- package/src/cubing/puzzles/implementations/2x2x2/index.ts +0 -25
- package/src/cubing/puzzles/implementations/2x2x2/svg/2x2x2.kpuzzle.svg +0 -45
- package/src/cubing/puzzles/implementations/3x3x3/3x3x3-ll.kpuzzle.svg.ts +0 -108
- package/src/cubing/puzzles/implementations/3x3x3/3x3x3.kpuzzle.svg.ts +0 -128
- package/src/cubing/puzzles/implementations/3x3x3/index.ts +0 -33
- package/src/cubing/puzzles/implementations/3x3x3/src/3x3x3-ll.kpuzzle.svg +0 -108
- package/src/cubing/puzzles/implementations/3x3x3/src/3x3x3.kpuzzle.svg +0 -128
- package/src/cubing/puzzles/implementations/TODO/svg/alg/3x3x3.kpuzzle.original.svg +0 -128
- package/src/cubing/puzzles/implementations/TODO/svg/alg/3x3x3.kpuzzle.outlined.svg +0 -486
- package/src/cubing/puzzles/implementations/TODO/svg/alg/3x3x3.kpuzzle.spaced.svg +0 -128
- package/src/cubing/puzzles/implementations/clock/clock.kpuzzle.json.ts +0 -241
- package/src/cubing/puzzles/implementations/clock/clock.kpuzzle.svg.ts +0 -369
- package/src/cubing/puzzles/implementations/clock/index.ts +0 -14
- package/src/cubing/puzzles/implementations/clock/src/clock.kpuzzle.svg +0 -369
- package/src/cubing/puzzles/implementations/fto/index.ts +0 -28
- package/src/cubing/puzzles/implementations/megaminx/index.ts +0 -20
- package/src/cubing/puzzles/implementations/pyraminx/index.ts +0 -18
- package/src/cubing/puzzles/implementations/pyraminx/pyraminx.kpuzzle.json.ts +0 -84
- package/src/cubing/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.ts +0 -88
- package/src/cubing/puzzles/implementations/pyraminx/src/pyraminx.kpuzzle.svg +0 -87
- package/src/cubing/puzzles/implementations/square1/index.ts +0 -14
- package/src/cubing/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.json.ts +0 -62
- package/src/cubing/puzzles/implementations/square1/sq1-hyperorbit.kpuzzle.svg.ts +0 -295
- package/src/cubing/puzzles/implementations/square1/src/sq1-hyperorbit.kpuzzle.svg +0 -295
- package/src/cubing/puzzles/implementations/square1/src/sq1-simple.svg +0 -60
- package/src/cubing/puzzles/index.ts +0 -92
- package/src/cubing/puzzles/stickerings/appearance.ts +0 -292
- package/src/cubing/puzzles/stickerings/cube-stickerings.ts +0 -304
- package/src/cubing/puzzles/stickerings/fto-stickerings.ts +0 -105
- package/src/cubing/puzzles/stickerings/global-custom-stickering-hack.ts +0 -61
- package/src/cubing/puzzles/stickerings/megaminx-stickerings.ts +0 -26
- package/src/cubing/scramble/index.ts +0 -1
- package/src/cubing/search/.DS_Store +0 -0
- package/src/cubing/search/.gitignore +0 -1
- package/src/cubing/search/esm-test-worker.js +0 -14
- package/src/cubing/search/index.ts +0 -12
- package/src/cubing/search/inside/.DS_Store +0 -0
- package/src/cubing/search/inside/api.spec.ts +0 -37
- package/src/cubing/search/inside/api.ts +0 -174
- package/src/cubing/search/inside/entry.js +0 -4
- package/src/cubing/search/inside/inside-worker.ts +0 -13
- package/src/cubing/search/inside/module-entry-path-getter.ts +0 -5
- package/src/cubing/search/inside/module-entry.ts +0 -20
- package/src/cubing/search/inside/solve/addOrientationSuffix.ts +0 -17
- package/src/cubing/search/inside/solve/parseSGS.ts +0 -119
- package/src/cubing/search/inside/solve/puzzles/2x2x2.sgs.json.ts +0 -114
- package/src/cubing/search/inside/solve/puzzles/2x2x2.ts +0 -92
- package/src/cubing/search/inside/solve/puzzles/3x3x3/convert.ts +0 -137
- package/src/cubing/search/inside/solve/puzzles/3x3x3/filter.ts +0 -60
- package/src/cubing/search/inside/solve/puzzles/3x3x3/index.ts +0 -67
- package/src/cubing/search/inside/solve/puzzles/3x3x3/legacy-sgs.ts +0 -291
- package/src/cubing/search/inside/solve/puzzles/3x3x3-inefficient.sgs.json.ts +0 -272
- package/src/cubing/search/inside/solve/puzzles/4x4x4.ts +0 -30
- package/src/cubing/search/inside/solve/puzzles/5x5x5.ts +0 -12
- package/src/cubing/search/inside/solve/puzzles/big-cubes.ts +0 -78
- package/src/cubing/search/inside/solve/puzzles/clock.ts +0 -48
- package/src/cubing/search/inside/solve/puzzles/fto.sgs.json.ts +0 -643
- package/src/cubing/search/inside/solve/puzzles/fto.ts +0 -58
- package/src/cubing/search/inside/solve/puzzles/megaminx.sgs.json.ts +0 -1549
- package/src/cubing/search/inside/solve/puzzles/megaminx.ts +0 -51
- package/src/cubing/search/inside/solve/puzzles/pyraminx.sgs.json.ts +0 -98
- package/src/cubing/search/inside/solve/puzzles/pyraminx.ts +0 -48
- package/src/cubing/search/inside/solve/puzzles/sgs-defs.spec.ts +0 -27
- package/src/cubing/search/inside/solve/puzzles/skewb.sgs.json.ts +0 -113
- package/src/cubing/search/inside/solve/puzzles/skewb.ts +0 -65
- package/src/cubing/search/inside/solve/puzzles/sq1.ts +0 -16
- package/src/cubing/search/inside/solve/puzzles/wca-minx.ts +0 -32
- package/src/cubing/search/inside/solve/tremble.ts +0 -213
- package/src/cubing/search/instantiator.ts +0 -95
- package/src/cubing/search/outside.ts +0 -110
- package/src/cubing/search/worker-inside-generated-string.js +0 -1
- package/src/cubing/stream/index.ts +0 -12
- package/src/cubing/stream/process/ReorientedStream.ts +0 -93
- package/src/cubing/stream/proxy-event.ts +0 -16
- package/src/cubing/stream/twizzle/TwizzleStream.ts +0 -53
- package/src/cubing/stream/twizzle/stream-types.ts +0 -45
- package/src/cubing/stream/websocket-proxy.ts +0 -73
- package/src/cubing/twisty/controllers/AnimationTypes.ts +0 -50
- package/src/cubing/twisty/controllers/RenderScheduler.ts +0 -28
- package/src/cubing/twisty/controllers/TwistyAnimationController.ts +0 -325
- package/src/cubing/twisty/controllers/TwistyPlayerController.ts +0 -38
- package/src/cubing/twisty/controllers/easing.ts +0 -3
- package/src/cubing/twisty/controllers/indexer/AlgDuration.ts +0 -94
- package/src/cubing/twisty/controllers/indexer/AlgIndexer.ts +0 -87
- package/src/cubing/twisty/controllers/indexer/SimpleAlgIndexer.ts +0 -76
- package/src/cubing/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.ts +0 -181
- package/src/cubing/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexerV2.ts +0 -243
- package/src/cubing/twisty/controllers/indexer/simultaneous-moves/simul-moves.ts +0 -193
- package/src/cubing/twisty/controllers/indexer/tree/AlgWalker.ts +0 -439
- package/src/cubing/twisty/controllers/indexer/tree/TreeAlgIndexer.ts +0 -97
- package/src/cubing/twisty/controllers/indexer/tree/chunkAlgs.ts +0 -81
- package/src/cubing/twisty/controllers/stream/timeline-move-calculation-draft.spec.ts.TODO +0 -59
- package/src/cubing/twisty/controllers/stream/timeline-move-calculation-draft.ts +0 -162
- package/src/cubing/twisty/heavy-code-imports/3d.ts +0 -18
- package/src/cubing/twisty/heavy-code-imports/dynamic-entries/3d.ts +0 -31
- package/src/cubing/twisty/index.ts +0 -24
- package/src/cubing/twisty/model/PromiseFreshener.ts +0 -49
- package/src/cubing/twisty/model/TwistyPlayerModel.ts +0 -256
- package/src/cubing/twisty/model/UserVisibleErrorTracker.ts +0 -22
- package/src/cubing/twisty/model/helpers.ts +0 -47
- package/src/cubing/twisty/model/props/TwistyProp.spec.ts +0 -38
- package/src/cubing/twisty/model/props/TwistyProp.ts +0 -366
- package/src/cubing/twisty/model/props/TwistyPropDebugger.ts +0 -370
- package/src/cubing/twisty/model/props/general/URLProp.ts +0 -14
- package/src/cubing/twisty/model/props/puzzle/display/FoundationDisplayProp.ts +0 -9
- package/src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.ts +0 -15
- package/src/cubing/twisty/model/props/puzzle/display/SpriteProp.ts +0 -43
- package/src/cubing/twisty/model/props/puzzle/display/StickeringProp.ts +0 -56
- package/src/cubing/twisty/model/props/puzzle/state/AlgProp.ts +0 -91
- package/src/cubing/twisty/model/props/puzzle/state/AlgTransformationProp.ts +0 -28
- package/src/cubing/twisty/model/props/puzzle/state/AnchoredStartProp.ts +0 -44
- package/src/cubing/twisty/model/props/puzzle/state/CatchUpMoveProp.ts +0 -17
- package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesProp.ts +0 -109
- package/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesSimplified.ts +0 -48
- package/src/cubing/twisty/model/props/puzzle/state/CurrentTransformationProp.ts +0 -46
- package/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorProp.ts +0 -53
- package/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.ts +0 -15
- package/src/cubing/twisty/model/props/puzzle/state/IndexerProp.ts +0 -24
- package/src/cubing/twisty/model/props/puzzle/state/LegacyPositionProp.ts +0 -22
- package/src/cubing/twisty/model/props/puzzle/state/MovePressInputProp.ts +0 -14
- package/src/cubing/twisty/model/props/puzzle/state/NaiveMoveCountProp.ts +0 -20
- package/src/cubing/twisty/model/props/puzzle/state/PuzzleAlgProp.ts +0 -28
- package/src/cubing/twisty/model/props/puzzle/state/SetupAnchorProp.ts +0 -14
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleDefProp.ts +0 -14
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.ts +0 -14
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDProp.ts +0 -12
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.ts +0 -36
- package/src/cubing/twisty/model/props/puzzle/structure/PuzzleLoaderProp.ts +0 -38
- package/src/cubing/twisty/model/props/timeline/CoarseTimelineInfoProp.ts +0 -45
- package/src/cubing/twisty/model/props/timeline/DetailedTimelineInfoProp.ts +0 -78
- package/src/cubing/twisty/model/props/timeline/PlayingInfoProp.ts +0 -48
- package/src/cubing/twisty/model/props/timeline/TempoScaleProp.ts +0 -13
- package/src/cubing/twisty/model/props/timeline/TimestampRequestProp.ts +0 -38
- package/src/cubing/twisty/model/props/viewer/BackViewProp.ts +0 -16
- package/src/cubing/twisty/model/props/viewer/BackgroundProp.ts +0 -15
- package/src/cubing/twisty/model/props/viewer/ButtonAppearanceProp.ts +0 -86
- package/src/cubing/twisty/model/props/viewer/ControlPanelProp.ts +0 -14
- package/src/cubing/twisty/model/props/viewer/LatitudeLimit.ts +0 -11
- package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesProp.ts +0 -127
- package/src/cubing/twisty/model/props/viewer/OrbitCoordinatesRequestProp.ts +0 -69
- package/src/cubing/twisty/model/props/viewer/TimeRangeProp.ts +0 -15
- package/src/cubing/twisty/model/props/viewer/ViewerLinkProp.ts +0 -14
- package/src/cubing/twisty/model/props/viewer/VisualizationProp.ts +0 -17
- package/src/cubing/twisty/model/props/viewer/VisualizationStrategyProp.ts +0 -45
- package/src/cubing/twisty/views/2D/Twisty2DPuzzle.css.ts +0 -26
- package/src/cubing/twisty/views/2D/Twisty2DPuzzle.ts +0 -146
- package/src/cubing/twisty/views/2D/Twisty2DPuzzleWrapper.ts +0 -52
- package/src/cubing/twisty/views/2D/Twisty2DSceneWrapper.ts +0 -77
- package/src/cubing/twisty/views/3D/DragTracker.ts +0 -184
- package/src/cubing/twisty/views/3D/RendererPool.ts +0 -54
- package/src/cubing/twisty/views/3D/TAU.ts +0 -2
- package/src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.ts +0 -214
- package/src/cubing/twisty/views/3D/Twisty3DRenderTarget.ts +0 -5
- package/src/cubing/twisty/views/3D/Twisty3DScene.ts +0 -42
- package/src/cubing/twisty/views/3D/Twisty3DSceneWrapper.ts +0 -189
- package/src/cubing/twisty/views/3D/Twisty3DVantage.css.ts +0 -32
- package/src/cubing/twisty/views/3D/Twisty3DVantage.ts +0 -312
- package/src/cubing/twisty/views/3D/TwistyOrbitControls.spec.ts +0 -213
- package/src/cubing/twisty/views/3D/TwistyOrbitControls.ts +0 -176
- package/src/cubing/twisty/views/3D/puzzles/Cube3D.ts +0 -966
- package/src/cubing/twisty/views/3D/puzzles/KPuzzleWrapper.ts +0 -142
- package/src/cubing/twisty/views/3D/puzzles/PG3D.ts +0 -1078
- package/src/cubing/twisty/views/3D/puzzles/Twisty3DPuzzle.ts +0 -6
- package/src/cubing/twisty/views/ClassListManager.ts +0 -34
- package/src/cubing/twisty/views/ManagedCustomElement.ts +0 -76
- package/src/cubing/twisty/views/TwistyAlgEditor/LeafTokens.ts +0 -116
- package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.ts +0 -72
- package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.ts +0 -57
- package/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.ts +0 -368
- package/src/cubing/twisty/views/TwistyAlgEditor/model.ts +0 -179
- package/src/cubing/twisty/views/TwistyAlgViewer.css.ts +0 -25
- package/src/cubing/twisty/views/TwistyAlgViewer.ts +0 -502
- package/src/cubing/twisty/views/TwistyPlayer.css.ts +0 -73
- package/src/cubing/twisty/views/TwistyPlayer.ts +0 -362
- package/src/cubing/twisty/views/TwistyPlayerSettable.ts +0 -115
- package/src/cubing/twisty/views/TwistyViewerWrapper.css.ts +0 -41
- package/src/cubing/twisty/views/canvas.ts +0 -9
- package/src/cubing/twisty/views/control-panel/TwistyButtonsV2.css.ts +0 -127
- package/src/cubing/twisty/views/control-panel/TwistyButtonsV2.ts +0 -156
- package/src/cubing/twisty/views/control-panel/TwistyScrubber.css.ts +0 -48
- package/src/cubing/twisty/views/control-panel/TwistyScrubberV2.ts +0 -145
- package/src/cubing/twisty/views/control-panel/webkit-fullscreen.ts +0 -44
- package/src/cubing/twisty/views/document.ts +0 -4
- package/src/cubing/twisty/views/node-custom-element-shims.ts +0 -30
- package/src/cubing/twisty/views/screenshot.ts +0 -90
- package/src/cubing/twisty/views/stream/TwistyStreamSource.css.ts +0 -17
- package/src/cubing/twisty/views/stream/TwistyStreamSource.ts +0 -155
- package/src/cubing/vendor/.DS_Store +0 -0
- package/src/cubing/vendor/comlink-everywhere/.DS_Store +0 -0
- package/src/cubing/vendor/comlink-everywhere/comlink-everywhere.webloc +0 -8
- package/src/cubing/vendor/comlink-everywhere/inside/index.d.ts +0 -1
- package/src/cubing/vendor/comlink-everywhere/inside/index.js +0 -16
- package/src/cubing/vendor/comlink-everywhere/inside/node.js +0 -6
- package/src/cubing/vendor/comlink-everywhere/outside/index.d.ts +0 -6
- package/src/cubing/vendor/comlink-everywhere/outside/index.js +0 -31
- package/src/cubing/vendor/comlink-everywhere/outside/node.js +0 -42
- package/src/cubing/vendor/cstimer/.DS_Store +0 -0
- package/src/cubing/vendor/cstimer/LICENSE +0 -674
- package/src/cubing/vendor/cstimer/src/.DS_Store +0 -0
- package/src/cubing/vendor/cstimer/src/js/lib/mathlib.ts +0 -54
- package/src/cubing/vendor/cstimer/src/js/scramble/scramble_444.ts +0 -2791
- package/src/cubing/vendor/min2phase/gwt.d.ts +0 -2
- package/src/cubing/vendor/min2phase/gwt.js +0 -2699
- package/src/cubing/vendor/p-lazy/license +0 -9
- package/src/cubing/vendor/p-lazy/p-lazy.ts +0 -52
- package/src/cubing/vendor/p-lazy/readme.md +0 -54
- package/src/cubing/vendor/random-uint-below/get-random-values.ts +0 -23
- package/src/cubing/vendor/random-uint-below/index.ts +0 -12
- package/src/cubing/vendor/random-uint-below/random-choice.ts +0 -9
- package/src/cubing/vendor/random-uint-below/random53BitValue.ts +0 -64
- package/src/cubing/vendor/sq12phase/scramble_sq1.js +0 -853
- package/src/cubing/vendor/three/.DS_Store +0 -0
- package/src/cubing/vendor/three/examples/.DS_Store +0 -0
- package/src/cubing/vendor/three/examples/jsm/libs/stats.modified.module.ts +0 -179
- package/src/cubing/vendor/unsafe-raw-aes/unsafe-raw-aes.ts +0 -64
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/protocol/binary/orbit-indexing.ts", "../../src/cubing/kpuzzle/transformations.ts", "../../src/cubing/kpuzzle/kpuzzle.ts", "../../src/cubing/kpuzzle/canonicalize.ts", "../../src/cubing/kpuzzle/parser/parser-peggy.js", "../../src/cubing/kpuzzle/parser/parser-shim.ts", "../../src/cubing/kpuzzle/svg.ts", "../../src/cubing/kpuzzle/3x3x3/3x3x3.kpuzzle.json.ts", "../../src/cubing/kpuzzle/puzzle-orientation.ts", "../../src/cubing/protocol/binary/puzzle-orientation.ts", "../../src/cubing/protocol/binary/binary3x3x3.ts", "../../src/cubing/protocol/binary/hex.ts"],
|
|
4
|
-
"sourcesContent": ["export function identityPermutation(numElems: number): number[] {\n const arr = new Array<number>(numElems);\n for (let i = 0; i < numElems; i++) {\n arr[i] = i;\n }\n return arr;\n}\n\n// Inclusive start, exclusive end (similar to `Array.prototype.slice`)\nexport function orientationsToMask(\n radix: number,\n orientations: number[],\n): number {\n let val = 0;\n for (const orientation of orientations) {\n val *= radix;\n val += orientation;\n }\n return val;\n}\n\n// Inclusive start, exclusive end (similar to `Array.prototype.slice`)\nexport function maskToOrientations(\n radix: number,\n numElems: number,\n mask: number,\n): number[] {\n const arr = [];\n while (mask > 0) {\n arr.push(mask % radix);\n mask = Math.floor(mask / radix);\n }\n return new Array<number>(numElems - arr.length).fill(0).concat(arr.reverse());\n}\n\n// From https://www.jaapsch.net/puzzles/compindx.htm#perm\nexport function permutationToLex(permutation: number[]): number {\n const n = permutation.length;\n let lexicographicIdx = 0;\n for (let i = 0; i < n - 1; i++) {\n lexicographicIdx = lexicographicIdx * (n - i);\n for (let j = i + 1; j < n; j++) {\n if (permutation[i] > permutation[j]) {\n lexicographicIdx += 1;\n }\n }\n }\n return lexicographicIdx;\n}\n\n// From https://www.jaapsch.net/puzzles/compindx.htm#perm\nexport function lexToPermutation(\n numPieces: number,\n lexicographicIdx: number,\n): number[] {\n const permutation: number[] = new Array(numPieces);\n permutation[numPieces - 1] = 0;\n for (let i = numPieces - 2; i >= 0; i--) {\n permutation[i] = lexicographicIdx % (numPieces - i);\n lexicographicIdx = Math.floor(lexicographicIdx / (numPieces - i));\n for (let j = i + 1; j < numPieces; j++) {\n if (permutation[j] >= permutation[i]) {\n permutation[j] = permutation[j] + 1;\n }\n }\n }\n return permutation;\n}\n", "import type {\n KPuzzleDefinition,\n OrbitTransformation,\n Transformation,\n} from \"./definition_types\";\n\n// this is the last identity orbit transformation we saw or looked at.\nlet lasto: OrbitTransformation | null;\n\nfunction isIdentity(omod: number, o: OrbitTransformation): boolean {\n if (o === lasto) {\n return true;\n }\n const perm = o.permutation;\n const n = perm.length;\n for (let idx = 0; idx < n; idx++) {\n if (perm[idx] !== idx) {\n return false;\n }\n }\n if (omod > 1) {\n const ori = o.orientation;\n for (let idx = 0; idx < n; idx++) {\n if (ori[idx] !== 0) {\n return false;\n }\n }\n }\n lasto = o;\n return true;\n}\n\nexport function combineTransformations(\n def: KPuzzleDefinition,\n t1: Transformation,\n t2: Transformation,\n): Transformation {\n const newTrans: Transformation = {} as Transformation;\n for (const orbitName in def.orbits) {\n const oDef = def.orbits[orbitName];\n const o1 = t1[orbitName];\n const o2 = t2[orbitName];\n if (isIdentity(oDef.orientations, o2)) {\n // common case for big cubes\n newTrans[orbitName] = o1;\n } else if (isIdentity(oDef.orientations, o1)) {\n newTrans[orbitName] = o2;\n } else {\n const newPerm = new Array(oDef.numPieces);\n if (oDef.orientations === 1) {\n for (let idx = 0; idx < oDef.numPieces; idx++) {\n newPerm[idx] = o1.permutation[o2.permutation[idx]];\n }\n newTrans[orbitName] = {\n permutation: newPerm,\n orientation: o1.orientation,\n };\n } else {\n const newOri = new Array(oDef.numPieces);\n for (let idx = 0; idx < oDef.numPieces; idx++) {\n newOri[idx] =\n (o1.orientation[o2.permutation[idx]] + o2.orientation[idx]) %\n oDef.orientations;\n newPerm[idx] = o1.permutation[o2.permutation[idx]];\n }\n newTrans[orbitName] = { permutation: newPerm, orientation: newOri };\n }\n }\n }\n return newTrans;\n}\n\nexport function multiplyTransformations(\n def: KPuzzleDefinition,\n t: Transformation,\n amount: number,\n): Transformation {\n if (amount < 0) {\n return multiplyTransformations(def, invertTransformation(def, t), -amount);\n }\n if (amount === 0) {\n return identityTransformation(def);\n }\n if (amount === 1) {\n return t;\n }\n let halfish = t;\n if (amount !== 2) {\n halfish = multiplyTransformations(def, t, Math.floor(amount / 2));\n }\n const twiceHalfish = combineTransformations(def, halfish, halfish);\n if (amount % 2 === 0) {\n return twiceHalfish;\n } else {\n return combineTransformations(def, t, twiceHalfish);\n }\n}\nexport function identityTransformation(\n definition: KPuzzleDefinition,\n): Transformation {\n const transformation = {} as Transformation;\n for (const orbitName in definition.orbits) {\n const orbitDefinition = definition.orbits[orbitName];\n if (!lasto || lasto.permutation.length !== orbitDefinition.numPieces) {\n const newPermutation = new Array(orbitDefinition.numPieces);\n const newOrientation = new Array(orbitDefinition.numPieces);\n for (let i = 0; i < orbitDefinition.numPieces; i++) {\n newPermutation[i] = i;\n newOrientation[i] = 0;\n }\n const orbitTransformation = {\n permutation: newPermutation,\n orientation: newOrientation,\n };\n lasto = orbitTransformation;\n // Object.freeze(newPermutation); // TODO\n // Object.freeze(newOrientation); // TODO\n }\n transformation[orbitName] = lasto;\n\n // Object.freeze(orbitDefinition); // TODO\n }\n // Object.freeze(transformation); // TODO\n return transformation;\n}\n\nexport function invertTransformation(\n def: KPuzzleDefinition,\n t: Transformation,\n): Transformation {\n const newTrans: Transformation = {} as Transformation;\n for (const orbitName in def.orbits) {\n const oDef = def.orbits[orbitName];\n const o = t[orbitName];\n if (isIdentity(oDef.orientations, o)) {\n newTrans[orbitName] = o;\n } else if (oDef.orientations === 1) {\n const newPerm = new Array(oDef.numPieces);\n for (let idx = 0; idx < oDef.numPieces; idx++) {\n newPerm[o.permutation[idx]] = idx;\n }\n newTrans[orbitName] = {\n permutation: newPerm,\n orientation: o.orientation,\n };\n } else {\n const newPerm = new Array(oDef.numPieces);\n const newOri = new Array(oDef.numPieces);\n for (let idx = 0; idx < oDef.numPieces; idx++) {\n const fromIdx = o.permutation[idx];\n newPerm[fromIdx] = idx;\n newOri[fromIdx] =\n (oDef.orientations - o.orientation[idx] + oDef.orientations) %\n oDef.orientations;\n }\n newTrans[orbitName] = { permutation: newPerm, orientation: newOri };\n }\n }\n return newTrans;\n}\n\nfunction gcd(a: number, b: number): number {\n if (b) {\n return gcd(b, a % b);\n }\n return a;\n}\n\n/* calculate the order of a particular transformation. */\nexport function transformationOrder(\n def: KPuzzleDefinition,\n t: Transformation,\n): number {\n let r: number = 1;\n for (const orbitName in def.orbits) {\n const oDef = def.orbits[orbitName];\n const o = t[orbitName];\n const d = new Array(oDef.numPieces);\n for (let idx = 0; idx < oDef.numPieces; idx++) {\n if (!d[idx]) {\n let w = idx;\n let om = 0;\n let pm = 0;\n for (;;) {\n d[w] = true;\n om = om + o.orientation[w];\n pm = pm + 1;\n w = o.permutation[w];\n if (w === idx) {\n break;\n }\n }\n if (om !== 0) {\n pm = (pm * oDef.orientations) / gcd(oDef.orientations, om);\n }\n r = (r * pm) / gcd(r, pm);\n }\n }\n }\n return r;\n}\n\nexport function areOrbitTransformationsEquivalent(\n def: KPuzzleDefinition,\n orbitName: string,\n t1: Transformation,\n t2: Transformation,\n options: {\n ignoreOrientation?: boolean;\n ignorePermutation?: boolean;\n } = {},\n): boolean {\n const oDef = def.orbits[orbitName];\n const o1 = t1[orbitName];\n const o2 = t2[orbitName];\n for (let idx = 0; idx < oDef.numPieces; idx++) {\n if (\n !options?.ignoreOrientation &&\n o1.orientation[idx] !== o2.orientation[idx]\n ) {\n return false;\n }\n if (\n !options?.ignorePermutation &&\n o1.permutation[idx] !== o2.permutation[idx]\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport function areTransformationsEquivalent(\n def: KPuzzleDefinition,\n t1: Transformation,\n t2: Transformation,\n): boolean {\n for (const orbitName in def.orbits) {\n if (!areOrbitTransformationsEquivalent(def, orbitName, t1, t2)) {\n return false;\n }\n }\n return true;\n}\n\nexport function areStatesEquivalent(\n def: KPuzzleDefinition,\n t1: Transformation,\n t2: Transformation,\n): boolean {\n // Turn transformations into states.\n // This accounts for indistinguishable pieces.\n return areTransformationsEquivalent(\n def,\n combineTransformations(def, def.startPieces, t1),\n combineTransformations(def, def.startPieces, t2),\n );\n}\n", "import { Alg, Move } from \"../alg\";\nimport type { QuantumMove } from \"../alg/units/leaves/Move\";\nimport type { KPuzzleDefinition, Transformation } from \"./definition_types\";\nimport type { MoveNotation } from \"./move_notation\";\nimport {\n combineTransformations,\n identityTransformation,\n multiplyTransformations,\n} from \"./transformations\";\n\n// TODO: Move other helpers into the definition.\nexport function transformationForQuantumMove(\n def: KPuzzleDefinition,\n quantumMove: QuantumMove,\n): Transformation {\n const transformation = getNotationLayer(def).lookupMove(\n new Move(quantumMove), // TODO\n );\n if (!transformation) {\n throw new Error(\"Unknown move: \" + quantumMove.toString());\n }\n return transformation;\n}\n\n// TODO: Move other helpers into the definition.\nexport function transformationForMove(\n def: KPuzzleDefinition,\n move: Move,\n): Transformation {\n const transformation = getNotationLayer(def).lookupMove(move);\n if (!transformation) {\n throw new Error(\"Unknown move: \" + move.toString());\n }\n return transformation;\n}\n\nexport function getNotationLayer(def: KPuzzleDefinition): MoveNotation {\n if (!def.moveNotation) {\n def.moveNotation = new KPuzzleMoveNotation(def);\n }\n return def.moveNotation;\n}\n\nclass KPuzzleMoveNotation implements MoveNotation {\n private cache: { [key: string]: Transformation } = {};\n constructor(public def: KPuzzleDefinition) {}\n\n public lookupMove(move: Move): Transformation | undefined {\n const key = move.toString();\n let r: Transformation | undefined = this.cache[key];\n if (r) {\n return r;\n }\n const quantumKey = move.quantum.toString();\n r = this.def.moves[quantumKey];\n if (r) {\n r = multiplyTransformations(this.def, r, move.amount);\n this.cache[key] = r;\n } else {\n // Handle e.g. `y2` if `y2` is defined.\n // Note: this doesn't handle multiples.\n // TODO: Should this be defined in a special place in the KPuzzle def instead of mixed with normal moves?\n r = this.def.moves[move.toString()];\n if (r) {\n this.cache[key] = r;\n } else {\n // Handle e.g. `y2'` if `y2` is defined.\n // Note: this doesn't handle multiples.\n // TODO: Should this be defined in a special place in the KPuzzle def instead of mixed with normal moves?\n r = this.def.moves[move.invert().toString()];\n if (r) {\n r = multiplyTransformations(this.def, r, -1);\n this.cache[key] = r;\n }\n }\n }\n\n return r;\n }\n}\n\nexport class KPuzzle {\n public state: Transformation;\n constructor(public definition: KPuzzleDefinition) {\n this.state = identityTransformation(definition);\n }\n\n public reset(): void {\n this.state = identityTransformation(this.definition);\n }\n\n public serialize(): string {\n let output = \"\";\n for (const orbitName in this.definition.orbits) {\n output += orbitName + \"\\n\";\n output += this.state[orbitName].permutation.join(\" \") + \"\\n\";\n output += this.state[orbitName].orientation.join(\" \") + \"\\n\";\n }\n output = output.slice(0, output.length - 1); // Trim last newline.\n return output;\n }\n\n public applyMove(move: Move): void {\n this.state = combineTransformations(\n this.definition,\n this.state,\n transformationForMove(this.definition, move),\n );\n }\n\n public applyAlg(alg: Alg): void {\n // TODO: use indexer instead of full expansion.\n for (const move of alg.experimentalLeafMoves()) {\n this.applyMove(move);\n }\n }\n // TODO: Implement\n // parseState(): this {}\n\n // TODO: Alg parsing\n\n // TODO: Implement.\n // invert(): this {}\n}\n", "/**\n * This module manages canonical sequences. You can merge sequences\n * combining moves (fully respecting commuting moves), and you can\n * generate canonical sequences efficiently.\n */\nimport type { Alg, Move } from \"../alg\";\nimport type { KPuzzleDefinition, Transformation } from \"./definition_types\";\nimport {\n areTransformationsEquivalent,\n combineTransformations,\n identityTransformation,\n} from \"./transformations\";\n\nclass InternalMove {\n constructor(public base: number, public twist: number) {}\n public getTransformation(canon: Canonicalizer): Transformation {\n return canon.transforms[this.base][this.twist];\n }\n\n public asString(canon: Canonicalizer): string {\n const mod = canon.moveorder[this.base];\n let tw = this.twist % mod;\n while (tw + tw > mod) {\n tw -= mod;\n }\n while (tw + tw <= -mod) {\n tw += mod;\n }\n const nam = canon.movenames[this.base];\n if (tw === 1) {\n return nam;\n } else if (tw === -1) {\n return nam + \"'\";\n } else if (tw > 0) {\n return nam + tw;\n } else if (tw < 0) {\n return nam + -tw + \"'\";\n } else {\n throw new Error(\"Stringifying null move?\");\n }\n }\n}\n\n// represents puzzle move data and its commuting structure\nexport class Canonicalizer {\n public commutes: boolean[][] = [];\n public moveorder: number[] = [];\n public movenames: string[] = [];\n public transforms: Transformation[][] = [];\n public moveindex: { [key: string]: number } = {};\n public baseMoveCount: number;\n constructor(public def: KPuzzleDefinition) {\n const basemoves = def.moves;\n const id = identityTransformation(def);\n for (const mv1 in basemoves) {\n this.moveindex[mv1] = this.movenames.length;\n this.movenames.push(mv1);\n this.transforms.push([id, basemoves[mv1]]);\n }\n this.baseMoveCount = this.movenames.length;\n for (let i = 0; i < this.baseMoveCount; i++) {\n this.commutes.push([]);\n const t1 = this.transforms[i][1];\n for (let j = 0; j < this.baseMoveCount; j++) {\n const t2 = this.transforms[j][1];\n const ab = combineTransformations(def, t1, t2);\n const ba = combineTransformations(def, t2, t1);\n this.commutes[i][j] = areTransformationsEquivalent(def, ab, ba);\n }\n }\n for (let i = 0; i < this.baseMoveCount; i++) {\n const t1 = this.transforms[i][1];\n let ct = t1;\n let order = 1;\n for (let mult = 2; !areTransformationsEquivalent(def, id, ct); mult++) {\n order++;\n ct = combineTransformations(def, ct, t1);\n this.transforms[i].push(ct);\n }\n this.moveorder[i] = order;\n }\n }\n\n public blockMoveToInternalMove(move: Move): InternalMove {\n const quantumMoveStr = move.quantum.toString();\n if (!(quantumMoveStr in this.def.moves)) {\n throw new Error(\"! move \" + quantumMoveStr + \" not in def.\");\n }\n const ind = this.moveindex[quantumMoveStr];\n const mod = this.moveorder[ind];\n let tw = move.amount % mod; // TODO\n if (tw < 0) {\n tw = (tw + mod) % mod;\n }\n return new InternalMove(ind, tw);\n }\n\n // Sequence must be simple sequence of block moves\n // this one does not attempt to merge.\n public sequenceToSearchSequence(\n alg: Alg,\n tr?: Transformation,\n ): SearchSequence {\n const ss = new SearchSequence(this, tr);\n for (const move of alg.experimentalLeafMoves()) {\n ss.appendOneMove(this.blockMoveToInternalMove(move));\n }\n return ss;\n }\n\n // Sequence to simple sequence, with merging.\n public mergeSequenceToSearchSequence(\n alg: Alg,\n tr?: Transformation,\n ): SearchSequence {\n const ss = new SearchSequence(this, tr);\n for (const move of alg.experimentalLeafMoves()) {\n ss.mergeOneMove(this.blockMoveToInternalMove(move));\n }\n return ss;\n }\n}\n\n// represents a single sequence we are working on\n// this can be a search sequence, or it can be a\n// \"cooked\" sequence that we want to use efficiently.\nexport class SearchSequence {\n public moveseq: InternalMove[] = [];\n public trans: Transformation;\n constructor(private canon: Canonicalizer, tr?: Transformation) {\n if (tr) {\n this.trans = tr;\n } else {\n this.trans = identityTransformation(canon.def);\n }\n }\n\n /*\n * A common use for search sequences is to extend them, but\n * sometimes we shouldn't modify the returned one. This\n * method gives you a copy you can do whatever you want with.\n */\n public clone(): SearchSequence {\n const r = new SearchSequence(this.canon, this.trans);\n r.moveseq = [...this.moveseq];\n return r;\n }\n\n // returns 1 if the move is added, 0 if it is merged, -1 if it cancels a move\n public mergeOneMove(mv: InternalMove): number {\n const r = this.onlyMergeOneMove(mv);\n this.trans = combineTransformations(\n this.canon.def,\n this.trans,\n mv.getTransformation(this.canon),\n );\n return r;\n }\n\n // does not do merge work; just slaps the new move on\n public appendOneMove(mv: InternalMove): number {\n this.moveseq.push(mv);\n this.trans = combineTransformations(\n this.canon.def,\n this.trans,\n mv.getTransformation(this.canon),\n );\n return 1;\n }\n\n // pop a move off.\n public popMove(): number {\n const mv = this.moveseq.pop();\n if (!mv) {\n throw new Error(\"Can't pop an empty sequence\");\n }\n this.trans = combineTransformations(\n this.canon.def,\n this.trans,\n this.canon.transforms[mv.base][this.canon.moveorder[mv.base] - mv.twist],\n );\n return 1;\n }\n\n // do one more twist of the last move\n public oneMoreTwist(): number {\n const lastmv = this.moveseq[this.moveseq.length - 1];\n this.trans = combineTransformations(\n this.canon.def,\n this.trans,\n this.canon.transforms[lastmv.base][1],\n );\n this.moveseq[this.moveseq.length - 1] = new InternalMove(\n lastmv.base,\n lastmv.twist + 1,\n );\n return 0;\n }\n\n private onlyMergeOneMove(mv: InternalMove): number {\n let j = this.moveseq.length - 1;\n while (j >= 0) {\n if (mv.base === this.moveseq[j].base) {\n const mo = this.canon.moveorder[mv.base];\n let twist = (mv.twist + this.moveseq[j].twist) % mo;\n if (twist < 0) {\n twist = (twist + mo) % mo;\n }\n if (twist === 0) {\n // this splice should not be a performance problem because the\n // typical number of following moves should be small\n this.moveseq.splice(j, 1);\n return -1;\n } else {\n this.moveseq[j] = new InternalMove(mv.base, twist);\n return 0;\n }\n } else if (this.canon.commutes[mv.base][this.moveseq[j].base]) {\n j--;\n } else {\n break;\n }\n }\n this.moveseq.push(mv);\n return 1;\n }\n\n // returns the length of the merged sequence.\n public mergeSequence(seq: SearchSequence): number {\n let r = this.moveseq.length;\n for (let i = 0; i < seq.moveseq.length; i++) {\n const mv = seq.moveseq[i];\n const d = this.onlyMergeOneMove(mv);\n r += d;\n }\n this.trans = combineTransformations(this.canon.def, this.trans, seq.trans);\n return r;\n }\n\n public getSequenceAsString(): string {\n const r: string[] = [];\n for (const mv of this.moveseq) {\n r.push(mv.asString(this.canon));\n }\n return r.join(\" \");\n }\n}\n\n/*\n * Iterate through canonical sequences by length. This version\n * uses generators.\n */\nexport class CanonicalSequenceIterator {\n public ss: SearchSequence;\n public targetLength: number;\n constructor(public canon: Canonicalizer, state?: Transformation) {\n this.ss = new SearchSequence(canon, state);\n this.targetLength = 0;\n }\n\n public nextState(base: number, canonstate: number[]): null | number[] {\n const newstate: number[] = [];\n for (const prevbase of canonstate) {\n if (prevbase === base) {\n return null;\n } else if (!this.canon.commutes[prevbase][base]) {\n // don't do anything in this case\n } else if (base < prevbase) {\n return null;\n } else {\n newstate.push(prevbase);\n }\n }\n return newstate;\n }\n\n public *genSequence(\n togo: number,\n canonstate: number[],\n ): Generator<SearchSequence, null, void> {\n if (togo === 0) {\n yield this.ss;\n } else {\n for (let base = 0; base < this.canon.baseMoveCount; base++) {\n const newstate = this.nextState(base, canonstate);\n if (newstate) {\n newstate.push(base);\n for (let tw = 1; tw < this.canon.moveorder[base]; tw++) {\n this.ss.appendOneMove(new InternalMove(base, tw));\n yield* this.genSequence(togo - 1, newstate);\n this.ss.popMove();\n }\n }\n }\n }\n return null;\n }\n\n public *generator(): Generator<SearchSequence, SearchSequence, void> {\n for (let d = 0; ; d++) {\n yield* this.genSequence(d, []);\n }\n }\n\n public *genSequenceTree(\n canonstate: number[],\n ): Generator<SearchSequence, null, number> {\n const r = yield this.ss;\n if (r > 0) {\n return null;\n }\n for (let base = 0; base < this.canon.baseMoveCount; base++) {\n const newstate = this.nextState(base, canonstate);\n if (newstate) {\n newstate.push(base);\n for (let tw = 1; tw < this.canon.moveorder[base]; tw++) {\n this.ss.appendOneMove(new InternalMove(base, tw));\n yield* this.genSequenceTree(newstate);\n this.ss.popMove();\n }\n }\n }\n return null;\n }\n}\n", "// Generated by Peggy 1.1.0.\n//\n// https://peggyjs.org/\n\nfunction peg$subclass(child, parent) {\n function C() {\n this.constructor = child;\n }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function (expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function (expectation) {\n return '\"' + literalEscape(expectation.text) + '\"';\n },\n\n class: function (expectation) {\n var escapedParts = expectation.parts.map(function (part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function () {\n return \"any character\";\n },\n\n end: function () {\n return \"end of input\";\n },\n\n other: function (expectation) {\n return expectation.description;\n },\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) {\n return \"\\\\x0\" + hex(ch);\n })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return \"\\\\x\" + hex(ch);\n });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function (ch) {\n return \"\\\\x0\" + hex(ch);\n })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function (ch) {\n return \"\\\\x\" + hex(ch);\n });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return (\n descriptions.slice(0, -1).join(\", \") +\n \", or \" +\n descriptions[descriptions.length - 1]\n );\n }\n }\n\n function describeFound(found) {\n return found ? '\"' + literalEscape(found) + '\"' : \"end of input\";\n }\n\n return (\n \"Expected \" +\n describeExpected(expected) +\n \" but \" +\n describeFound(found) +\n \" found.\"\n );\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n\n var peg$startRuleFunctions = { start: peg$parsestart };\n var peg$startRuleFunction = peg$parsestart;\n\n var peg$c0 = function (def) {\n return fixMoves(def);\n };\n var peg$c1 = /^[A-Za-z0-9<>]/;\n var peg$c2 = peg$classExpectation(\n [[\"A\", \"Z\"], [\"a\", \"z\"], [\"0\", \"9\"], \"<\", \">\"],\n false,\n false,\n );\n var peg$c3 = function (characters) {\n return characters.join(\"\");\n };\n var peg$c4 = /^[A-Za-z]/;\n var peg$c5 = peg$classExpectation(\n [\n [\"A\", \"Z\"],\n [\"a\", \"z\"],\n ],\n false,\n false,\n );\n var peg$c6 = /^[A-Za-z0-9]/;\n var peg$c7 = peg$classExpectation(\n [\n [\"A\", \"Z\"],\n [\"a\", \"z\"],\n [\"0\", \"9\"],\n ],\n false,\n false,\n );\n var peg$c8 = function (first, rest) {\n return [first].concat(rest).join(\"\");\n };\n var peg$c9 = /^[0-9]/;\n var peg$c10 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$c11 = function (characters) {\n return parseInt(characters.join(\"\"), 10);\n };\n var peg$c12 = \" \";\n var peg$c13 = peg$literalExpectation(\" \", false);\n var peg$c14 = \"Name\";\n var peg$c15 = peg$literalExpectation(\"Name\", false);\n var peg$c16 = function (identifier) {\n return identifier;\n };\n var peg$c17 = \"Set\";\n var peg$c18 = peg$literalExpectation(\"Set\", false);\n var peg$c19 = function (set_identifier, num_pieces, num_orientations) {\n return [\n set_identifier,\n { numPieces: num_pieces, orientations: num_orientations },\n ];\n };\n var peg$c20 = function (orbit, orbits) {\n orbits[orbit[0]] = orbit[1];\n return orbits;\n };\n var peg$c21 = function (orbit) {\n const orbits = {};\n orbits[orbit[0]] = orbit[1];\n return orbits;\n };\n var peg$c22 = \"\\n\";\n var peg$c23 = peg$literalExpectation(\"\\n\", false);\n var peg$c24 = function (num, nums) {\n return [num].concat(nums);\n };\n var peg$c25 = function (num) {\n return [num];\n };\n var peg$c26 = function (nums) {\n return fixPermutation(nums);\n };\n var peg$c27 = function (set_identifier, permutation, nums) {\n return [set_identifier, { permutation: permutation, orientation: nums }];\n };\n var peg$c28 = function (set_identifier, permutation) {\n return [\n set_identifier,\n {\n permutation: permutation,\n orientation: new Array(permutation.length).fill(0),\n },\n ];\n };\n var peg$c29 = function (definition, definitions) {\n definitions[definition[0]] = definition[1];\n return definitions;\n };\n var peg$c30 = function (definition) {\n const definitions = {};\n definitions[definition[0]] = definition[1];\n return definitions;\n };\n var peg$c31 = \"Solved\";\n var peg$c32 = peg$literalExpectation(\"Solved\", false);\n var peg$c33 = \"End\";\n var peg$c34 = peg$literalExpectation(\"End\", false);\n var peg$c35 = function (definitions) {\n return definitions;\n };\n var peg$c36 = \"Move\";\n var peg$c37 = peg$literalExpectation(\"Move\", false);\n var peg$c38 = function (identifier, definitions) {\n return [identifier, definitions];\n };\n var peg$c39 = function (move, moves) {\n moves[move[0]] = move[1];\n return moves;\n };\n var peg$c40 = function (move) {\n const moves = {};\n moves[move[0]] = move[1];\n return moves;\n };\n var peg$c41 = function (name, orbits, start_pieces, moves) {\n return {\n name: name,\n orbits: orbits,\n moves: moves,\n startPieces: start_pieces,\n };\n };\n\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n\n var peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\n \"Can't start parsing from rule \\\"\" + options.startRule + '\".',\n );\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location =\n location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location,\n );\n }\n\n function error(message, location) {\n location =\n location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return {\n type: \"class\",\n parts: parts,\n inverted: inverted,\n ignoreCase: ignoreCase,\n };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column,\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column,\n },\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location,\n );\n }\n\n function peg$parsestart() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseDEFINITION_FILE();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c0(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseIDENTIFIER() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c1.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c2);\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c1.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c2);\n }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseSET_IDENTIFIER() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$c4.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c5);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c6.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c6.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c7);\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c8(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseNUMBER() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c9.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c10);\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c9.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c10);\n }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c11(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseSPACE() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 32) {\n s0 = peg$c12;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c13);\n }\n }\n\n return s0;\n }\n\n function peg$parseNAME() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c14) {\n s1 = peg$c14;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c15);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSPACE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseIDENTIFIER();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c16(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseORBIT() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c18);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSPACE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseSET_IDENTIFIER();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseSPACE();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseNUMBER();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseSPACE();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseNUMBER();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c19(s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseORBITS() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseORBIT();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseORBITS();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c20(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseORBIT();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseNEWLINE() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c22;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n\n return s0;\n }\n\n function peg$parseNEWLINES() {\n var s0, s1;\n\n s0 = [];\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c22;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c22;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseOPTIONAL_NEWLINES() {\n var s0, s1;\n\n s0 = [];\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c22;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (input.charCodeAt(peg$currPos) === 10) {\n s1 = peg$c22;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c23);\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseNUMBERS() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseNUMBER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSPACE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseNUMBERS();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c24(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseNUMBER();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsePERMUTATION() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseNUMBERS();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseDEFINITION() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parseSET_IDENTIFIER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsePERMUTATION();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseNEWLINE();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseNUMBERS();\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s1, s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseSET_IDENTIFIER();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsePERMUTATION();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c28(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseDEFINITIONS() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseDEFINITION();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDEFINITIONS();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c29(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseDEFINITION();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c30(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseSTART_PIECES() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c32);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDEFINITIONS();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseNEWLINE();\n if (s4 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c33) {\n s5 = peg$c33;\n peg$currPos += 3;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c34);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c35(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMOVE() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c36) {\n s1 = peg$c36;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c37);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseSPACE();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseIDENTIFIER();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseNEWLINE();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDEFINITIONS();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseNEWLINE();\n if (s6 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c33) {\n s7 = peg$c33;\n peg$currPos += 3;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$c34);\n }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c38(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseMOVES() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseMOVE();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINES();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseMOVES();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c39(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseMOVE();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c40(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseDEFINITION_FILE() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parseNAME();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNEWLINES();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseORBITS();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseNEWLINES();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseSTART_PIECES();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseNEWLINES();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseMOVES();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseOPTIONAL_NEWLINES();\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c41(s1, s3, s5, s7);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function fixPermutation(permutation) {\n return permutation.map((x) => x - 1);\n }\n\n function fixMoves(def) {\n for (const moveName in def.moves) {\n const move = def.moves[moveName];\n for (const orbitName in def.orbits) {\n const moveOrbit = move[orbitName];\n const oldOrientation = moveOrbit.orientation;\n const perm = moveOrbit.permutation;\n const newOrientation = new Array(oldOrientation.length);\n for (let i = 0; i < perm.length; i++) {\n newOrientation[i] = oldOrientation[perm[i]];\n }\n moveOrbit.orientation = newOrientation;\n }\n }\n return def;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos),\n );\n }\n}\n\nexport { peg$SyntaxError as SyntaxError, peg$parse as parse };\n", "// Note: this file exists so that `parse` doesn't show up for autocompletion (by\n// avoiding a `parser-pegjs.d.ts` file that exports `parse`.)\n\nimport type { KPuzzleDefinition } from \"../definition_types\";\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { parse } from \"./parser-peggy\";\n\nconst pegParseKPuzzleDefinition: (s: string) => KPuzzleDefinition = parse;\n\nexport { pegParseKPuzzleDefinition };\n", "import type {\n FaceletMeshAppearance,\n PuzzleAppearance,\n} from \"../puzzles/stickerings/appearance\"; // TODO\nimport type { KPuzzleDefinition, Transformation } from \"./definition_types\";\nimport type { KPuzzle } from \"./kpuzzle\";\n\nconst xmlns = \"http://www.w3.org/2000/svg\";\n\n// Unique ID mechanism to keep SVG gradient element IDs unique. TODO: Is there\n// something more performant, and that can't be broken by other elements of the\n// page? (And also doesn't break if this library is run in parallel.)\nlet svgCounter = 0;\nfunction nextSVGID(): string {\n svgCounter += 1;\n return \"svg\" + svgCounter.toString();\n}\n\n// TODO: This is hardcoded to 3x3x3 SVGs\nconst colorMaps: Partial<\n Record<FaceletMeshAppearance, Record<string, string>>\n> = {\n dim: {\n \"white\": \"#dddddd\",\n \"orange\": \"#884400\",\n \"limegreen\": \"#008800\",\n \"red\": \"#660000\",\n \"rgb(34, 102, 255)\": \"#000088\", // TODO\n \"yellow\": \"#888800\",\n },\n oriented: {\n \"white\": \"#ff88ff\",\n \"orange\": \"#ff88ff\",\n \"limegreen\": \"#ff88ff\",\n \"red\": \"#ff88ff\",\n \"rgb(34, 102, 255)\": \"#ff88ff\", // TODO\n \"yellow\": \"#ff88ff\",\n },\n ignored: {\n \"white\": \"#444444\",\n \"orange\": \"#444444\",\n \"limegreen\": \"#444444\",\n \"red\": \"#444444\",\n \"rgb(34, 102, 255)\": \"#444444\", // TODO\n \"yellow\": \"#444444\",\n },\n invisible: {\n \"white\": \"#00000000\",\n \"orange\": \"#00000000\",\n \"limegreen\": \"#00000000\",\n \"red\": \"#00000000\",\n \"rgb(34, 102, 255)\": \"#00000000\", // TODO\n \"yellow\": \"#00000000\",\n },\n};\n\nexport class KPuzzleSVGWrapper {\n public element: HTMLElement;\n public gradientDefs: SVGDefsElement;\n private originalColors: { [type: string]: string } = {};\n private gradients: { [type: string]: SVGGradientElement } = {};\n private svgID: string;\n constructor(\n public kPuzzleDefinition: KPuzzleDefinition,\n svgSource: string,\n experimentalAppearance?: PuzzleAppearance,\n ) {\n if (!svgSource) {\n throw new Error(\n `No SVG definition for puzzle type: ${kPuzzleDefinition.name}`,\n );\n }\n\n this.svgID = nextSVGID();\n\n this.element = document.createElement(\"div\");\n this.element.classList.add(\"svg-wrapper\");\n // TODO: Sanitization.\n this.element.innerHTML = svgSource;\n\n const svgElem = this.element.querySelector(\"svg\");\n if (!svgElem) {\n throw new Error(\"Could not get SVG element\");\n }\n if (xmlns !== svgElem.namespaceURI) {\n throw new Error(\"Unexpected XML namespace\");\n }\n svgElem.style.maxWidth = \"100%\";\n svgElem.style.maxHeight = \"100%\";\n this.gradientDefs = document.createElementNS(xmlns, \"defs\");\n svgElem.insertBefore(this.gradientDefs, svgElem.firstChild);\n\n for (const orbitName in kPuzzleDefinition.orbits) {\n const orbitDefinition = kPuzzleDefinition.orbits[orbitName];\n\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n for (\n let orientation = 0;\n orientation < orbitDefinition.orientations;\n orientation++\n ) {\n const id = this.elementID(orbitName, idx, orientation);\n const elem = this.elementByID(id);\n let originalColor: string = elem.style.fill;\n /// TODO: Allow setting appearance dynamically.\n if (experimentalAppearance) {\n (() => {\n // TODO: dedup with Cube3D,,factor out fallback calculations\n const a = experimentalAppearance.orbits;\n if (!a) {\n return;\n }\n const orbitAppearance = a[orbitName];\n if (!orbitAppearance) {\n return;\n }\n const pieceAppearance = orbitAppearance.pieces[idx];\n if (!pieceAppearance) {\n return;\n }\n const faceletAppearance = pieceAppearance.facelets[orientation];\n if (!faceletAppearance) {\n return;\n }\n const appearance =\n typeof faceletAppearance === \"string\"\n ? faceletAppearance\n : faceletAppearance?.appearance;\n const colorMap = colorMaps[appearance];\n if (colorMap) {\n originalColor = colorMap[originalColor];\n }\n })();\n } else {\n originalColor = elem.style.fill;\n }\n this.originalColors[id] = originalColor;\n this.gradients[id] = this.newGradient(id, originalColor);\n this.gradientDefs.appendChild(this.gradients[id]);\n elem.setAttribute(\"style\", `fill: url(#grad-${this.svgID}-${id})`);\n }\n }\n }\n }\n\n public drawKPuzzle(\n kpuzzle: KPuzzle,\n nextState?: Transformation,\n fraction?: number,\n ): void {\n this.draw(kpuzzle.definition, kpuzzle.state, nextState, fraction);\n }\n\n // TODO: save definition in the constructor?\n public draw(\n definition: KPuzzleDefinition,\n state: Transformation,\n nextState?: Transformation,\n fraction?: number,\n ): void {\n for (const orbitName in definition.orbits) {\n const orbitDefinition = definition.orbits[orbitName];\n\n const curOrbitState = state[orbitName];\n const nextOrbitState = nextState ? nextState[orbitName] : null;\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n for (\n let orientation = 0;\n orientation < orbitDefinition.orientations;\n orientation++\n ) {\n const id = this.elementID(orbitName, idx, orientation);\n const fromCur = this.elementID(\n orbitName,\n curOrbitState.permutation[idx],\n (orbitDefinition.orientations -\n curOrbitState.orientation[idx] +\n orientation) %\n orbitDefinition.orientations,\n );\n let singleColor = false;\n if (nextOrbitState) {\n const fromNext = this.elementID(\n orbitName,\n nextOrbitState.permutation[idx],\n (orbitDefinition.orientations -\n nextOrbitState.orientation[idx] +\n orientation) %\n orbitDefinition.orientations,\n );\n if (fromCur === fromNext) {\n singleColor = true; // TODO: Avoid redundant work during move.\n }\n fraction = fraction || 0; // TODO Use the type system to tie this to nextState?\n const easedBackwardsPercent =\n 100 * (1 - fraction * fraction * (2 - fraction * fraction)); // TODO: Move easing up the stack.\n this.gradients[id].children[0].setAttribute(\n \"stop-color\",\n this.originalColors[fromCur],\n );\n this.gradients[id].children[1].setAttribute(\n \"stop-color\",\n this.originalColors[fromCur],\n );\n this.gradients[id].children[1].setAttribute(\n \"offset\",\n `${Math.max(easedBackwardsPercent - 5, 0)}%`,\n );\n this.gradients[id].children[2].setAttribute(\n \"offset\",\n `${Math.max(easedBackwardsPercent - 5, 0)}%`,\n );\n this.gradients[id].children[3].setAttribute(\n \"offset\",\n `${easedBackwardsPercent}%`,\n );\n this.gradients[id].children[4].setAttribute(\n \"offset\",\n `${easedBackwardsPercent}%`,\n );\n this.gradients[id].children[4].setAttribute(\n \"stop-color\",\n this.originalColors[fromNext],\n );\n this.gradients[id].children[5].setAttribute(\n \"stop-color\",\n this.originalColors[fromNext],\n );\n } else {\n singleColor = true; // TODO: Avoid redundant work during move.\n }\n if (singleColor) {\n this.gradients[id].children[0].setAttribute(\n \"stop-color\",\n this.originalColors[fromCur],\n );\n this.gradients[id].children[1].setAttribute(\n \"stop-color\",\n this.originalColors[fromCur],\n );\n this.gradients[id].children[1].setAttribute(\"offset\", `100%`);\n this.gradients[id].children[2].setAttribute(\"offset\", `100%`);\n this.gradients[id].children[3].setAttribute(\"offset\", `100%`);\n this.gradients[id].children[4].setAttribute(\"offset\", `100%`);\n }\n // this.gradients[id]\n // this.elementByID(id).style.fill = this.originalColors[from];\n }\n }\n }\n }\n\n private newGradient(id: string, originalColor: string): SVGGradientElement {\n const grad = document.createElementNS(\n xmlns,\n \"radialGradient\",\n ) as SVGGradientElement;\n grad.setAttribute(\"id\", `grad-${this.svgID}-${id}`);\n grad.setAttribute(\"r\", `70.7107%`); // TODO: Adapt to puzzle.\n const stopDefs = [\n { offset: 0, color: originalColor },\n { offset: 0, color: originalColor },\n { offset: 0, color: \"black\" },\n { offset: 0, color: \"black\" },\n { offset: 0, color: originalColor },\n { offset: 100, color: originalColor },\n ];\n for (const stopDef of stopDefs) {\n const stop = document.createElementNS(xmlns, \"stop\");\n stop.setAttribute(\"offset\", `${stopDef.offset}%`);\n stop.setAttribute(\"stop-color\", stopDef.color);\n stop.setAttribute(\"stop-opacity\", \"1\");\n grad.appendChild(stop);\n }\n return grad;\n }\n\n private elementID(\n orbitName: string,\n idx: number,\n orientation: number,\n ): string {\n return orbitName + \"-l\" + idx + \"-o\" + orientation;\n }\n\n private elementByID(id: string): HTMLElement {\n // TODO: Use classes and scope selector to SVG element.\n return this.element.querySelector(\"#\" + id) as HTMLElement;\n }\n}\n", "// TODO: This file is here to avoid dependency loops, but it should eventually\n// move back into `cubing/puzzles`. We currently have a few functions that are\n// hardcoded to require synchronous access to this definition, and we need to\n// find a better way to do that.\n\n// TODO: this would be a raw `.json` file, but Parcel runs into an error from\n\nimport type { KPuzzleDefinition } from \"..\";\n\n// using that as both a sync and async import. Probably https://github.com/parcel-bundler/parcel/issues/2546\nexport const cube3x3x3KPuzzle: KPuzzleDefinition = {\n name: \"3x3x3\",\n orbits: {\n EDGES: { numPieces: 12, orientations: 2 },\n CORNERS: { numPieces: 8, orientations: 3 },\n CENTERS: { numPieces: 6, orientations: 4 },\n },\n startPieces: {\n EDGES: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 0, 0],\n },\n },\n moves: {\n U: {\n EDGES: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [1, 0, 0, 0, 0, 0],\n },\n },\n y: {\n EDGES: {\n permutation: [1, 2, 3, 0, 5, 6, 7, 4, 10, 8, 11, 9],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 7, 4, 5, 6],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 2, 3, 4, 1, 5],\n orientation: [1, 0, 0, 0, 0, 3],\n },\n },\n x: {\n EDGES: {\n permutation: [4, 8, 0, 9, 6, 10, 2, 11, 5, 7, 1, 3],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 3, 5, 7, 6, 2, 1],\n orientation: [2, 1, 2, 1, 1, 2, 1, 2],\n },\n CENTERS: {\n permutation: [2, 1, 5, 3, 0, 4],\n orientation: [0, 3, 0, 1, 2, 2],\n },\n },\n L: {\n EDGES: {\n permutation: [0, 1, 2, 11, 4, 5, 6, 9, 8, 3, 10, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 6, 2, 4, 3, 5, 7],\n orientation: [0, 0, 2, 1, 0, 2, 1, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 1, 0, 0, 0, 0],\n },\n },\n F: {\n EDGES: {\n permutation: [9, 1, 2, 3, 8, 5, 6, 7, 0, 4, 10, 11],\n orientation: [1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0],\n },\n CORNERS: {\n permutation: [3, 1, 2, 5, 0, 4, 6, 7],\n orientation: [1, 0, 0, 2, 2, 1, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 1, 0, 0, 0],\n },\n },\n R: {\n EDGES: {\n permutation: [0, 8, 2, 3, 4, 10, 6, 7, 5, 9, 1, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 2, 3, 7, 5, 6, 1],\n orientation: [2, 1, 0, 0, 1, 0, 0, 2],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 1, 0, 0],\n },\n },\n B: {\n EDGES: {\n permutation: [0, 1, 10, 3, 4, 5, 11, 7, 8, 9, 6, 2],\n orientation: [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1],\n },\n CORNERS: {\n permutation: [0, 7, 1, 3, 4, 5, 2, 6],\n orientation: [0, 2, 1, 0, 0, 0, 2, 1],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 1, 0],\n },\n },\n D: {\n EDGES: {\n permutation: [0, 1, 2, 3, 7, 4, 5, 6, 8, 9, 10, 11],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 1, 2, 3, 4, 5],\n orientation: [0, 0, 0, 0, 0, 1],\n },\n },\n z: {\n EDGES: {\n permutation: [9, 3, 11, 7, 8, 1, 10, 5, 0, 4, 2, 6],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [3, 2, 6, 5, 0, 4, 7, 1],\n orientation: [1, 2, 1, 2, 2, 1, 2, 1],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 1, 1, 3, 1],\n },\n },\n M: {\n EDGES: {\n permutation: [2, 1, 6, 3, 0, 5, 4, 7, 8, 9, 10, 11],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 0, 0, 0, 2, 0],\n },\n },\n E: {\n EDGES: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [0, 0, 0, 0, 0, 0],\n },\n },\n S: {\n EDGES: {\n permutation: [0, 3, 2, 7, 4, 1, 6, 5, 8, 9, 10, 11],\n orientation: [0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 0, 1, 0, 1],\n },\n },\n u: {\n EDGES: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7, 10, 8, 11, 9],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [1, 2, 3, 0, 4, 5, 6, 7],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 2, 3, 4, 1, 5],\n orientation: [1, 0, 0, 0, 0, 0],\n },\n },\n l: {\n EDGES: {\n permutation: [2, 1, 6, 11, 0, 5, 4, 9, 8, 3, 10, 7],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [0, 1, 6, 2, 4, 3, 5, 7],\n orientation: [0, 0, 2, 1, 0, 2, 1, 0],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 1, 0, 0, 2, 0],\n },\n },\n f: {\n EDGES: {\n permutation: [9, 3, 2, 7, 8, 1, 6, 5, 0, 4, 10, 11],\n orientation: [1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0],\n },\n CORNERS: {\n permutation: [3, 1, 2, 5, 0, 4, 6, 7],\n orientation: [1, 0, 0, 2, 2, 1, 0, 0],\n },\n CENTERS: {\n permutation: [1, 5, 2, 0, 4, 3],\n orientation: [1, 1, 1, 1, 0, 1],\n },\n },\n r: {\n EDGES: {\n permutation: [4, 8, 0, 3, 6, 10, 2, 7, 5, 9, 1, 11],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [4, 0, 2, 3, 7, 5, 6, 1],\n orientation: [2, 1, 0, 0, 1, 0, 0, 2],\n },\n CENTERS: {\n permutation: [2, 1, 5, 3, 0, 4],\n orientation: [0, 0, 0, 1, 2, 2],\n },\n },\n b: {\n EDGES: {\n permutation: [0, 5, 10, 1, 4, 7, 11, 3, 8, 9, 6, 2],\n orientation: [0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1],\n },\n CORNERS: {\n permutation: [0, 7, 1, 3, 4, 5, 2, 6],\n orientation: [0, 2, 1, 0, 0, 0, 2, 1],\n },\n CENTERS: {\n permutation: [3, 0, 2, 5, 4, 1],\n orientation: [3, 3, 0, 3, 1, 3],\n },\n },\n d: {\n EDGES: {\n permutation: [0, 1, 2, 3, 7, 4, 5, 6, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [0, 1, 2, 3, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [0, 0, 0, 0, 0, 1],\n },\n },\n },\n};\n\ncube3x3x3KPuzzle.moves[\"Uw\"] = cube3x3x3KPuzzle.moves[\"u\"];\ncube3x3x3KPuzzle.moves[\"Lw\"] = cube3x3x3KPuzzle.moves[\"l\"];\ncube3x3x3KPuzzle.moves[\"Fw\"] = cube3x3x3KPuzzle.moves[\"f\"];\ncube3x3x3KPuzzle.moves[\"Rw\"] = cube3x3x3KPuzzle.moves[\"r\"];\ncube3x3x3KPuzzle.moves[\"Bw\"] = cube3x3x3KPuzzle.moves[\"b\"];\ncube3x3x3KPuzzle.moves[\"Dw\"] = cube3x3x3KPuzzle.moves[\"d\"];\n\ncube3x3x3KPuzzle.moves[\"Rv\"] = cube3x3x3KPuzzle.moves[\"x\"];\ncube3x3x3KPuzzle.moves[\"Uv\"] = cube3x3x3KPuzzle.moves[\"y\"];\ncube3x3x3KPuzzle.moves[\"Fv\"] = cube3x3x3KPuzzle.moves[\"z\"];\ncube3x3x3KPuzzle.moves[\"Lv\"] = {\n EDGES: {\n permutation: [2, 10, 6, 11, 0, 8, 4, 9, 1, 3, 5, 7],\n orientation: [1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],\n },\n CORNERS: {\n permutation: [1, 7, 6, 2, 0, 3, 5, 4],\n orientation: [2, 1, 2, 1, 1, 2, 1, 2],\n },\n CENTERS: {\n permutation: [4, 1, 0, 3, 5, 2],\n orientation: [2, 1, 0, 3, 2, 0],\n },\n};\ncube3x3x3KPuzzle.moves[\"Dv\"] = {\n EDGES: {\n permutation: [3, 0, 1, 2, 7, 4, 5, 6, 9, 11, 8, 10],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [3, 0, 1, 2, 5, 6, 7, 4],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0],\n },\n CENTERS: {\n permutation: [0, 4, 1, 2, 3, 5],\n orientation: [3, 0, 0, 0, 0, 1],\n },\n};\ncube3x3x3KPuzzle.moves[\"Bv\"] = {\n EDGES: {\n permutation: [8, 5, 10, 1, 9, 7, 11, 3, 4, 0, 6, 2],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n },\n CORNERS: {\n permutation: [4, 7, 1, 0, 5, 3, 2, 6],\n orientation: [1, 2, 1, 2, 2, 1, 2, 1],\n },\n CENTERS: {\n permutation: [3, 0, 2, 5, 4, 1],\n orientation: [3, 3, 3, 3, 1, 3],\n },\n};\n", "import { experimentalNormalizePuzzleOrientation as normalize3x3x3Orientation } from \"../protocol\";\nimport type { Transformation } from \"./definition_types\";\nimport { cube3x3x3KPuzzle as def } from \"./3x3x3/3x3x3.kpuzzle.json\";\nimport {\n areOrbitTransformationsEquivalent,\n areTransformationsEquivalent,\n} from \"./transformations\";\n\n// The `options` argument is required for now, because we haven't yet come up\n// with a general way to specify different kinds of solved for the same puzle.\nexport function experimentalIs3x3x3Solved(\n transformation: Transformation,\n options: { ignoreCenterOrientation: boolean },\n): boolean {\n const normalized = normalize3x3x3Orientation(transformation);\n if (options.ignoreCenterOrientation) {\n return (\n areOrbitTransformationsEquivalent(\n def,\n \"EDGES\",\n normalized,\n def.startPieces,\n ) &&\n areOrbitTransformationsEquivalent(\n def,\n \"CORNERS\",\n normalized,\n def.startPieces,\n )\n );\n } else {\n return areTransformationsEquivalent(def, normalized, def.startPieces);\n }\n}\n", "import { Alg } from \"../../alg\";\nimport {\n combineTransformations,\n invertTransformation,\n KPuzzle,\n Transformation,\n} from \"../../kpuzzle\";\n// TODO: Should we expose this directly in the `puzzles` package for sync uses?\nimport { experimentalCube3x3x3KPuzzle as def } from \"../../kpuzzle\";\n\nexport function puzzleOrientationIdx(state: Transformation): [number, number] {\n const idxU = state[\"CENTERS\"].permutation[0];\n const idxD = state[\"CENTERS\"].permutation[5];\n const unadjustedIdxL = state[\"CENTERS\"].permutation[1];\n let idxL = unadjustedIdxL;\n if (idxU < unadjustedIdxL) {\n idxL--;\n }\n if (idxD < unadjustedIdxL) {\n idxL--;\n }\n return [idxU, idxL];\n}\n\nconst puzzleOrientationCache: Transformation[][] = new Array(6)\n .fill(0)\n .map(() => {\n return new Array<Transformation>(6);\n });\n\n// We use a new block to avoid keeping a reference to temporary vars.\n{\n const orientationKpuzzle = new KPuzzle(def);\n const uAlgs: Alg[] = [\"\", \"z\", \"x\", \"z'\", \"x'\", \"x2\"].map((s) =>\n Alg.fromString(s),\n );\n const yAlg = new Alg(\"y\");\n for (const uAlg of uAlgs) {\n orientationKpuzzle.reset();\n orientationKpuzzle.applyAlg(uAlg);\n for (let i = 0; i < 4; i++) {\n orientationKpuzzle.applyAlg(yAlg);\n const [idxU, idxL] = puzzleOrientationIdx(orientationKpuzzle.state);\n puzzleOrientationCache[idxU][idxL] = invertTransformation(\n def,\n orientationKpuzzle.state,\n );\n }\n }\n}\n\nexport function normalizePuzzleOrientation(s: Transformation): Transformation {\n const [idxU, idxL] = puzzleOrientationIdx(s);\n const orientationTransformation = puzzleOrientationCache[idxU][idxL];\n return combineTransformations(def, s, orientationTransformation);\n}\n\n// TODO: combine with `orientPuzzle`?\nexport function reorientPuzzle(\n s: Transformation,\n idxU: number,\n idxL: number,\n): Transformation {\n const orientationTransformation = invertTransformation(\n def,\n puzzleOrientationCache[idxU][idxL],\n );\n return combineTransformations(def, s, orientationTransformation);\n}\n", "import type { Transformation } from \"../../kpuzzle\";\nimport {\n identityPermutation,\n lexToPermutation,\n maskToOrientations,\n orientationsToMask,\n permutationToLex,\n} from \"./orbit-indexing\";\nimport {\n normalizePuzzleOrientation,\n puzzleOrientationIdx,\n reorientPuzzle,\n} from \"./puzzle-orientation\";\n\ntype Binary3x3x3State = ArrayBuffer;\n\n// Bit lengths of the encoded components, in order.\nconst BIT_LENGTHS = [29, 12, 16, 13, 3, 2, 1, 12];\n\n// These fields are sorted by the order in which they appear in the binary format.\nexport interface Binary3x3x3Components {\n epLex: number; // 29 bits, edge permutation\n eoMask: number; // 12 bits, edge orientation\n cpLex: number; // 16 bits, corner permutation\n coMask: number; // 13 bits, corner orientation\n poIdxU: number; // 3 bits, puzzle orientation (U face)\n poIdxL: number; // 2 bits, puzzle orientation (L face)\n moSupport: number; // 1 bit, center orientation support\n moMask: number; // 12 bits, center orientation\n}\n\n// There are various clever ways to do this, but this is simple and efficient.\nfunction arraySum(arr: number[]): number {\n let total = 0;\n for (const entry of arr) {\n total += entry;\n }\n return total;\n}\n\n// Due to limitations in JS bit operations, this is unsafe if any of the bit lengths span across the contents of more than 4 bytes.\n// - Safe: [8, 32]\n// - Unsafe: [4, 32, 4]\n// - Unsafe: [40, 4]\nfunction splitBinary(bitLengths: number[], buffy: ArrayBuffer): number[] {\n const u8buffy = new Uint8Array(buffy);\n let at = 0;\n let bits = 0;\n let accum = 0;\n const values: number[] = [];\n for (const bitLength of bitLengths) {\n while (bits < bitLength) {\n accum = (accum << 8) | u8buffy[at++];\n bits += 8;\n }\n values.push((accum >> (bits - bitLength)) & ((1 << bitLength) - 1));\n bits -= bitLength;\n }\n return values;\n}\n\n// See above for safety notes.\nfunction concatBinary(bitLengths: number[], values: number[]): ArrayBuffer {\n const buffy = new Uint8Array(Math.ceil(arraySum(bitLengths) / 8));\n let at = 0;\n let bits = 0;\n let accum = 0;\n for (let i = 0; i < bitLengths.length; i++) {\n accum = (accum << bitLengths[i]) | values[i];\n bits += bitLengths[i];\n while (bits >= 8) {\n buffy[at++] = accum >> (bits - 8);\n bits -= 8;\n }\n }\n if (bits > 0) {\n buffy[at++] = accum << (8 - bits);\n }\n return buffy;\n}\n\n// 0x111 (for idxU) means \"not supported\"\nfunction supportsPuzzleOrientation(components: Binary3x3x3Components): boolean {\n return components.poIdxU !== 7;\n}\n\nexport function reid3x3x3ToBinaryComponents(\n state: Transformation,\n): Binary3x3x3Components {\n const normedState = normalizePuzzleOrientation(state);\n\n const epLex = permutationToLex(normedState[\"EDGES\"].permutation);\n const eoMask = orientationsToMask(2, normedState[\"EDGES\"].orientation);\n const cpLex = permutationToLex(normedState[\"CORNERS\"].permutation);\n const coMask = orientationsToMask(3, normedState[\"CORNERS\"].orientation);\n const [poIdxU, poIdxL] = puzzleOrientationIdx(state);\n const moSupport = 1; // Required for now.\n const moMask = orientationsToMask(4, normedState[\"CENTERS\"].orientation);\n\n return {\n epLex,\n eoMask,\n cpLex,\n coMask,\n poIdxU,\n poIdxL,\n moSupport,\n moMask,\n };\n}\n\nexport function binaryComponentsToTwizzleBinary(\n components: Binary3x3x3Components,\n): Binary3x3x3State {\n const { epLex, eoMask, cpLex, coMask, poIdxU, poIdxL, moSupport, moMask } =\n components;\n\n return concatBinary(BIT_LENGTHS, [\n epLex,\n eoMask,\n cpLex,\n coMask,\n poIdxU,\n poIdxL,\n moSupport,\n moMask,\n ]);\n}\n\nexport function reid3x3x3ToTwizzleBinary(\n state: Transformation,\n): Binary3x3x3State {\n const components: Binary3x3x3Components = reid3x3x3ToBinaryComponents(state);\n return binaryComponentsToTwizzleBinary(components);\n}\n\nexport function twizzleBinaryToBinaryComponents(\n buffer: ArrayBuffer,\n): Binary3x3x3Components {\n const [epLex, eoMask, cpLex, coMask, poIdxU, poIdxL, moSupport, moMask] =\n splitBinary(BIT_LENGTHS, buffer);\n\n return {\n epLex,\n eoMask,\n cpLex,\n coMask,\n poIdxU,\n poIdxL,\n moSupport,\n moMask,\n };\n}\n\nexport function binaryComponentsToReid3x3x3(\n components: Binary3x3x3Components,\n): Transformation {\n if (components.moSupport !== 1) {\n throw new Error(\"Must support center orientation.\");\n }\n\n const normedState = {\n EDGES: {\n permutation: lexToPermutation(12, components.epLex),\n orientation: maskToOrientations(2, 12, components.eoMask),\n },\n CORNERS: {\n permutation: lexToPermutation(8, components.cpLex),\n orientation: maskToOrientations(3, 8, components.coMask),\n },\n CENTERS: {\n permutation: identityPermutation(6),\n orientation: maskToOrientations(4, 6, components.moMask),\n },\n };\n\n if (!supportsPuzzleOrientation(components)) {\n return normedState;\n }\n\n return reorientPuzzle(normedState, components.poIdxU, components.poIdxL);\n}\n\n// Returns a list of error string.\n// An empty list means validation success.\nfunction validateComponents(components: Binary3x3x3Components): string[] {\n const errors = [];\n if (components.epLex < 0 || components.epLex >= 479001600) {\n errors.push(`epLex (${components.epLex}) out of range`);\n }\n if (components.cpLex < 0 || components.cpLex >= 40320) {\n errors.push(`cpLex (${components.cpLex}) out of range`);\n }\n if (components.coMask < 0 || components.coMask >= 6561) {\n errors.push(`coMask (${components.coMask}) out of range`);\n }\n if (components.poIdxU < 0 || components.poIdxU >= 6) {\n // 0x111 (for idxU) means \"not supported\"\n if (supportsPuzzleOrientation(components)) {\n errors.push(`poIdxU (${components.poIdxU}) out of range`);\n }\n }\n // The following cannot be (f decoded from binary properl) out of rangey.\n if (components.eoMask < 0 || components.eoMask >= 4096) {\n errors.push(`eoMask (${components.eoMask}) out of range`);\n }\n if (components.moMask < 0 || components.moMask >= 4096) {\n errors.push(`moMask (${components.moMask}) out of range`);\n }\n if (components.poIdxL < 0 || components.poIdxL >= 4) {\n errors.push(`poIdxL (${components.poIdxL}) out of range`);\n }\n if (components.moSupport < 0 || components.moSupport >= 2) {\n errors.push(`moSupport (${components.moSupport}) out of range`);\n }\n return errors;\n}\n\nexport function twizzleBinaryToReid3x3x3(buffy: ArrayBuffer): Transformation {\n const components = twizzleBinaryToBinaryComponents(buffy);\n const errors = validateComponents(components);\n if (errors.length !== 0) {\n throw new Error(`Invalid binary state components: ${errors.join(\", \")}`);\n }\n return binaryComponentsToReid3x3x3(components);\n}\n", "export function bufferToSpacedHex(buffer: ArrayBuffer): string {\n // buffer is an ArrayBuffer\n return (\n Array.prototype.map.call(new Uint8Array(buffer), (x: number) =>\n (\"00\" + x.toString(16)).slice(-2),\n ) as string[]\n ).join(\" \");\n}\n\nexport function spacedHexToBuffer(hex: string): Uint8Array {\n return new Uint8Array(hex.split(\" \").map((c) => parseInt(c, 16)));\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/search/inside/solve/parseSGS.ts"],
|
|
4
|
-
"sourcesContent": ["import { Alg } from \"../../../alg\";\nimport {\n identityTransformation,\n invertTransformation,\n KPuzzle,\n KPuzzleDefinition,\n Transformation,\n} from \"../../../kpuzzle\";\n\ninterface PieceReference {\n orbitName: string;\n permutationIdx: number;\n}\n\nexport interface SGSAction {\n alg: Alg;\n transformation: Transformation;\n}\n\nexport interface SGSCachedData {\n ordering: {\n pieceOrdering: PieceReference[];\n lookup: Record<string, SGSAction>;\n }[];\n}\n\nexport function parseSGS(def: KPuzzleDefinition, sgs: string): SGSCachedData {\n const subgroupSizes: number[] = [];\n const sgsActions: SGSAction[] = [];\n for (const line of sgs.split(\"\\n\")) {\n const lineTokens = line.split(\" \");\n if (line.startsWith(\"SetOrder \")) {\n // ignore\n } else if (line.startsWith(\"Alg \")) {\n const alg = Alg.fromString(line.substring(4));\n const kpuzzle = new KPuzzle(def);\n kpuzzle.reset();\n kpuzzle.applyAlg(alg);\n sgsActions.push({ alg: alg, transformation: kpuzzle.state });\n } else if (line.startsWith(\"SubgroupSizes \")) {\n for (let j = 1; j < lineTokens.length; j++) {\n subgroupSizes.push(parseInt(lineTokens[j]));\n }\n }\n }\n\n const sgsCachedData: SGSCachedData = {\n ordering: new Array(subgroupSizes.length),\n };\n const subgroupAlgOffsets: number[] = [];\n let sum = 0;\n subgroupAlgOffsets.push(0);\n const emptyAlg = Alg.fromString(\"\");\n const identity = identityTransformation(def);\n for (let i = 0; i < subgroupSizes.length; i++) {\n sum += subgroupSizes[i];\n subgroupAlgOffsets.push(sum);\n sgsActions.splice(sum - 1, 0, { alg: emptyAlg, transformation: identity });\n }\n if (sgsActions.length !== sum) {\n throw Error(\n `Bad sgs; expected ${sum - subgroupSizes.length} algs but saw ${\n sgsActions.length - subgroupSizes.length\n }`,\n );\n }\n const processedPieces: Record<string, boolean[]> = {};\n for (const orbitName in def.orbits) {\n const orbitDefinition = def.orbits[orbitName];\n processedPieces[orbitName] = new Array(orbitDefinition.numPieces).fill(\n false,\n );\n }\n for (let i = subgroupSizes.length - 1; i >= 0; i--) {\n const pieceOrdering: PieceReference[] = [];\n for (let j = subgroupAlgOffsets[i]; j < subgroupAlgOffsets[i + 1]; j++) {\n const transformation = sgsActions[j].transformation;\n for (const orbitName in def.orbits) {\n const orbitDefinition = def.orbits[orbitName];\n for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {\n if (\n transformation[orbitName].permutation[idx] !== idx ||\n transformation[orbitName].orientation[idx] !== 0\n ) {\n if (!processedPieces[orbitName][idx]) {\n pieceOrdering.push({ orbitName: orbitName, permutationIdx: idx });\n processedPieces[orbitName][idx] = true;\n }\n }\n }\n }\n }\n const lookup: Record<string, SGSAction> = {};\n for (let j = subgroupAlgOffsets[i]; j < subgroupAlgOffsets[i + 1]; j++) {\n const transformation = invertTransformation(\n def,\n sgsActions[j].transformation,\n );\n let key = \"\";\n for (let k = 0; k < pieceOrdering.length; k++) {\n const loc = pieceOrdering[k];\n key = `${key} ${\n transformation[loc.orbitName].permutation[loc.permutationIdx]\n } ${transformation[loc.orbitName].orientation[loc.permutationIdx]}`;\n }\n lookup[key] = sgsActions[j];\n sgsActions[j].alg = sgsActions[j].alg.invert();\n sgsActions[j].transformation = invertTransformation(\n def,\n sgsActions[j].transformation,\n );\n }\n sgsCachedData.ordering[i] = {\n pieceOrdering: pieceOrdering,\n lookup: lookup,\n };\n }\n return sgsCachedData;\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;AA0BO,kBAAkB,KAAwB,KAA4B;AAC3E,QAAM,gBAA0B;AAChC,QAAM,aAA0B;AAChC,aAAW,QAAQ,IAAI,MAAM,OAAO;AAClC,UAAM,aAAa,KAAK,MAAM;AAC9B,QAAI,KAAK,WAAW,cAAc;AAAA,eAEvB,KAAK,WAAW,SAAS;AAClC,YAAM,MAAM,IAAI,WAAW,KAAK,UAAU;AAC1C,YAAM,UAAU,IAAI,QAAQ;AAC5B,cAAQ;AACR,cAAQ,SAAS;AACjB,iBAAW,KAAK,EAAE,KAAU,gBAAgB,QAAQ;AAAA,eAC3C,KAAK,WAAW,mBAAmB;AAC5C,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,sBAAc,KAAK,SAAS,WAAW;AAAA;AAAA;AAAA;AAK7C,QAAM,gBAA+B;AAAA,IACnC,UAAU,IAAI,MAAM,cAAc;AAAA;AAEpC,QAAM,qBAA+B;AACrC,MAAI,MAAM;AACV,qBAAmB,KAAK;AACxB,QAAM,WAAW,IAAI,WAAW;AAChC,QAAM,WAAW,uBAAuB;AACxC,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,WAAO,cAAc;AACrB,uBAAmB,KAAK;AACxB,eAAW,OAAO,MAAM,GAAG,GAAG,EAAE,KAAK,UAAU,gBAAgB;AAAA;AAEjE,MAAI,WAAW,WAAW,KAAK;AAC7B,UAAM,MACJ,qBAAqB,MAAM,cAAc,uBACvC,WAAW,SAAS,cAAc;AAAA;AAIxC,QAAM,kBAA6C;AACnD,aAAW,aAAa,IAAI,QAAQ;AAClC,UAAM,kBAAkB,IAAI,OAAO;AACnC,oBAAgB,aAAa,IAAI,MAAM,gBAAgB,WAAW,KAChE;AAAA;AAGJ,WAAS,IAAI,cAAc,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,UAAM,gBAAkC;AACxC,aAAS,IAAI,mBAAmB,IAAI,IAAI,mBAAmB,IAAI,IAAI,KAAK;AACtE,YAAM,iBAAiB,WAAW,GAAG;AACrC,iBAAW,aAAa,IAAI,QAAQ;AAClC,cAAM,kBAAkB,IAAI,OAAO;AACnC,iBAAS,MAAM,GAAG,MAAM,gBAAgB,WAAW,OAAO;AACxD,cACE,eAAe,WAAW,YAAY,SAAS,OAC/C,eAAe,WAAW,YAAY,SAAS,GAC/C;AACA,gBAAI,CAAC,gBAAgB,WAAW,MAAM;AACpC,4BAAc,KAAK,EAAE,WAAsB,gBAAgB;AAC3D,8BAAgB,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAM5C,UAAM,SAAoC;AAC1C,aAAS,IAAI,mBAAmB,IAAI,IAAI,mBAAmB,IAAI,IAAI,KAAK;AACtE,YAAM,iBAAiB,qBACrB,KACA,WAAW,GAAG;AAEhB,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,cAAM,MAAM,cAAc;AAC1B,cAAM,GAAG,OACP,eAAe,IAAI,WAAW,YAAY,IAAI,mBAC5C,eAAe,IAAI,WAAW,YAAY,IAAI;AAAA;AAEpD,aAAO,OAAO,WAAW;AACzB,iBAAW,GAAG,MAAM,WAAW,GAAG,IAAI;AACtC,iBAAW,GAAG,iBAAiB,qBAC7B,KACA,WAAW,GAAG;AAAA;AAGlB,kBAAc,SAAS,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA;AAAA;AAGJ,SAAO;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/puzzles/implementations/clock/clock.kpuzzle.json.ts"],
|
|
4
|
-
"sourcesContent": ["import type { KPuzzleDefinition } from \"../../../kpuzzle\";\n\nexport const clockKPuzzle: KPuzzleDefinition = {\n name: \"Clock\",\n orbits: {\n DIALS: { numPieces: 18, orientations: 12 },\n FACES: { numPieces: 18, orientations: 1 },\n FRAME: { numPieces: 1, orientations: 2 },\n },\n startPieces: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n moves: {\n UR_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 1, 1, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n DR_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n DL_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n UL_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n U_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [1, 1, 1, 1, 1, 1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n R_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 1, 1, 0, 1, 1, 0, 1, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n D_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -1, 0, -1],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n L_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n ALL_PLUS_: {\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 0, -1, 0, 0, 0, -1, 0, -1],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n y2: {\n DIALS: {\n permutation: [\n 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 1, 2, 3, 4, 5, 6, 7, 8,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 1, 2, 3, 4, 5, 6, 7, 8,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [1] },\n },\n UL: {\n // TODO: define \"pin up\" as something other than a normal move.\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n UR: {\n // TODO: define \"pin up\" as something other than a normal move.\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n DL: {\n // TODO: define \"pin up\" as something other than a normal move.\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n DR: {\n // TODO: define \"pin up\" as something other than a normal move.\n DIALS: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FACES: {\n permutation: [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ],\n orientation: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n },\n FRAME: { permutation: [0], orientation: [0] },\n },\n },\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/search/inside/solve/tremble.ts", "../../src/cubing/search/inside/solve/puzzles/2x2x2.ts", "../../src/cubing/search/inside/solve/puzzles/4x4x4.ts", "../../src/cubing/search/inside/solve/puzzles/megaminx.ts", "../../src/cubing/search/inside/solve/puzzles/pyraminx.ts", "../../src/cubing/search/inside/solve/puzzles/skewb.ts", "../../src/cubing/search/inside/solve/puzzles/big-cubes.ts", "../../src/cubing/search/inside/solve/puzzles/5x5x5.ts", "../../src/cubing/search/inside/solve/puzzles/sq1.ts", "../../src/cubing/search/inside/solve/puzzles/fto.ts", "../../src/cubing/search/inside/api.ts", "../../src/cubing/search/inside/entry.js"],
|
|
4
|
-
"sourcesContent": ["import { Alg, AlgBuilder, Move, QuantumMove } from \"../../../alg\";\nimport {\n areStatesEquivalent,\n combineTransformations,\n identityTransformation,\n invertTransformation,\n KPuzzle,\n KPuzzleDefinition,\n Transformation,\n} from \"../../../kpuzzle\";\nimport { countMoves } from \"../../../notation\";\nimport type { SGSAction, SGSCachedData } from \"./parseSGS\";\nimport { randomChoiceFactory } from \"../../../vendor/random-uint-below\";\n\nconst DEFAULT_STAGE1_DEPTH_LIMIT = 2; // Moderately performant default.\n\nconst DOUBLECHECK_PLACED_PIECES = true;\nconst DEBUG = false;\n\n// TODO: Take moves instead of move names?\nfunction calculateMoves(\n def: KPuzzleDefinition,\n moveNames: string[],\n): {\n move: Move;\n transformation: Transformation;\n}[] {\n const searchMoves: {\n move: Move;\n transformation: Transformation;\n }[] = [];\n // const identity = identityTransformation(def); // TODO\n const kpuzzle = new KPuzzle(def);\n // TODO: Make it easy to filter moves.\n moveNames.forEach(function (moveName) {\n const rootMove = new Move(moveName);\n if (rootMove.amount !== 1) {\n throw new Error(\n \"SGS cannot handle def moves with an amount other than 1 yet.\",\n );\n }\n kpuzzle.reset();\n // eslint-disable-next-line no-constant-condition\n for (let i = 1; true; i++) {\n kpuzzle.applyMove(rootMove);\n // console.log(kpuzzle.state, identityTransformation(def));\n if (\n // TODO: Use cached identity.\n areStatesEquivalent(def, kpuzzle.state, identityTransformation(def))\n ) {\n break;\n }\n searchMoves.push({\n move: rootMove.modified({ amount: i }),\n transformation: kpuzzle.state, // TODO: make this safe through the KPuzzle API\n });\n }\n });\n return searchMoves;\n}\n\n// function badRandomMoves(moves: string[], ksp: KSolvePuzzle): KSolvePuzzleState {\n// // var sum = 0;\n// var scramble = \"\";\n// for (var i = 0; i < 1000; i++) {\n// scramble = scramble + \" \" + moves[Math.floor(moves.length * Math.random())];\n// }\n// // var sol = \"\";\n// const indexer = new TreeAlgIndexer(ksp, Alg.fromString(scramble));\n// return indexer.transformAtIndex(indexer.numMoves()) as any; // TODO\n// }\n\nexport class TrembleSolver {\n private searchMoves: {\n move: Move;\n transformation: Transformation;\n }[];\n\n constructor(\n private def: KPuzzleDefinition,\n private sgs: SGSCachedData,\n trembleMoveNames?: string[],\n ) {\n this.searchMoves = calculateMoves(\n this.def,\n trembleMoveNames ?? Object.keys(this.def.moves),\n );\n }\n\n // public badRandomMoves(): KSolvePuzzleState {\n // return badRandomMoves(this.moves, this.ksp);\n // }\n\n public async solve(\n state: Transformation,\n stage1DepthLimit: number = DEFAULT_STAGE1_DEPTH_LIMIT,\n quantumMoveOrder?: (quantumMove: QuantumMove) => number,\n ): Promise<Alg> {\n let bestAlg: Alg | null = null;\n let bestLen = 1000000;\n const recur = (\n recursiveState: Transformation,\n togo: number,\n sofar: Alg,\n ) => {\n // console.log(\"recur\");\n if (togo === 0) {\n const sgsAlg = this.sgsPhaseSolve(recursiveState, bestLen);\n if (!sgsAlg) {\n return;\n }\n // console.log(\"sgs done!\", sofar.toString(), \"|\", sgsAlg.toString());\n const newAlg = sofar\n .concat(sgsAlg)\n .simplify({ collapseMoves: true, quantumMoveOrder });\n\n const len = countMoves(newAlg);\n if (bestAlg === null || len < bestLen) {\n if (DEBUG) {\n console.log(`New best (${len} moves): ${newAlg.toString()}`);\n console.log(`Tremble moves are: ${sofar.toString()}`);\n }\n bestAlg = newAlg;\n bestLen = len;\n }\n return;\n }\n for (const searchMove of this.searchMoves) {\n recur(\n combineTransformations(\n this.def,\n recursiveState,\n searchMove.transformation,\n ),\n togo - 1,\n sofar.concat([searchMove.move]),\n );\n }\n };\n for (let d = 0; d <= stage1DepthLimit; d++) {\n recur(state, d, new Alg());\n }\n if (bestAlg === null) {\n throw new Error(\"SGS search failed.\");\n }\n return bestAlg;\n }\n\n private sgsPhaseSolve(\n initialState: Transformation,\n bestLenSofar: number,\n ): Alg | null {\n // const pieceNames = \"UFR URB UBL ULF DRF DFL DLB DBR\".split(\" \");\n\n // function loggo(s: string) {\n // // console.warn(s);\n // // document.body.appendChild(document.createElement(\"div\")).textContent = s;\n // }\n\n // console.log(\"sgsPhaseSolve\");\n const algBuilder = new AlgBuilder();\n let state = initialState;\n for (const step of this.sgs.ordering) {\n const cubieSeq = step.pieceOrdering;\n let key = \"\";\n const inverseState = invertTransformation(this.def, state);\n for (let i = 0; i < cubieSeq.length; i++) {\n const loc = cubieSeq[i];\n const orbitName = loc.orbitName;\n const idx = loc.permutationIdx;\n key += ` ${inverseState[orbitName].permutation[idx]} ${inverseState[orbitName].orientation[idx]}`;\n }\n // console.log(key, step.lookup);\n const info = step.lookup[key];\n if (!info) {\n throw new Error(\"Missing algorithm in sgs or esgs?\");\n }\n algBuilder.experimentalPushAlg(info.alg);\n if (algBuilder.experimentalNumUnits() >= bestLenSofar) {\n return null;\n }\n state = combineTransformations(this.def, state, info.transformation);\n if (DOUBLECHECK_PLACED_PIECES) {\n for (let i = 0; i < cubieSeq.length; i++) {\n const location = cubieSeq[i];\n const orbitName = location.orbitName;\n const idx = location.permutationIdx;\n if (\n state[orbitName].permutation[idx] !== idx ||\n state[orbitName].orientation[idx] !== 0\n ) {\n throw new Error(\"bad SGS :-(\");\n }\n }\n }\n }\n return algBuilder.toAlg();\n }\n}\n\nexport async function randomStateFromSGS(\n def: KPuzzleDefinition,\n sgs: SGSCachedData,\n): Promise<Transformation> {\n const randomChoice = await randomChoiceFactory<SGSAction>(); // TODO: make this sync by putting the factory into a TLA\n\n let state = identityTransformation(def);\n for (const step of sgs.ordering) {\n const sgsAction = randomChoice(Object.values(step.lookup));\n state = combineTransformations(def, state, sgsAction.transformation);\n }\n return state;\n}\n", "import type { Alg } from \"../../../../alg\";\nimport {\n KPuzzle,\n KPuzzleDefinition,\n Transformation,\n} from \"../../../../kpuzzle\";\nimport { puzzles } from \"../../../../puzzles\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport {\n randomPermute,\n randomUIntBelowFactory,\n} from \"../../../../vendor/random-uint-below\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { TrembleSolver } from \"../tremble\";\n\n// Empirical ly determined depth:\n// - \u224811 moves on average (as opposed to >13 moves for depth 2),\n// - in close to 40ms(on a MacBook Pro).\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const json: SGSCachedData = await (\n await import(\"./2x2x2.sgs.json\")\n ).cachedData222();\n return new TrembleSolver(\n await puzzles[\"2x2x2\"].def(),\n json,\n \"URFLBD\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitialize222(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: fix def consistency.\nexport async function solve222(state: Transformation): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(state, TREMBLE_DEPTH, () => 4); // TODO: Attach quantum move order lookup to puzzle.\n return alg;\n}\n\n// TODO: factor out and test.\nasync function randomizeOrbit(\n def: KPuzzleDefinition,\n orbitName: string,\n state: Transformation,\n options?: { orientationSum?: number },\n): Promise<void> {\n const randomUIntBelow = await randomUIntBelowFactory();\n await randomPermute(state[orbitName].permutation);\n\n const orbitDef = def.orbits[orbitName];\n const ori = state[orbitName].orientation;\n\n let sum = 0;\n for (let i = 0; i < orbitDef.numPieces; i++) {\n const o = randomUIntBelow(orbitDef.orientations);\n ori[i] = o;\n sum += o;\n }\n\n // console.log(\"aaaa\", options && \"orientationSum\" in options);\n if (options && \"orientationSum\" in options) {\n // console.log(\"sfdsf\", options!.orientationSum),\n ori[0] =\n (((ori[0] + options.orientationSum! - sum) % orbitDef.orientations) +\n orbitDef.orientations) %\n orbitDef.orientations;\n }\n}\n\n// TODO: Use SGS?\nexport async function random222State(): Promise<Transformation> {\n const nonExtensibleDef = await puzzles[\"2x2x2\"].def();\n const def = Object.assign({}, nonExtensibleDef);\n const kpuzzle = new KPuzzle(def);\n const stateCopy: Transformation = JSON.parse(JSON.stringify(kpuzzle.state)); // TODO\n await randomizeOrbit(def, \"CORNERS\", stateCopy, { orientationSum: 0 });\n return stateCopy;\n}\n\nexport async function random222Scramble(): Promise<Alg> {\n return await solve222(await random222State());\n}\n", "import type { Alg } from \"../../../../alg\";\nimport { addOrientationSuffix } from \"../addOrientationSuffix\";\n\nconst randomSuffixes = [\n [null, \"x\", \"x2\", \"x'\", \"z\", \"z'\"],\n [null, \"y\", \"y2\", \"y'\"],\n];\n\nlet cachedImport: Promise<\n typeof import(\"../../../../vendor/cstimer/src/js/scramble/scramble_444\")\n> | null = null;\nfunction dynamicScramble444(): Promise<\n typeof import(\"../../../../vendor/cstimer/src/js/scramble/scramble_444\")\n> {\n return (cachedImport ??= import(\n \"../../../../vendor/cstimer/src/js/scramble/scramble_444\"\n ));\n}\n\nexport async function initialize444(): Promise<void> {\n return (await dynamicScramble444()).initialize();\n}\n\nexport async function random444Scramble(): Promise<Alg> {\n return (await dynamicScramble444()).random444Scramble();\n}\n\nexport async function random444OrientedScramble(): Promise<Alg> {\n return addOrientationSuffix(await random444Scramble(), randomSuffixes);\n}\n", "import type { Alg } from \"../../../../alg\";\nimport type { Transformation } from \"../../../../kpuzzle\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { cachedMegaminxDefWithoutMO } from \"./megaminx.sgs.json\";\nimport { TrembleSolver } from \"../tremble\";\n\nconst TREMBLE_DEPTH = 2;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./megaminx.sgs.json\");\n const json: SGSCachedData = await sgs.cachedSGSDataMegaminx();\n return new TrembleSolver(await cachedMegaminxDefWithoutMO(), json, [\n \"U\",\n \"R\",\n \"F\",\n \"L\",\n \"BR\",\n \"BL\",\n \"FR\",\n \"FL\",\n \"DR\",\n \"DL\",\n \"B\",\n \"D\",\n ]);\n })())\n );\n}\n\nexport async function preInitializeMegaminx(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: centers\nexport async function solveMegaminx(state: Transformation): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const stateWithoutMO: Transformation = JSON.parse(JSON.stringify(state));\n stateWithoutMO.CENTERS.orientation = new Array(12).fill(0);\n const alg = await trembleSolver.solve(\n stateWithoutMO,\n TREMBLE_DEPTH,\n () => 5, // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n", "import type { Alg } from \"../../../../alg\";\nimport type { Transformation } from \"../../../../kpuzzle\";\nimport { puzzles } from \"../../../../puzzles\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { randomStateFromSGS, TrembleSolver } from \"../tremble\";\nimport { sgsDataPyraminxFixedOrientation } from \"./pyraminx.sgs.json\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./pyraminx.sgs.json\");\n const json: SGSCachedData = await sgs.sgsDataPyraminx();\n return new TrembleSolver(\n await puzzles.pyraminx.def(),\n json,\n \"RLUB\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitializePyraminx(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\nexport async function solvePyraminx(state: Transformation): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(state, TREMBLE_DEPTH, () => 3); // TODO: Attach quantum move order lookup to puzzle.\n return alg;\n}\n\nexport async function randomPyraminxStateFixedOrientation(): Promise<Transformation> {\n // Note: this sets all center orientations to 0.\n return randomStateFromSGS(\n await puzzles.pyraminx.def(),\n await sgsDataPyraminxFixedOrientation(),\n );\n}\n\nexport async function randomPyraminxScrambleFixedOrientation(): Promise<Alg> {\n return solvePyraminx(await randomPyraminxStateFixedOrientation());\n}\n", "import type { Alg, QuantumMove } from \"../../../../alg\";\nimport type { Transformation } from \"../../../../kpuzzle\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { randomStateFromSGS, TrembleSolver } from \"../tremble\";\nimport {\n sgsDataSkewbFixedCorner,\n skewbDefWithoutMOCached,\n} from \"./skewb.sgs.json\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./skewb.sgs.json\");\n const json: SGSCachedData = await sgs.sgsDataSkewb();\n return new TrembleSolver(\n await sgs.skewbDefWithoutMOCached(),\n json,\n \"RLUB\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitializeSkewb(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\nfunction resetCenterOrientation(state: Transformation): Transformation {\n return {\n CORNERS: state.CORNERS,\n CENTERS: {\n permutation: state.CENTERS.permutation,\n orientation: new Array(6).fill(0),\n },\n };\n}\n\n// TODO: fix def consistency.\nexport async function solveSkewb(state: Transformation): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(\n resetCenterOrientation(state),\n TREMBLE_DEPTH,\n (quantumMove: QuantumMove) => (quantumMove.family === \"y\" ? 4 : 3), // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n\nexport async function randomSkewbFixedCornerState(): Promise<Transformation> {\n // Note: this sets all center orientations to 0.\n return randomStateFromSGS(\n await skewbDefWithoutMOCached(),\n await sgsDataSkewbFixedCorner(),\n );\n}\n\nexport async function randomSkewbFixedCornerScramble(): Promise<Alg> {\n return solveSkewb(await randomSkewbFixedCornerState());\n}\n", "import { Alg, AlgBuilder, Move, QuantumMove } from \"../../../../alg\";\nimport {\n randomChoiceFactory,\n randomUIntBelowFactory,\n} from \"../../../../vendor/random-uint-below\";\n\nfunction numMoves(n: number): number {\n switch (n) {\n case 5:\n return 60;\n case 6:\n return 80;\n default:\n return 100;\n }\n}\n\nconst axesFaces = [\n [\"U\", \"D\"],\n [\"L\", \"R\"],\n [\"F\", \"B\"],\n];\nconst axesMovesCache: Map<number, QuantumMove[][]> = new Map();\nfunction cachedAxesMoves(n: number): QuantumMove[][] {\n const existing = axesMovesCache.get(n);\n if (existing) {\n return existing;\n }\n const axesMoves = [];\n for (const faces of axesFaces) {\n const axisMoveFamilies: QuantumMove[] = [];\n axesMoves.push(axisMoveFamilies);\n\n for (const face of faces) {\n axisMoveFamilies.push(new QuantumMove(face));\n if (n > 3) {\n axisMoveFamilies.push(new QuantumMove(`${face}w`));\n }\n for (let i = 3; i <= n / 2; i++) {\n axisMoveFamilies.push(new QuantumMove(`${face}w`, i));\n }\n }\n }\n axesMovesCache.set(n, axesMoves);\n return axesMoves;\n}\n\n// TODO: Document this algorithm and compare to TNoodle.\nexport async function bigCubeRandomMoves(n: number): Promise<Alg> {\n const randomUintBelow = await randomUIntBelowFactory();\n const randomChoice = await randomChoiceFactory<QuantumMove>();\n const randomNumChoice = randomChoice as any as (arr: Array<number>) => number; // TODO: Avoid needing multiple instantiations or recasting.\n\n const axesMoves = cachedAxesMoves(n);\n\n const cachedNumMoves = numMoves(n);\n const algBuilder = new AlgBuilder();\n let currentAxisIdx = 0;\n const currentAxisQuantumMoves = new Set();\n while (algBuilder.experimentalNumUnits() < cachedNumMoves) {\n const newAxisIdx = randomUintBelow(3);\n if (newAxisIdx !== currentAxisIdx) {\n currentAxisQuantumMoves.clear();\n }\n currentAxisIdx = newAxisIdx;\n\n const quantumMove = randomChoice(axesMoves[currentAxisIdx]);\n const quantumMoveStr = quantumMove.toString();\n if (currentAxisQuantumMoves.has(quantumMoveStr)) {\n // Skip duplicates and resample with replacement.\n continue;\n }\n currentAxisQuantumMoves.add(quantumMoveStr);\n algBuilder.push(new Move(quantumMove, randomNumChoice([1, 2, -1])));\n }\n\n return algBuilder.toAlg();\n}\n", "import type { Alg } from \"../../../../alg\";\nimport { addOrientationSuffix } from \"../addOrientationSuffix\";\nimport { bigCubeRandomMoves } from \"./big-cubes\";\n\nconst randomSuffixes = [\n [null, \"3Rw\", \"3Rw2\", \"3Rw'\", \"3Fw\", \"3Fw'\"],\n [null, \"3Dw\", \"3Dw2\", \"3Dw'\"],\n];\n\nexport async function oriented555RandomMoves(): Promise<Alg> {\n return addOrientationSuffix(await bigCubeRandomMoves(5), randomSuffixes);\n}\n", "import { Alg } from \"../../../../alg\";\n\nlet cachedImport: Promise<\n typeof import(\"../../../../vendor/sq12phase/scramble_sq1\")\n> | null = null;\nfunction dynamicScrambleSq1(): Promise<\n typeof import(\"../../../../vendor/sq12phase/scramble_sq1\")\n> {\n return (cachedImport ??= import(\"../../../../vendor/sq12phase/scramble_sq1\"));\n}\n\nexport async function getRandomSquare1Scramble(): Promise<Alg> {\n return Alg.fromString(\n await (await dynamicScrambleSq1()).getRandomSquare1ScrambleString(),\n );\n}\n", "import type { Alg } from \"../../../../alg\";\nimport type { Transformation } from \"../../../../kpuzzle\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { randomStateFromSGS, TrembleSolver } from \"../tremble\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./fto.sgs.json\");\n const json: SGSCachedData = await sgs.sgsDataFTO();\n return new TrembleSolver(await sgs.ftoDef(), json, [\n \"U\",\n \"R\",\n \"F\",\n \"L\",\n \"D\",\n \"B\",\n \"BR\",\n \"BL\",\n ]);\n })())\n );\n}\n\nexport async function preInitializeFTO(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: centers\nexport async function solveFTO(state: Transformation): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(\n state,\n TREMBLE_DEPTH,\n () => 3, // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n\nlet warned = false;\nexport async function randomFTOScramble(): Promise<Alg> {\n if (!warned) {\n console.warn(\n \"FTO scrambles are not yet optimized. They may be much too long (\u224890 moves).\",\n );\n warned = true;\n }\n const sgs = await import(\"./fto.sgs.json\");\n return solveFTO(\n await randomStateFromSGS(await sgs.ftoDef(), await sgs.sgsDataFTO()),\n );\n}\n", "import type { Alg } from \"../../alg\";\nimport {\n preInitialize222,\n random222Scramble,\n solve222,\n} from \"./solve/puzzles/2x2x2\";\nimport {\n initialize333,\n random333FewestMovesScramble,\n random333OrientedScramble,\n random333Scramble,\n solve333,\n} from \"./solve/puzzles/3x3x3\";\nimport {\n initialize444,\n random444OrientedScramble,\n random444Scramble,\n} from \"./solve/puzzles/4x4x4\";\nimport { solveMegaminx } from \"./solve/puzzles/megaminx\";\nimport {\n randomPyraminxScrambleFixedOrientation,\n solvePyraminx,\n} from \"./solve/puzzles/pyraminx\";\nimport {\n randomSkewbFixedCornerScramble,\n solveSkewb,\n} from \"./solve/puzzles/skewb\";\nimport { setIsInsideWorker } from \"./inside-worker\";\nimport { bigCubeRandomMoves } from \"./solve/puzzles/big-cubes\";\nimport { oriented555RandomMoves } from \"./solve/puzzles/5x5x5\";\nimport { getRandomSquare1Scramble } from \"./solve/puzzles/sq1\";\nimport type { Transformation } from \"../../kpuzzle\";\nimport { randomFTOScramble } from \"./solve/puzzles/fto\";\n\nsetIsInsideWorker(true);\n\nlet DEBUG_MEASURE_PERF = true;\nexport function setDebugMeasurePerf(newDebugMeasurePerf: boolean): void {\n DEBUG_MEASURE_PERF = newDebugMeasurePerf;\n}\n\nfunction now() {\n return (typeof performance === \"undefined\" ? Date : performance).now();\n}\n\nasync function measurePerf<T>(\n name: string,\n f: () => T | Promise<T>,\n): Promise<T> {\n if (!DEBUG_MEASURE_PERF) {\n return f();\n }\n\n const start = now();\n const result = f();\n if ((result as any)?.then) {\n await result;\n }\n const end = now();\n console.warn(`${name}: ${Math.round(end - start)}ms`);\n return result;\n}\n\nexport const insideAPI = {\n initialize: async (eventID: string) => {\n switch (eventID) {\n case \"222\":\n return measurePerf(\"preInitialize222\", preInitialize222);\n case \"333\":\n case \"333oh\":\n case \"333ft\":\n return measurePerf(\"initialize333\", initialize333);\n case \"444\":\n return measurePerf(\"initialize444\", initialize444);\n default:\n throw new Error(`unsupported event: ${eventID}`);\n }\n },\n\n randomScrambleForEvent: async (eventID: string): Promise<Alg> => {\n switch (eventID) {\n case \"222\":\n return measurePerf(\"random222Scramble\", random222Scramble);\n case \"333\":\n case \"333oh\":\n case \"333ft\":\n return measurePerf(\"random333Scramble\", random333Scramble);\n case \"333fm\":\n return measurePerf(\n \"random333FewestMovesScramble\",\n random333FewestMovesScramble,\n );\n case \"333bf\":\n case \"333mb\":\n return measurePerf(\n \"random333OrientedScramble\",\n random333OrientedScramble,\n );\n case \"444\":\n return measurePerf(\"random444Scramble\", random444Scramble);\n case \"444bf\":\n return measurePerf(\n \"random444OrientedScramble\",\n random444OrientedScramble,\n );\n case \"555\":\n return measurePerf(\n \"bigCubeScramble(5)\",\n bigCubeRandomMoves.bind(bigCubeRandomMoves, 5),\n );\n case \"555bf\":\n return measurePerf(\"oriented555RandomMoves\", oriented555RandomMoves);\n case \"666\":\n return measurePerf(\n \"bigCubeScramble(6)\",\n bigCubeRandomMoves.bind(bigCubeRandomMoves, 6),\n );\n case \"777\":\n return measurePerf(\n \"bigCubeScramble(7)\",\n bigCubeRandomMoves.bind(bigCubeRandomMoves, 7),\n );\n case \"skewb\":\n return measurePerf(\n \"randomSkewbFixedCornerScramble\",\n randomSkewbFixedCornerScramble,\n );\n case \"pyram\":\n return measurePerf(\n \"randomPyraminxScrambleFixedOrientation\",\n randomPyraminxScrambleFixedOrientation,\n );\n case \"sq1\":\n return measurePerf(\n \"getRandomSquare1Scramble\",\n getRandomSquare1Scramble,\n );\n case \"fto\":\n return measurePerf(\"randomFTOScramble\", randomFTOScramble);\n default:\n throw new Error(`unsupported event: ${eventID}`);\n }\n },\n\n randomScrambleStringForEvent: async (eventID: string): Promise<string> => {\n return (await insideAPI.randomScrambleForEvent(eventID)).toString();\n },\n\n solve333ToString: async (s: Transformation): Promise<string> => {\n return (await solve333(s)).toString();\n },\n\n solve222ToString: async (s: Transformation): Promise<string> => {\n return (await solve222(s)).toString();\n },\n\n solveSkewbToString: async (s: Transformation): Promise<string> => {\n return (await solveSkewb(s)).toString();\n },\n\n solvePyraminxToString: async (s: Transformation): Promise<string> => {\n return (await solvePyraminx(s)).toString();\n },\n\n solveMegaminxToString: async (s: Transformation): Promise<string> => {\n return (await solveMegaminx(s)).toString();\n },\n\n setDebugMeasurePerf: async (measure: boolean): Promise<void> => {\n setDebugMeasurePerf(measure);\n },\n};\n\nexport type WorkerInsideAPI = typeof insideAPI;\n", "import { expose } from \"../../vendor/comlink-everywhere/inside\";\nimport { insideAPI } from \"./api\";\n\nexpose(insideAPI);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/search/inside/solve/puzzles/fto.sgs.json.ts"],
|
|
4
|
-
"sourcesContent": ["import type { KPuzzleDefinition } from \"../../../../kpuzzle\";\nimport { getPuzzleGeometryByName } from \"../../../../puzzle-geometry\";\nimport { parseSGS, SGSCachedData } from \"../parseSGS\";\n\nexport async function ftoDef(): Promise<KPuzzleDefinition> {\n return getPuzzleGeometryByName(\"FTO\", {\n allMoves: true,\n orientCenters: true,\n addRotations: true,\n }).writekpuzzle(true);\n}\n\nlet cachedData: Promise<SGSCachedData> | null = null;\nexport async function sgsDataFTO() {\n return (cachedData ??= uncachedSGSDataFTO());\n}\n\n// TODO: Reduce info.\nasync function uncachedSGSDataFTO(): Promise<SGSCachedData> {\n return parseSGS(\n await ftoDef(),\n `SubgroupSizes 24 12 11 12 12 11 10 9 11 8 10 9 7 8 10 10 6 9 8 5 7 6 5 4 4 8 7 3 6 6 360\n\nAlg T\nAlg B\nAlg B T\nAlg B'\nAlg B' T\nAlg U\nAlg U T\nAlg U'\nAlg U' T\nAlg B BL\nAlg B BL T\nAlg B BL'\nAlg B BL' T\nAlg B' BR\nAlg B' BR T\nAlg B' BR'\nAlg B' BR' T\nAlg U R'\nAlg U R' T\nAlg U' L\nAlg U' L T\nAlg B BL' D\nAlg B BL' D T\n\nAlg R\nAlg R'\nAlg R D\nAlg R D'\nAlg R BR\nAlg R BR'\nAlg R' F\nAlg R' L\nAlg R' L'\nAlg B L B'\nAlg U L' U'\n\nAlg B U B'\nAlg B U' B'\nAlg B R B'\nAlg B R' B'\nAlg B' U' B\nAlg B' U B L\nAlg B' U B L'\nAlg B' U' B BL'\nAlg B U' B' BR\nAlg B' R' B F\n\nAlg BR\nAlg BR'\nAlg BR BL\nAlg BR BL'\nAlg BR' F\nAlg BR' F'\nAlg BR' D\nAlg B BR B'\nAlg U F U'\nAlg BR BL L\nAlg BR' D BR'\n\nAlg B' BL B\nAlg B' BL' B\nAlg BR D' BR'\nAlg B' BL B D'\nAlg B' BL B BL\nAlg B' BL B BL'\nAlg B' BL L B\nAlg B' BL' B F'\nAlg B' BL' B L'\nAlg B' BL' B BL'\nAlg B' BL' L BL' B\n\nAlg R' BR R\nAlg R' BR' R\nAlg BR BL' D BR\nAlg R' BR D R\nAlg R' BR D' R\nAlg R' BR R BL\nAlg B' D' BL D B\nAlg BR B D' B' BR'\nAlg BR BL' D BR L'\nAlg BR BL' D BL BR\n\nAlg U BR U'\nAlg U BR' U'\nAlg U' R U\nAlg U' R' U\nAlg U BR B' U'\nAlg U BR' U' D\nAlg U BR' U' D'\nAlg U' R F' U\nAlg U' R' U L'\n\nAlg U B U'\nAlg U B' U'\nAlg U B U' L\nAlg U B U' L'\nAlg U B' U' BL'\nAlg U B U' L F\nAlg U B U' L F'\nAlg U B' U' BL' D'\n\nAlg B BL' L BL B'\nAlg B BL' L' BL B'\nAlg U B' D B U'\nAlg U B' D' B U'\nAlg U R D R' U'\nAlg U R D' R' U'\nAlg R' F L F' R\nAlg R' F L' F' R\nAlg B L' B F' D B\nAlg U B' D' B U' D\n\nAlg F\nAlg F'\nAlg F D\nAlg F D'\nAlg F' L\nAlg F' L'\nAlg F D' BL\n\nAlg F BL F'\nAlg F BL' F'\nAlg BR' BL BR\nAlg BR' BL' BR\nAlg F BR F' BR'\nAlg F BL F' BL'\nAlg F BL' F' L\nAlg F BL' L' F'\nAlg F BR' BL BR F'\n\nAlg F' BL F\nAlg F' BL' F\nAlg U BL U'\nAlg U BL' U'\nAlg F U' F' U\nAlg F' BL F D'\nAlg F' BL F BL'\nAlg F' BL D F\n\nAlg L\nAlg L'\nAlg L BL\nAlg L BL'\nAlg F' D F\nAlg L BL D\n\nAlg L' BL L\nAlg L' BL' L\nAlg L' BL D L\nAlg L' BL D' L\nAlg L' BL L BL'\nAlg L' BL D' L BL\nAlg L' BL D' L BL'\n\nAlg L D L'\nAlg L D' L'\nAlg R' D R\nAlg R' D' R\nAlg L D L' D'\nAlg L R L' R'\nAlg L' B' L B\nAlg R' D R BL\nAlg L BL' L' BL L'\n\nAlg U L' D L U'\nAlg U B D B' U'\nAlg U L' D' L U'\nAlg U B D' B' U'\nAlg R' D' BL' D R\nAlg U B D' B' U' D\nAlg U B' L B L' U'\nAlg U B D B' U' BL'\nAlg U B D' B' L' D' L U'\n\nAlg F L F'\nAlg F L' F'\nAlg F L F' D\nAlg F L F' D'\nAlg F L' F' BL'\n\nAlg L BL' D BL L'\nAlg L BL' D' BL L'\nAlg F D L D' L' F'\nAlg F L D L' D' F'\nAlg F L' B' L B F'\nAlg F' D' R' D R F\nAlg F D L D' L' F' BL'\nAlg F' R' B' R' B R' F\n\nAlg B D B'\nAlg B D' B'\nAlg L' D L\nAlg L' D' L\nAlg B D B' D'\nAlg B' L B L'\nAlg B D B' D' BL\n\nAlg D\nAlg D'\nAlg D BL\nAlg D BL'\n\nAlg D BL' D BL D'\nAlg D BL' D' BL D'\nAlg B D R D' R' B'\nAlg B R D R' D' B'\nAlg D BL' D BL D' BL\nAlg D BL' D BL D' BL'\n\nAlg D BL D BL' D'\nAlg D BL D' BL' D'\nAlg B' BL' B BR D' BR'\nAlg D BL D BL' D' BL\nAlg D BL D BL' D' BL'\n\nAlg D' BL D\nAlg D' BL' D\nAlg D' BL D BL\nAlg D' BL D BL'\n\nAlg B D' B' BL B D B'\nAlg B D' B' BL' B D B'\nAlg D' BL' D BL D' BL D\n\nAlg B R' B' BL B R B'\nAlg B R' B' BL' B R B'\nAlg L R L' BL' L R' L'\n\nAlg F BL' B' BL F' BL' B\nAlg F' R' F BL F' R F\nAlg F' R' F BL' F' R F\nAlg BR R BR' BL' BR R' BR'\nAlg F L' BL U BL' U' L F'\nAlg F' U' F D F' U F D'\nAlg F BL F' D F BL' F' BL D'\n\nAlg F D F U' F' U D' F'\nAlg F D F' BL F BL' D' F'\nAlg F U D BL' U' BL D' F'\nAlg F U' D F U F' D' F'\nAlg F' BR L F BR' F' L' F\nAlg U R BL' F BL F' R' U'\n\nAlg BL\nAlg BL'\n\nAlg F U BL U' BL' F'\nAlg F BL U BL' U' F'\nAlg U BL BR BL' BR' U'\nAlg BR F BL F' BL' BR'\nAlg F U' F' U BL' U BL U'\n\nAlg F U' F' D F U F' D'\nAlg B' U' F U B U' F' U\nAlg D F U' F' D' F U F'\nAlg BR' U BR D' BR' U' BR D\nAlg D' BR BL' F BL' F' BL BR' BL D\n\nAlg D BL D F' U' B L' BL' L R' BR' R L' BL L B' U F D\nAlg B D BR F' R' BR' R B' F D' BL D B BR' D' B'\nAlg L B' BR' L F BR L' B BR' L U F U' BR' F L BL BR'\nAlg L BL' D' BR' B R' U' R BR B' D BL' L'\nAlg B BR B' D' B D B F' R' B' R BR' B' BR F BR' BL\nAlg L' BL D L' D' L' D L' U' R' F' R U D'\nAlg U' L BL L U' D R' BL B' BL F' BL' B R BL' U D' L U\nAlg L BL BR' L U' D R' F' R BL' U BL D' BR L\nAlg D L' R F' R' L BL' BR BL' B' BL B BR' F BL' F' D'\nAlg B BL B BR' L R' U' R BR L' B\nAlg L B' R' BR B F BL D' BL' D BL' B' F' BR' R U B L'\nAlg D' L' BL F' D' BL' D B F' R' BR R B' F' BL' L D\nAlg B D' R D' R' BL BR' B BR' B' BL' D' BR B R' B' R B' BL' D'\nAlg U' L R' F U L' BL' L B BL' B' BL L U' L' F' R L' U\nAlg F' D BL' BR' BL' BR B' U' F L F' U B D F L U BL' U' L'\nAlg L' U BR' U D R' BL F R BL' U D' BR' L' BL' BR' L'\nAlg U' L' U' D R' BL B' BL F BL' B R BL' U D' L' BL' L' U\nAlg D F BL L' BL' B L' B' L' B L' B' L' BL L BL' F' D'\nAlg F' BR' B BL' BR BL B' F L' F' L B BR' B' BR L' F L BL'\nAlg F' L F' L U' D R' F R U D' L' BL' F L' F\nAlg F U' F' BR F' R' BR' U F' L' BL F' D' BL'\nAlg B BR' U R BR' R' BR U' B' BR\nAlg F' BR' B BR' R BR' BL' BR R' BR BL B' BR F\nAlg L' U BL B' U' BL U BL' B BR BL' BR' U' L\nAlg BR BL' BR' BL L' BL BR BL' BR' L\nAlg U BR' U' BR L' BL BR BL' BR' L\nAlg U' L F BL' F' BL F' BR F BR' L' U\nAlg F L F' BL D F' D' F BL' L'\nAlg U BR' U BR L BL BR BL' BR' L' U\nAlg F BR R BL' F' BL' F R' BL BR' BL F'\nAlg D BL D B U BR' D BR' L' U' BR' U BR L D' BR U' B' D\nAlg U BL' U' BL U BL D L' D BR D' L D BR U BR U D\nAlg B' U F U' B' U F' BR' U' B L B' U BR U' B L' B BL\nAlg B U' B BL U' BL L U' D R' F' R U' D' L' BL' U B\nAlg B L R F D' BR' D F' R' BL' U' L U L' U BL L' B'\nAlg D BL D F' BR' F BL' D R' BR' R F D' BL F' BR D\nAlg L' D F' R' U BR L BL B' BL B BL' BR' L' U' R D' L\nAlg F BL' U D L' U' BR R F' R' BR' U L D BL U' D BL F'\nAlg BR' BL' U' L' BL D F' L' F' L F L U L' D' BR L BL\nAlg B' L' BL U D R' F' R U D' L' BL L U BL' L B\nAlg B BL' L U B' L BL' L B' U' B' L' D L' U' B L' B' D'\nAlg B' R' L U L' R BR BL' B BR' B' BL B' BL' B'\nAlg F L R BL B' U' B R' BL' L' BL F' BL BR' BL L BL' BR L'\nAlg B' U' BL L U D R' F R U D' L' BL' U BL' B' U B'\nAlg U BR BL' BR' D' B D' F' D B' D' F BL' U' BL' F' BL' F D'\nAlg D' BL' D L BL L' D' BL D F' D F D' BL' D' BL D\nAlg B' BL' B' BL L' B' BL' F' D F L F' D' F BL' L BL' B L B\nAlg F BL' U D' BL' D' L' U' BR R F R' BR' U L U' D' BL F'\nAlg U' D' B D F' D' BR' D' BR D BR B' BL' D F BL U BL'\nAlg B BL BR D' BR L' R F R' BR' L D BL' BR' BL' B'\nAlg L' F L' U BR' U' BR L F' BR' L U BR U'\nAlg F' BL' D' BR' BL B' U' BL U B BL' BR D F\nAlg F' D' BR' U R' U BL U' R U' BL' BR D F\nAlg F U' BR F' U' BL' B U F BR' R F' U BL L\nAlg B' BL' U' BL U B BL' B BL BR BL' BR' B' BL\nAlg D' F' U BL U' L F U' F' U L' BL' F D\nAlg F' BL' D' BR' BL BR' F' BR U' B' BR' U R' BR' F'\nAlg B' U' B BL' B U' B BL' L U' L BL' L B\nAlg F' D' F U' F U F' BL F' BL' D F\nAlg F' D BR F' R F R' BR' F D'\nAlg D BL D B BR' D L' BL' L' BL' BR' BL L BL L D' BR B' D\nAlg B L BL L' BL' L' D F' R' BR R D' F L' BL' L' B'\nAlg B BL' F' BL BR D' BR' F D' B' D L F' BL' F L D L D' BL\nAlg B D' BR' D' BR' F D' BL' D' BL D BL F' D BR D' B'\nAlg B D' B U B' D B F' BR' F L' F BR F' L U' B BL\nAlg L BL' B' U BL L' BL L U L' BL' L BL' U' B BL' L'\nAlg U D F' D BR BL' BR' BL B D' F D B' D BR BL BR' U'\nAlg F' D BR L' U' R F' R' U BR' L D BR' BL BR D F\nAlg BR' L BL L' BL' BR BL' F BL' L R BL B' U B R' BL' L' F'\nAlg D BL BR D B F' R' U' BR' U R B' F D' BR' D'\nAlg D' B BR' D L' BL' L' BL' BR BL L BL L D' BR B' D' BL' D'\nAlg B U' R B' BL' B R' U' B BL' B' U' BL B' U' L U L'\nAlg B D' B' D' BR' BL BR D' B' L B BR' U B U' BL' BR BL L' BL'\nAlg B D BR' D' F BL' D' BL' D BL D F' BR D BR D B'\nAlg D' B D F' D' BR' D' BR D BR BL BR' BL' BR B' BL' D F\nAlg L BL B' U BL L' BL L U' L' BL' L BL' U' B BL L'\nAlg B' U B' D' B U' B' D BL' U BL' U' BL' B' U BL' U'\nAlg D' BR' B' L' U L' B' U B L U' L B BR D BL\nAlg L' D L' F U' F' L D' L' F U BR F' L F BR' F' L BL'\nAlg D BR D B F' R' U' BR U R B' F D' BR' BL' D'\nAlg BR BL D F BR' BL BR BL' BR F' BR' D' BL' BR'\nAlg BR' U' L' BL F' BL' F L BL' U BL BR\nAlg D' BR' B' U BR U' BL U' BL' U BR' B BR D\nAlg F U BR' U R U' BR B U' F' BL U' L' U BL' B'\nAlg B U' L F BR F' L F' BR' F L U B'\nAlg BR BL F BL' L F' BR' BL' F BL L' BL' F' BL\nAlg U' BR' L BL' BR L U' BR' U L' BL L' U' BR U'\nAlg L' F L' U BR' U' BR L F' L BL' BR BL BR'\nAlg F' D' BR' BL U R' U BL' U' R U' BR D F\nAlg F' BR' B F' U F BR U' BR' B' F BL BR BL'\nAlg L B' U' R' BR B F BL D' BL D BL' B' F' BR' R B L'\nAlg B F BL B L F BR' R' BL U' R BL' BR' F' L' F' BR' B\nAlg U BR F' D F BR' U' L' BL L' BL' L U L B' BL L' B U'\nAlg F' L B F BL B R U' R' B' BL' B' F' L BL L F\nAlg D BL D B BR' D BR' D' BR D BR BL BR' BL' D' B' D\nAlg D' BR' BL B BR B' BL' D BL D' B' BL B BR' BL' BR D\nAlg D F' U BR U' L U' BR' U L' D B D' F D B' D BL\nAlg L B BL' B L F R U' R' F' L' B' BL B' L' BL'\nAlg B D' B U B' D F' BR F L' F BR' F' L B U' B BL\nAlg B' BL L B' L' B' L B' BR' R' U' R BR L'\nAlg D' F' U' B L' BL' L R' BR R L' BL L B' U F D' BL' D'\nAlg B' F' BL' B' F U D' R BR R' BL U' BL' D B'\nAlg F' BL' D BL F BL' D' B' U' B D F' D' B' F U B\nAlg F' L' BL' L' B F BL B R U R' B' BL' B' F' L' F\nAlg L' BL U' D F D' BL' D BL F' BL' D' BL D F' U D' BL L\nAlg B' BR L R' U R BR F L' B' BL' B L F' BR L' B\nAlg B' L B' BR' B L' B' D F' U F D' F U' F' BR B' BL'\nAlg B' BR D' BL' BR' BL B L' R' L' R BR L D L BL BR' B BL\nAlg L' D F' L F L' F D' L' BL' L' D BL' BR' BL' BR BL' D'\nAlg B' F BR F BR L R' BL U R BL' BR L' B' BL' B' F\nAlg F L' F' BR' B BR' F' BR B' BR' F' L F' BR'\nAlg BR' B' BR BL' D' BR D BR' BL B\nAlg L' F L' U BR' U' L U' BR U F' L\nAlg F U' BR' R U' BR BL BR' U' BL' U' R' F' BR U\nAlg B' BR' R' U' BL D' BL U BL' D R BL' BR B\nAlg D BR' U' L BL' F' BL F L' BL U BL' BR D'\nAlg F' BL' D' F BR' BL BR BL' BR F' BR' D BL F\nAlg F' BR' BL' BR D' F' BR F BR' D BL F\nAlg F' BR R' BR BL' BR' R BR' BL F\nAlg B BR F' BR' B' F BL F BL' F'\nAlg B D' B U B' D BL' F R' F BL F' R B F' U' B BL\nAlg L BL' B' U L U L BL L B' BL B' U' BL' U' B' L' BL\nAlg L' BL' U' D F D' BL' D BL F BL' D' BL D F' U D' BL' L\nAlg F' L F' BL' D' BR' B R' U' R BR B' D BL' F L' F\nAlg U D' BR' D BR' U' L U BR L' D' BR D L U' L' BL\nAlg B' BR' B' BL B L F' BR' R' U' R BR F BR L' B\nAlg U' F' D BR' F' BR D L D L' U D' B D' B' F D' BL F\nAlg B F BL B F' L F BR' R' BL U' R BL' BR' F' BR' L' B\nAlg F' D' BL B BR' BL BR BL' BR' D' BR' D BR D F D' B' D\nAlg B' BR' B' BL B L F BR' R' U' R BR F' BR L' B\nAlg L' F BR L' R' BR BL' BR' R BR' BL B' L F' L' B L' BL'\nAlg B' U' BL' U D' BL' D F L' R U R' F' L U' BL U B\nAlg D' B D BL BR BL' BR' D' BR' D BR D' BR B' D' BL' D'\nAlg B' BR' L F' BR' R' U R BR F L' B' BL' B BR B\nAlg L U L' D' BR' D L U' L' U D' BR D BR BL BR' BL' U' BL'\nAlg F' L F' BL D' B BR' R' U R B' BR D BL F L' F\nAlg B' L B' BR' B L' F' R F' BL F R' F BL' B' BR B' BL'\nAlg F' L BL' BR' R' BL U R BR B L' B L B L' F BL' B\nAlg L' F D' BR U' BR' D BR' U BR L' B' L F' L' B L' BL'\nAlg B' BR' L F BR' R' U R BR F' L' B' BL' B BR B\nAlg L F' D' F BR' BL BR BL' BR F' BR' D F L'\nAlg F' BL' D F BL' F' BL D' BR' BL BR F\nAlg B' BR' R' BL D' BL U' BL' D BL' U R BR B\nAlg B' L BL' BR BL L' B' F BL F' BL' B BR' B\nAlg F U' BR' R BR F' U BL L U BL' B U'\nAlg B' BR B' BL F BL' B F' L BL' BR' BL L' B\nAlg U' L BL' U' R U' BL' U R' U BL' L' U\nAlg F U' BR' R' F' BR' F BL BR R BL' F' BR U\nAlg B U' L' F' BR F L' F BR' F' L' U B'\nAlg F' BR' B' F BR' BL' BR F BL B F' BL BR BL'\nAlg B BL' U' L U BL' B' BL' B' L' BL U B' U' BL L BL L\nAlg B R' U' B U R B' BR F D' B' D BL F' BL' BR' BL\nAlg U BL U' B BL U BL U' BL D' B U B' D B U' B\nAlg B BL B BL' B BR B' BL BR' R' L U' L' R B\nAlg U' L BL' B BL B' L' F U B' R U R' U F' U B BL\nAlg F' BL' D' BR' L' B' L B BL BR BL' B' L' B L D BL F BL\nAlg L B' L' F U B' R BR B BR' R' BR BL' BR' BL B U' F' BL\nAlg D' F BL B BR' B BR B' BL' D BL D' B' F' D\nAlg B' L' BL F U F' L' U B U' L F U' F' BL' L BL' B BL B\nAlg D BL D B U F' R' BR' R F U' B' D\nAlg B BR B' D' BL BR D BR D B' BL' B D BR' BL' D' BL' D'\nAlg B' R BR B' BR' R' B U' F' L B L' BL' F BL U BL'\nAlg U BR BL' BR' D' B D' F' D B' BL' BR BL BR' D' F U' D'\nAlg U' D' BR' U' BR' D' L' D BR' D' L D' BL' U' BL' U BL U'\nAlg L' F' BR F' R F' R' L F' BR' D L BL' L' BL D' F BL'\nAlg B D BL' D B U R BR R' U' B' D' BL D' B' BL\nAlg B' U L' U B BL L' F' BL F D' B' U B D B' L B L'\nAlg L BL' B' U L F R U' R' F' U L F' L B L' F\nAlg L' D R' U BR L BL B' BL' B BL' BR' L' U' R F D' L\nAlg D' B U F' R' BR R F U' B' D' BL' D'\nAlg B D BL' B' U' BL L' D L D' BL' U B BL B' D'\nAlg B U' BL' U' F U' B U B' F' U BL U' B U' B\nAlg U BR' U L BL' L U' BR U BR' L' BL BR L' U\nAlg F' D' BR' BL B' U' BL' U B BL' BR D BL F\nAlg B' L' B' F BL' F' BL F' BR F BR' B L B\nAlg F' BL' D' BR F' BR' F D BR' BL BR F\nAlg F D' F' U' F' D' BR D F' D' BR' D' F' U\nAlg BR' BL' U' BL L U' F U F' L' U BR\nAlg F BR R U' BR B U BR' F BR BL' BR D BL F\nAlg F' BR' F U' BL L' U BL' B' F' BL' BR D' BL F\nAlg B' U L' B' U L' D F L F' D' L U' B L U' L B L'\nAlg B BL B L F BR' R' U' R BR F' L' B\nAlg B D' B BR' R' U' B' U R BR U' D' F L' F' U L' D' L\nAlg L U' L' U B BL' U B BL B' U R B' BL B R' U B'\nAlg D F' D BL U' R U' BL' U R' U B D' F D B' D BL\nAlg B BL U B BR' L R' F' U' F R BR L' B' U' B'\nAlg B' U' B F' D F D' B' U B D BL F' BL' D' BL F\nAlg B D BR B F' U' R' BR' R U B' F BR' D' BL B'\nAlg L B' F R BL' U' R' BL B F' L U BR' U' BL L U BR U'\nAlg F' L F' BL L U' D R' F' R U D' L' F L' F\nAlg L U L' F' BL' F L B BL' U BL' U' BL B' BL L U' L\nAlg B' L F BR' R' U R BR F' L' B' BL' B'\nAlg U BR' U' L' U' BR' F' BR F BR D R' F R U D' L' BL' L'\nAlg B L BL L F' D R' BR' R F D' L BL L BL' L' B'\nAlg F' BL' D F' D' B D' B' U' D L D BR' L' F BR D' F U\nAlg B U B BR' L R' F' U F R BR L' B' U' BL' B'\nAlg U B' L BL' B L' U' L' BL L BL' L U BR F' D' F BR' U'\nAlg B BL' D BR B F' U' R' BR R U B' F BR' D' B'\nAlg B BR B F BR' U BL' L R BR' R' L' F' U BR U BL B BL'\nAlg B' BR' L R' U R BR L' B' BL' B'\nAlg B' U BR' R L F' BR' F L' R' BR U' B' BR B'\nAlg F' BL' F' BR R U' BR B F BR BL' D F U BL'\nAlg F' BR' B' U BR' F BR' F' BR U' BR B BR F\nAlg BR' BL' U' BL L' F' BL F BL' L U BR\nAlg U' L BL U' R U' BL U R' U BL L' U\nAlg F BR' F' U' L F BR U F' U' L' BL U BL'\nAlg L' F U' BR' U L' U BR U' L F' L\nAlg F' BR' B' U' BR' U F BR B U' BL U BR BL'\nAlg F' BR' U BR D' BR U' BR' D F\nAlg F BL' BR R BL' F' BL F R' BL BR' F'\nAlg L BL' B BL' U BL U' BL B' L' F' BL F L U' L U L\nAlg B F BL B F' L F' BR' R' BL U' R BL' BR' F BR' L' B\nAlg F BL B' F' BR B' BR' B L F BL B' BR B BL' BR' F' L' B\nAlg B F D' BL U R BL' BR' R' U' D B F' BL B\nAlg L B' U B' BR B BR U' BR' B L' F BL' B F' BR' B' BL'\nAlg U' L R' F L U L' BL' B BL B' L' BL L U' F' R L' U\nAlg BR BL F BL' F' L' F' BR' L B BR B' L' F L B BR' B' BL\nAlg B' BR' L F L' B' BL B L F' BR' R' U' R BR' L' B\nAlg D L U' BR U L U' R BL' F' R' F BL F' BR' U L D BL D\nAlg B F BL B F BR' L R' BL U' R BL' BR' L' F BR' B\nAlg L B' L' U L' B' U L' D F L' F' D' L U' B L U' B\nAlg B' BR L F' BR R' BL U R BL' BR F L' B' F BL' B' F'\nAlg B' BL L B L' B' BL' L' U BL' U R' L' R U' BL U' L B\nAlg B U' D' F D B BL' B' U D' R BR R' U' F' U D B'\nAlg D F L F' L' F R L' BL B L B' BL' L R' F' L D'\nAlg L BL D' B BR' R' U R B' BR D BL L'\nAlg D F D' B' U' B U' D F' D' F U B' U B F' BL'\nAlg D' BR' BL BR B' BL' B D BL' D' BL B BR' B' BL' BR D\nAlg U BR' U' L U R' L R BR L' B' L' B L U' L' BL'\nAlg BR' L R' U R BR B L' B L B L' BL' B\nAlg B BR' B U BR' R L F' BR F L' R' BR U' B\nAlg F' L B' BR' B L BL' L' B' BR B L BL L F\nAlg D F U' F' U D' BR U' D' F U F' D BR'\nAlg B' BL' BR D' BR' D BL BR' B BR\nAlg B BL U' BR' L U BR' F' BL D BL BR F BR\nAlg L' U BR BL BR' B' BL U' BL' U B BL' U' L\nAlg U B' BL U' L' BL' U' F BR' R' BR U F'\nAlg D BR' BL U' BL' L F' BL' F BL L' U BR D'\nAlg BR L' BL BR' BL' L BL' BR BL BR'\nAlg F BL F' BL' B F' BR F BR' B'\nAlg D BR L' U' R F' R' U BR L BL B' BL B BL' BR D'\nAlg D' BL' D BL D F' D' F D' BL' D L BL' L' D' BL D\nAlg B F D' F' U' BL' B U B' BL F D B U' B' U B' F' BL\nAlg B U F' D' R BR' R' U' D B BL B' U F U' B'\nAlg B BL B L B BR' F BR B' BR' R' U' R F' BR L' B\nAlg B BL B L F' U' F' U F BR' R' U' R BR' F BR' L' B\nAlg B' U' B F' D F D' B' U B U' D BL' F' BL D' F U BL\nAlg L F' BR B' F' R BL' U' R' BL B F' BR L BL BR L\nAlg D F' D' BL F' D' F R BL B' L U L' B R' F' BL' D F\nAlg B BL BR BL D' BR L' R F' R' BR' L D BR' BL' B'\nAlg B' L B' BR' B L' BL' U BL U' B' BR B' U BL' U'\nAlg D' B BR' F BL' F' D BR D' BL F' BR B' F D' BL' D'\nAlg B D F' L' R F D BR' D' F' R BR' L D B' BL' D' F D'\nAlg D L BL' F' R U R' B F' L BL' L' B' F' BL L' D'\nAlg B' BR' L F R' U R BR B BR' F' BR B' L' B' BL' B'\nAlg D L F BL F L BL' L D' BL' D' F' D' F' L BL D' BL'\nAlg D F BL F' BR B' BL' B BL BR' BL L' R F R' L D'\nAlg L BL' B' L B L B' L F R U R' B F'\nAlg F' D' BL F R B' L U' L' B R' BL' F' D F BL' D F D'\nAlg B' L' BL U' D' L' BL' L U' D R' F R U' BL' L B\nAlg L' F L' BL U' BL' U L F' L U' BL U BL'\nAlg D' F' BL L U' F U F' L' U BL' U' F D\nAlg B' U F D F' U F D' F U B U' F U\nAlg U B' BR' U R' U' R BR U' B\nAlg F' BL' D F BL F' BR F' BR' F BL' D' BL F\nAlg F' BR' BL' BR D BL' F BL F' D' BL F\nAlg U' F R F' BL' F R' F BL F U\nAlg F' BR F BR' L BL' BR' BL BR L'\nAlg F U' B F U' BR U BR' U F' U' B' U F'\nAlg D F' BR R F' R' F BR' D' F\nAlg B D' B U B' D B U' B BR BL BR' D BL BR BL BR' BL D'\nAlg B' U' L' D' F D' L' F' L D F' D L U B BL'\nAlg D L' F R L' BL B L' B' BL' L R' F' L F L' F' D'\nAlg D L' D' BL D F' D F D' BL' L BL D'\nAlg D' B R U' B' F' BL' L BL L' BL B F U R' BR' B' D\nAlg D L BL' F L BL L' B' F R U' R' B F BL L' D'\nAlg D F' BL F BL U BL F' D B D' F D B' D BR BL BR' U'\nAlg B F' BL B F' BR' F' L F R' U' R BL' BR BL F' L' B\nAlg L F BR B' D BL D' R U' R' D BL' D' B BR' F' L BL L\nAlg B F BL B F' BR' L R' U' R BL' BR BL L' B\nAlg D' B U BR' D BR' L' U' BR U BR L D' BR U' B' D' BL' D'\nAlg F' D' BR' BL' BR D' BR L' U' R F R' U BR' L D' F\nAlg D F U D' BL U' B D' F BR F' D' F' D BR' D B' BL\nAlg B U' D' F D BL' D' BR D' BR' D BL B' BL' B F' U D B'\nAlg L' BL' L' F BR B' D BL D' R U R' D BL' D' B BR' F' L'\nAlg B U F' U' B BL' B' U D' R BR R' D F U' B'\nAlg B L BL' U' L U' L' U R BL F D' BR D F' R' L' B'\nAlg B' L B' BR' B L' F' BL F BL' B' BR B' F U' F' U BL'\nAlg D' B BR R U' B' F' BL' L BL' L' BL B F U R' B' D\nAlg B BL' U' B BL' B D B D' B D B D' BL B' U BL B'\nAlg U BR' U' BR L' F BR' L' U BR U' L F' L\nAlg L' U BR BL BR' B U BR' U' BR B' BL' U' L\nAlg BR BL D BR' BL' L BL' BR BL L' BL D' BL' BR'\nAlg F' BL' D' BR' D BL BR' B U BR U' B' BR F\nAlg F U' F' D F' U' B' U F' U' B U' F' D'\nAlg B' U BR' R' U R U' BR B U'\nAlg L U BL U' BL' L' BL L' F' BL' F BL L BL'\nAlg U B' BL' BR' U F' BR' D' F BR' U BL' L' BL'\nAlg F BL' L' F' BL D' F' BR U' R' F' U F' BR'\nAlg U B U' BL L U' L' U BL' B'\nAlg U BL U' B BR' B U BL' U' BL L B' BR B L' B\nAlg B BL B L F' U' F U F BR' R' U' R BR' F' BR' L' B\nAlg B BR D L' D' F' D F D' F' D' F D' BR' L D' B D B\nAlg F' L B' L' F L' U' F R U R' F' L' U' B BL L'\nAlg B' L' F U F L' F R U' R' U L F R U R' U B F' BL\nAlg B U F' D' F' U R BR' R' U' F D B BL B' F U' B'\nAlg F BL U BL' U' F' BL L U' L D BR L' U L U' BR' U D' L\nAlg B U' D' B' F BL B BL' D' BR D BR' D BL D' F' U D B'\nAlg B BL' D' B' D B BL D BR' BL BR' R D R' BR BL' BR D' B'\nAlg B F U' F' D' F' U' R BL' BR' R' BL U' F D B BL B\nAlg D BR' BL B' BL' B BL' BR' L' U' R F R' U BR' L D'\nAlg B' F' U' F' BL' D' B BR' R' U R B' BR D F U B F\nAlg B' D' B' D BR L' D F' D F D F' D' F D L D' BR' B'\nAlg D' B F D BL' D' BL B BR' B' BR B' BL' F' D\nAlg B D B' F BL L' BL' F' L BL L' BL' BR L R L' R' BR' L' D'\nAlg B U B F' BL' B' D' F' U R BR R' U' F D F U' B'\nAlg BR BL' L' F' BR U F' U' BR L' B' BR' L F' BR L' B L'\nAlg D BL' L' BL D F' D' F D' BL' D L D'\nAlg F' BL' B F U' B U B' D' F' BL' B U' B' BL U F D B'\nAlg B' F' L BL' BR' R' BL U R BR L' B' F BL' B'\nAlg BR BL' BR' BL L' F L' BL' BR BL BR' L F' L\nAlg B BL BR' F U' L F U BR' F BL D BR' BL\nAlg B' BL' B' U BR' U' BR BL' BR BL BR' B BL B\nAlg BR' U' L F U' F' U L' BL' U BL BR\nAlg B U BR R' BR U' B' BR U' B' U BR' R' BR\nAlg B BR BL L BL BR' BL' L U' BL' U BL L BL' B'\nAlg F' BR' B BL' BR' R BR' BL BR R' BR B' BR F\nAlg F' BR' B U BR' U' B' BR BL' D' BR D BL F\nAlg D' F' BR U' R' F' U F' BR' F BL' L' F' BL\nAlg B BL U' L U L' BL' U B' U'\nAlg L' F' R B F' BR L' D' F' D BR' L B' F R' F BL L\nAlg D F BL L' BL' B L B' L B L B' L BL L BL' F' D'\nAlg B BL B BR' L R' U' R BR L' B U BR' U' BR BL' BR BL BR'\nAlg B' F R U' R' F' L' B L' B' L' B BL L'\nAlg B' L' F D R' F' L' U L F R' U D' L' B BL L F' L\nAlg D' L' BL F R' BR' R B' F D' BL D B F BL' L D\nAlg B' BR' R' U' BL' U' L R' F R F' L' R U' BL BR B BL\nAlg BR L BL BR L U' D R' BL F' R BL' U' D' BR U' L\nAlg BR L B' L F R F U F' U' R' L' B L F' BR' L BL\nAlg B F U D' R BL' BR' R' BL U' D B F' BL B\nAlg L' BL L' D B D' BL' B' D' L R' D R BL' U' L U BL'\nAlg L' D BL' U' R' BL F R U D' BR L' BL' BR' L'\nAlg U BR' U' L' BL' U BR U' L' B' F R BL' U R' BL B F' L'\nAlg BR L' BL' L' B' F R BL' U R' BL B F BR F BR L'\nAlg B' F' L F BR BL B' BR' B BL' F' L' B' BR B BR' B F BL'\nAlg B D BR B' D' BL' D B F' R' BR R F BR' D' B'\nAlg D BL' L' BL' L BL L' BL F' BL' L' F L BL F BL' L D'\nAlg U' D R' F R U L D' L D L D' BL' L\nAlg U D' BR D' L' D R F BR F' BR' R' BR' D' L U' D' BL'\nAlg B' F' BR' L R' BL U R BL' BR L' B' F BL' B'\nAlg L' F BL' F' BL F' BR F BR' L\nAlg L BL F' D F D' BL' F L' F'\nAlg F' D' BR U BR' D BR' U' BR F\nAlg BR' L BL' BR BL BR L' F' BR' F\nAlg B BR F BR' B' BR F' R' BR' BL' BR R BR' BL\nAlg BR' B U BR' R BR R' U' BR B'\nAlg F' BL' BR R' BR BL BR' R BR' F\nAlg BR L' BL BR' BL' BR' L U BR U'\nAlg U BR' U' BR BL' BR BL BR'\n`,\n );\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,wBAA2D;AACzD,SAAO,wBAAwB,OAAO;AAAA,IACpC,UAAU;AAAA,IACV,eAAe;AAAA,IACf,cAAc;AAAA,KACb,aAAa;AAAA;AAGlB,IAAI,aAA4C;AAChD,4BAAmC;AACjC,SAAQ,4BAAe;AAAA;AAIzB,oCAA4D;AAC1D,SAAO,SACL,MAAM,UACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|