From cd2b098b81bbfaaac3a58ab73fe48116378e9eda Mon Sep 17 00:00:00 2001 From: urswilke Date: Mon, 16 Jan 2023 21:18:59 +0100 Subject: [PATCH 01/52] import patterns created by new method in: https://github.com/urswilke/read_beats/commit/ecd8c03b5e29544819831459f4b4ac48d954640f --- website/src/repl/tunes.mjs | 5141 ++++++++++++++++++++++++++++++++++++ 1 file changed, 5141 insertions(+) diff --git a/website/src/repl/tunes.mjs b/website/src/repl/tunes.mjs index 3543cb054..835e60a4f 100644 --- a/website/src/repl/tunes.mjs +++ b/website/src/repl/tunes.mjs @@ -869,3 +869,5144 @@ await samples('github:tidalcycles/Dirt-Samples/master') .slow(4) .stack(s("bd*4, [~ [hh hh? hh?]]*2,~ [sd ~ [sd:2? bd?]]").bank('RolandTR909').gain(.5).slow(2)) `; + +export const Afro1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ rim ~] [~ ~ rim ~] ", +).s().slow(2) +`; + +export const Afro1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt mt mt ~] [~ ~ ~ ~] ", + "[~ sd sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [mt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ lt ~] [lt ~ lt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ rim] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] [bd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [~ ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ mt mt] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ mt mt] ", + "[~ sd ~ ~] [~ sd ~ sd] [~ ~ ~ sd] [~ sd ~ ~] ", +).s().slow(2) +`; + +export const Afro4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [ht ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] [~ ~ ~ ~] ", + "[sd ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[sd ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro6b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ rim] [~ ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro6c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[cy ~ cy cy] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ageispolis = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Amen = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const AmenBrother = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const AshleysRoachClip = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ bd bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", + "[lt ~ lt ~] [lt ~ lt ~] [lt ~ lt ~] [lt ~ lt ~] ", + "[~ ht ~ ht] [~ ht ~ ht] [~ ht ~ ht] [~ ht ~ ht] ", +).s().slow(2) +`; + +export const Autobahn1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~] ", + "[cp ~ cp ~] [cp ~ cp cp] [~ cp ~ cp] [cp ~ cp ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const Autobahn1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~] ", + "[cp ~ cp ~] [cp ~ cp cp] [~ cp ~ cp] [cp ~ cp ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const Ballad1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ sd sd] [sd ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ oh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Ballad3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ ~] [bd bd ~ ~] [bd bd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] ", + "[~ ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Ballad4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ hh ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ mt mt ~] [~ ~ ~ ~] [~ ~ mt ~] [mt mt ~ ~] ", + "[~ ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const BigBeat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", +).s().slow(2) +`; + +export const BillyJean = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const BlueMonday1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const BlueMonday2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[hh ~ ~ hh] [hh ~ ~ hh] [hh ~ ~ hh] [hh ~ ~ hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const Blues1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd bd bd] [bd bd bd bd] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh ~ ~ ~] ", + "[sd sd sd sd] [sd sd sd sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Blues2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ hh ~ ~] ", + "[~ sd sd ~] [sd sd ~ sd] [sd ~ sd sd] ", +).s().slow(2) +`; + +export const BookOfMoses = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", +).s().slow(2) +`; + +export const BootsNCats = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Bossa1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[rim ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", + "[~ ~ rim ~] [~ rim ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", + "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", +).s().slow(2) +`; + +export const Bossa2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [lt ~ ~ ~] ", + "[~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bouton = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~]", + "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Break1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh hh hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Break2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [~ ~ hh ~]", +).s().slow(2) +`; + +export const Breakbeat1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Breakbeat2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Breakbeat3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const BritHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh]", + "[~ ~ cy ~] [~ ~ cy ~] [~ ~ cy ~] [~ ~ cy ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const ChaChaCha1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ht ~] [~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", +).s().slow(2) +`; + +export const ChaChaCha1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ht ht] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] [~ ~ lt ~] ", +).s().slow(2) +`; + +export const ChaChaCha1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ht ~] [~ ~ ~ ~] [ht ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [lt ~ lt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ChugChugChugaLug = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ bd] [~ bd ~ bd] [~ ~ bd ~] ", + "[~ sd sd ~] [sd ~ ~ sd] [~ sd sd ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [hh hh hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const CissyStrutLong = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ ~] [~ bd ~ bd] [bd ~ bd ~] [bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [bd ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ sd sd ~] [sd sd ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const CissyStrutShort = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ ~] [bd bd ~ bd] [~ bd ~ ~] ", + "[sd sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd ~] ", + "[hh hh hh ~] [hh ~ hh hh] [~ hh hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const ColdSweat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ColdSweatOpening = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const ComeDancing = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ bd] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ sd sd ~] [sd sd sd ~] [~ sd sd ~] [sd sd sd ~] [~ sd ~ ~] [sd sd ~ ~] [~ sd ~ ~] [sd sd sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const ContemporaryKick1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const ContemporaryKick1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const ContemporaryKick3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick4 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporarySnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const ContemporarySnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] [~ sd ~ ~]", +).s().slow(2) +`; + +export const ContemporarySnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const ContemporarySnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const ContemporarySnare3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ sd ~ sd]", +).s().slow(2) +`; + +export const ContemporarySnare3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const CowdBell = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd bd] [~ ~ bd bd] [~ bd ~ bd] ", + "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[cb ~ cb cb] [cb ~ cb cb] [cb ~ cb cb] [cb ~ cb cb] ", +).s().slow(2) +`; + +export const DasModel1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const DasModel1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const DeepHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ hh ~ ~] [~ ~ ~ hh] [~ hh ~ ~] [~ ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const DeeperHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ cp ~ ~] [~ ~ ~ ~] [~ cp ~ ~] [~ ~ ~ ~]", + "[~ ~ mt ~] [~ ~ ~ mt] [~ ~ mt ~] [~ ~ ~ ~]", + "[~ ~ ~ sh] [~ ~ ~ ~] [sh ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh oh] [~ ~ oh ~]", +).s().slow(2) +`; + +export const DirtyHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ ~ cp ~] [cp ~ ~ ~] [cp ~ cp ~] [cp ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ hh]", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const Disco1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ hh] [hh hh ~ hh] [hh ~ hh hh] [hh hh ~ hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ oh ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd sd ~ sd] [~ sd sd sd] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Disco2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[hh ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [sd ~ sd ~] [sd ~ sd ~] [sd sd sd ~] ", +).s().slow(2) +`; + +export const Disco3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cb ~ cb cb] ", + "[hh hh hh hh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ sd sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ bd] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [~ hh ~ ~] [~ hh ~ ~] [~ hh ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", + "[~ ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const Disco5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [~ hh ~ hh] [hh hh ~ ~] [~ hh ~ hh] ", + "[~ ~ oh oh] [~ ~ oh ~] [~ ~ oh oh] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh hh] [hh hh hh hh] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] ", + "[~ ~ oh oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Dnb1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Dnb1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [bd bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Dnb2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", +).s().slow(2) +`; + +export const Dnb3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[~ ~ ~ ~] [~ ~ oh oh] [oh oh ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Dnb4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Dnb4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Drumroll1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [ht ht ht ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ mt] [mt mt ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ht ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ht ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [~ ~ lt lt] ", + "[sd ~ ~ sd] [~ ~ sd ~] [~ sd ~ ~] [sd ~ ~ ~] ", + "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ht ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [mt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] [~ lt lt ~] ", + "[sd sd ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ cy ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll12 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ht ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ mt ~ ~] [~ mt ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ lt ~ ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] ", +).s().slow(2) +`; + +export const Drumroll13 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ht ht ht] [ht ~ ~ ~] ", + "[~ ~ ~ mt] [mt mt mt mt] [mt ~ ~ ~] [~ mt mt ~] ", + "[lt lt lt ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", +).s().slow(2) +`; + +export const Drumroll14 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ht ~ ~] [~ ~ ~ ~] [~ ht ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ lt] [~ ~ ~ lt] [~ ~ ~ lt] [~ ~ ~ lt] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll15 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[sd sd ~ ~] [~ ~ sd sd] [~ ~ ~ ~] [sd sd ~ ~] ", + "[~ ~ hh ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll16 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ ~] [sd ~ sd sd] [~ ~ sd ~] [sd sd sd sd] ", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll17 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] [cy ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll18 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[sd sd ~ ~] [~ ~ sd sd] [~ ~ ~ ~] [sd sd ~ ~] ", + "[~ ~ cy ~] [cy ~ ~ ~] [cy ~ cy ~] [~ ~ cy ~] ", +).s().slow(2) +`; + +export const Drumroll19 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ mt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ bd ~ bd] [~ bd ~ bd] [~ bd ~ bd] [bd ~ ~ ~] ", + "[sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] [~ sd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] ", + "[sd ~ sd sd] [sd ~ sd sd] [~ sd sd sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[sd sd sd ~] [sd sd sd ~] [sd ~ sd ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Drumroll4 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ sd] ", + "[cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] [cy ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll5 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", +).s().slow(2) +`; + +export const Drumroll6 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ mt] [~ ~ mt mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ lt ~ ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll7 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [mt ~ mt mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[sd ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", + "[sd sd ~ ~] [~ ~ sd ~] [sd sd ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll9 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [~ ~ mt mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[sd sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Dubstep1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", + "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] [~ oh ~ ~]", +).s().slow(2) +`; + +export const Dubstep1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", + "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] [~ oh ~ ~]", +).s().slow(2) +`; + +export const DubstepRatcheted = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ [~ sd] [sd sd] ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd]", + "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", + "[~ ~ [oh oh] [oh oh]] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Electro1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const End1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const End1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ExpensiveShit = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[sd sd ~ sd] [~ sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ExpressYourself = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh ~ hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Footwork1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ ~]", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim]", +).s().slow(2) +`; + +export const Footwork2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh ~] [~ ~ ~ hh] [hh ~ hh ~] [~ ~ hh ~]", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim]", +).s().slow(2) +`; + +export const FourOnTheFloor = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const FrenchHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[sh sh sh ~] [sh ~ sh sh] [sh sh sh sh] [sh ~ sh sh]", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~]", +).s().slow(2) +`; + +export const Funk10a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [~ hh hh hh] [hh hh hh hh] [~ hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk10b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [~ hh hh hh] [hh hh hh hh] [~ hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk10c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ac ~ ~] [~ ac ~ ~] [~ ~ ac ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ bd ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ hh ~ ~] [~ ~ hh ~] [~ ~ ~ ~] ", + "[sd sd ~ sd] [sd ~ ~ sd] [sd ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Funk11a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk11b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd bd ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk11c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ac] ", + "[~ ~ ~ ~] [~ ht ht ~] [~ ~ ~ ht] [~ ~ ~ ~] ", + "[lt ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [lt ~ ~ ~] ", + "[~ ~ sd sd] [sd ~ ~ ~] [sd sd sd ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Funk12a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [~ ~ ~ bd] ", + "[hh hh hh ~] [~ hh hh ~] [hh ~ hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ oh ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk12b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk12c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] ", + "[oh ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ sd ~ sd] [sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk13a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[hh hh hh ~] [hh hh ~ ~] [hh hh hh ~] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", +).s().slow(2) +`; + +export const Funk13b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[hh hh hh ~] [hh hh ~ ~] [hh hh hh ~] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ sd sd] ", +).s().slow(2) +`; + +export const Funk13c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ mt mt ~] [~ ~ ~ ~] [~ mt ~ mt] ", + "[~ ~ ~ sd] [sd ~ ~ ~] [~ sd ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk14a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk14b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk14c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[sd ~ ~ sd] [sd ~ ~ ~] [sd ~ sd ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk15a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ sd ~] [sd ~ sd ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ac] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ac ac] ", + "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ hh ~ ~] [hh ~ ~ ~] ", + "[~ sd sd ~] [sd sd ~ sd] [sd ~ sd sd] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Funk2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ oh ~ oh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Funk3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Funk3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ac] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ac ~] ", + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ hh] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ sd sd sd] [sd sd sd ~] [~ sd sd sd] [sd ~ sd ~] ", +).s().slow(2) +`; + +export const Funk4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh hh] [~ ~ hh ~] [hh hh hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [ht ht ht ht] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd sd sd] [~ ~ ~ ~] [sd sd sd sd] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [~ hh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [ht ht ht ht] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Funk6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ac ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] ", + "[hh hh ~ hh] [~ ~ hh ~] [hh hh ~ hh] [~ ~ hh ~] ", + "[~ ~ sd ~] [sd sd ~ sd] [~ ~ sd ~] [sd sd ~ sd] ", +).s().slow(2) +`; + +export const Funk6b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ac ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] ", + "[hh hh ~ hh] [~ ~ hh ~] [hh hh ~ hh] [~ ~ hh ~] ", + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk6c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ sd sd ~] ", +).s().slow(2) +`; + +export const Funk7a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk7b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk7c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [~ ~ ~ ac] ", + "[~ bd ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ ~ sd] [~ ~ ~ ~] [~ sd ~ sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Funk8a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const Funk8b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Funk8c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ac ~ ~] [~ ac ~ ~] [ac ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ mt ~ ~] [~ mt ~ ~] [~ ~ ~ ~] ", + "[sd ~ sd ~] [sd ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk9a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [hh hh hh ~] [hh hh hh ~] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk9b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ bd ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", + "[hh ~ hh hh] [hh ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ oh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk9c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ bd] [~ bd ~ ~] [~ bd ~ bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ sd sd ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const FunkyDrummer = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ sd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const FunkyDrummerAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ sd] ", + "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ oh ~ ~] ", +).s().slow(2) +`; + +export const FunkyPresident = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const GenericBossaNova = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[rim ~ ~ rim] [~ ~ rim ~] [~ ~ rim ~] [rim ~ ~ ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const GenericGahu = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", +).s().slow(2) +`; + +export const GenericRock = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const GenericRumba = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[rim ~ ~ rim] [~ ~ ~ rim] [~ ~ rim ~] [rim ~ ~ ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const GenericShiko = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] ", + "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", + "[hh ~ ~ ~] [hh ~ hh ~] [~ ~ hh ~] [hh ~ ~ ~] ", +).s().slow(2) +`; + +export const GenericSon = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[rim ~ ~ rim] [~ ~ rim ~] [~ ~ rim ~] [rim ~ ~ ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const GenericSoukous = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] ", + "[rim ~ ~ rim] [~ ~ rim ~] [rim ~ ~ rim] [~ ~ rim ~] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ hh hh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const GetUp = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ sd ~ ~] [sd ~ ~ sd] ", + "[hh ~ ~ ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const GhostSnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const GhostSnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const GhostSnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const GhostSnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ sd ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const GoodToGo = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const GrooveMe = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd bd ~ bd] [~ bd ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const HaitianDivorce = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] ", + "[~ sd ~ ~] [sd ~ sd sd] [~ sd ~ ~] [sd ~ sd sd] ", + "[hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const HalfDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Haus = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const HipHop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Hiphop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const Hiphop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd bd ~ ~] [~ bd ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd bd ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [bd bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop5 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop6 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Hiphop7 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Hiphop8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh ~ hh] [hh ~ hh hh] [hh hh ~ hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const HiphopAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ ~] [bd ~ ~ ~] [bd bd ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", +).s().slow(2) +`; + +export const HookAndSling = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ bd ~ ~] [~ bd bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ sd ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd sd ~ sd] [~ ~ sd sd] [~ ~ sd sd] ", + "[hh ~ hh hh] [~ hh ~ ~] [hh hh ~ hh] [~ ~ ~ ~] [hh hh ~ hh] [~ ~ hh ~] [hh hh ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const HotSweat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [sd sd ~ ~] [sd ~ sd sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const House1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const House1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[~ ~ oh ~] [~ oh ~ ~] [~ ~ oh ~] [~ oh ~ ~]", +).s().slow(2) +`; + +export const HybridKick1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1d = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1e = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1f = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1g = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd ~ bd] [~ bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const IGotTheFeelin = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] [~ ~ sd ~] [~ sd ~ ~] [sd sd ~ sd] [~ sd sd sd] [~ sd sd sd] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const IGotYou = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ImpeachThePresident = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Irregular1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd]", +).s().slow(2) +`; + +export const Irregular1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd]", +).s().slow(2) +`; + +export const Irregular2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Irregular2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Irregular3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~]", + "[~ sd ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~]", +).s().slow(2) +`; + +export const ItaloDisco1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ mt ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ rim] [rim ~ ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ ~ cb] [~ ~ cb ~] [cb ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const ItaloDisco1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ mt ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ rim] [rim ~ ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ ~ cb] [~ ~ cb ~] [cb ~ cb ~] [cb cb ~ ~] ", + "[cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const ItsANewDay = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Juke = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[sd ~ sd sd] [~ sd ~ sd] [~ sd sd ~] [sd ~ sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Jungle = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ sd ~ ~] [~ sd ~ sd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ oh] [~ ~ oh ~] [~ ~ ~ oh] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const Jungle1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Jungle1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ bd bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ sd ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", +).s().slow(2) +`; + +export const JungleAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const Kick = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", +).s().slow(2) +`; + +export const KissingMyLove = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const KnocksOffMyFeet = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [bd ~ ~ bd] [bd ~ bd ~] [bd ~ ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ hh hh] [~ hh ~ ~] [~ ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Lady = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const LadyMarmalade = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const LetAWomanBeAWomanLetAManBeAMan = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ bd bd ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd sd ~] [sd sd ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const LookingForThePerfectBeat1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim rim rim rim] [rim rim ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ cb ~] [~ cb ~ cb] [~ ~ ~ cb] [~ ~ cb ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const LookingForThePerfectBeat1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ sd sd] ", + "[rim rim rim rim] [rim rim ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ cb ~] [~ cb ~ cb] [~ ~ ~ cb] [~ ~ cb ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Lookkapypy = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ ~] [~ ~ bd ~] [~ bd bd ~] [bd ~ ~ bd] [~ bd ~ bd] [bd ~ bd ~] [~ bd bd ~] ", + "[~ sd ~ ~] [sd ~ ~ sd] [sd ~ sd ~] [~ ~ sd ~] [~ sd ~ ~] [sd sd ~ sd] [sd ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const MiamiBass1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const MiamiBass2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const MoreBounceToTheOunce = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~]", + "[~ ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const MotherPopcorn = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", +).s().slow(2) +`; + +export const MusicNonStop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const MusicNonStop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim rim rim ~] [~ rim ~ ~] [rim ~ ~ rim] [~ rim rim ~] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const MusicNonStop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim ~ rim ~] [rim rim ~ ~] [rim ~ ~ rim] [~ rim rim rim] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const NewWave = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sh ~ ~ ~] [~ ~ ~ ~] [sh ~ ~ ~]", +).s().slow(2) +`; + +export const Nico = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [~ bd bd ~] [~ ~ ~ ~] ", + "[~ ~ rim rim] [~ rim rim rim] [rim ~ ~ rim] [~ rim rim rim] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", +).s().slow(2) +`; + +export const Numbers1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh hh hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Numbers1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh hh ~ hh] [hh hh hh hh] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const OneDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const OneSevenFiveThirteen = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const OohChild = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ ~] [sd ~ sd ~] ", + "[hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const PalmGrease = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] ", + "[hh hh hh hh] [~ hh hh ~] [hh ~ hh hh] [~ hh hh ~] [hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const PapaWasToo = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh hh] ", + "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pattern00 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern01 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern02 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern03 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern04 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern05 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern06 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern07 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern08 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern09 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern12 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern13 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern14 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern15 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern16 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern17 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern18 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern19 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern20 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern21 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern22 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern23 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern24 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern25 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern26 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern27 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern28 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern29 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern30 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern31 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern32 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern33 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern34 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern35 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern36 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern37 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern38 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern39 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern40 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern41 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern42 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern43 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern44 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern45 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern46 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern47 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern48 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern49 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern50 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern51 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern52 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern53 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern54 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern55 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern56 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern57 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern58 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern59 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern60 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern61 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern62 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern63 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const PlanetRock = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[cb ~ cb ~] [cb ~ cb cb] [~ cb ~ cb] [cb ~ cb ~]", + "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh hh hh hh]", +).s().slow(2) +`; + +export const Poly1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ sd ~] [sd ~ ~ [sd sd]] [sd ~ sd sd] [sd ~ sd sd]", +).s().slow(2) +`; + +export const Poly1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ sd ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Pop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ lt ~] [lt ~ lt ~] [lt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd ~] [sd ~ sd ~] [sd ~ sd sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] ", +).s().slow(2) +`; + +export const Pop2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ac] [~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Pop3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ bd bd] [~ bd ~ ~] [bd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ bd ~ ~] [bd ~ bd bd] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] [sd ~ sd sd] ", +).s().slow(2) +`; + +export const Pop5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh hh ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", + "[~ sd sd sd] [sd ~ sd sd] [sd sd sd ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Poptech2010 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd bd bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] ", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ lt ~] [~ ~ ~ ~] ", + "[~ ~ mt ~] [~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ sd] [~ sd sd sd] [~ sd ~ sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const RNB2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ bd] [~ ~ bd bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ bd] [~ bd bd ~] [~ bd ~ bd] [~ bd bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const RNB3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] ", + "[hh ~ ~ hh] [hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ ~] [~ lt ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd ~] [~ ~ ~ ~] [sd ~ sd sd] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const RNB4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ hh] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [mt ~ mt mt] ", + "[~ sd sd ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ bd] [bd ~ bd ~] [bd bd ~ bd] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ sd] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const RNB5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ ~ ~ bd] [bd ~ bd bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt mt mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ sd sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [rim ~ ~ rim] [~ rim ~ ~] [rim ~ ~ rim] ", +).s().slow(2) +`; + +export const Reggae1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ rim rim] [~ ~ rim ~] [~ ~ rim rim] [~ ~ rim ~] ", +).s().slow(2) +`; + +export const Reggae1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ sd ~] [sd ~ sd ~] [~ ~ ~ ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Reggae2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [hh hh hh ~] [~ ~ hh ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [~ ~ hh ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[sd ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ bd] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ hh] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] ", + "[~ ~ ~ oh] [~ ~ ~ ~] [~ oh ~ ~] ", + "[rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", + "[sd sd sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ rim ~] [~ ~ rim ~] [~ ~ rim ~] [~ ~ rim rim] ", +).s().slow(2) +`; + +export const Reggae5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] ", + "[~ ~ oh oh] [~ ~ oh oh] [~ ~ oh oh] [~ ~ oh oh] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ rim] ", +).s().slow(2) +`; + +export const Reggae5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ lt ~ lt] [~ ~ ~ ~] ", + "[~ ~ ~ mt] [~ mt mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggaeton = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ sd] [~ ~ sd ~] [~ ~ ~ sd] [~ ~ sd ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const RespectYourself = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const Rock1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ht] [ht ~ ~ ht] [ht ~ ~ ht] [~ ~ ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Rock2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ac ~] [ac ~ ac ~] [ac ~ ac ~] [ac ~ ac ~] ", + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", +).s().slow(2) +`; + +export const Rock2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ bd ~] [bd ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cy ~ cy ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ac] [ac ~ ~ ac] [ac ~ ~ ac] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[sd sd sd sd] [sd sd sd sd] [sd sd sd sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Rock5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ac ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ sd ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RockSteady = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] ", + "[~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] ", + "[~ hh ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh hh] ", + "[~ ~ oh ~] [~ ~ ~ oh] [~ ~ oh ~] [~ ~ ~ oh] [~ oh ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const RockThePlanet = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh hh ~ hh] [hh hh hh hh]", +).s().slow(2) +`; + +export const RollinBreak = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Rolling1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd bd ~] [~ bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const Rolling4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7d = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling9a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling9b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Sally = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[lt ~ ~ ~] [~ ~ lt ~] [~ ~ lt ~] [~ ~ lt ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Samba1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ hh hh ~] [~ hh hh ~] [~ hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[cb ~ cb ~] [cb cb ~ cb] [~ cb cb ~] [cb cb ~ cb] ", + "[~ hh ~ hh] [~ ~ hh ~] [hh ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ mt] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const Samba2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[~ ~ rim ~] [~ rim ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ ~ ~ ~] [~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ rim ~ ~] [~ rim ~ ~] [~ rim ~ ~] [~ rim ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ lt ~] [~ ~ ~ ~] ", + "[mt ~ ~ mt] [~ ~ mt ~] [~ mt ~ ~] [mt ~ ~ mt] ", + "[~ sd sd ~] [~ ~ ~ sd] [sd ~ ~ ~] [~ sd sd ~] ", +).s().slow(2) +`; + +export const Samba3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ~] ", + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[~ hh ~ hh] [~ ~ hh ~] [hh ~ ~ hh] [~ ~ hh ~] ", + "[sd ~ sd ~] [sd sd ~ sd] [~ sd sd ~] [sd sd ~ sd] ", +).s().slow(2) +`; + +export const Samba3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh hh ~ ~] [~ ~ hh hh] [~ ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ht ~] [ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ sd ~] [sd ~ ~ ~] [sd ~ ~ sd] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const Shuffle1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ bd] [bd ~ bd bd] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ sd ~] [~ sd ~ ~] ", +).s().slow(2) +`; + +export const Shuffle2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ bd] ", + "[hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ sd sd ~] [sd sd sd sd] [~ sd sd ~] ", +).s().slow(2) +`; + +export const SiberianNights = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const Ska1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ska1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ska1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ sd sd] [~ ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const SlowDeepHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[sh sh sh sh] [sh sh sh sh] [sh sh sh sh] [sh sh sh sh]", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~]", + "[~ ~ oh oh] [~ ~ oh oh] [~ oh oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const Steppers = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Strbtsdcgogo100 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ hh hh ~] [hh hh ~ hh] [~ ~ ~ ~] [~ hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Supersonic1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Supersonic1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Supersonic2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[cb ~ cb cb] [cb ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Supersonic2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] ", + "[cb ~ cb cb] [cb ~ cb ~] [cb ~ ~ ~] [~ ~ ~ ~] ", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Superstition = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh hh hh ~] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Swing1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Swing2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd bd ~] [bd bd bd ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ sd] [~ ~ ~ sd] [~ sd sd ~] ", +).s().slow(2) +`; + +export const Swing3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ ~] ", + "[~ ~ ~ ~] [mt mt ~ ~] [~ ~ mt mt] ", + "[oh ~ ~ oh] [~ ~ oh ~] [~ oh ~ ~] ", + "[~ sd sd ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const SynthWave = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", +).s().slow(2) +`; + +export const SynthethicSubstitution = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ bd bd bd] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd] [~ bd bd bd] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const TakeMeToMardiGras = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cp ~ cp ~] [~ cp ~ ~] [~ cp ~ ~] [cp ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ cy] ", +).s().slow(2) +`; + +export const TakeMeToMardiGrasAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[cp ~ cp ~] [~ cp ~ ~] [~ cp ~ ~] [cp ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ cy] ", +).s().slow(2) +`; + +export const Techno = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] [~ ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const TheFez = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [bd ~ ~ ~] ", + "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", +).s().slow(2) +`; + +export const TheSameBlood = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [~ sd sd ~] [~ ~ ~ ~] [sd sd sd ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const TheTrillsGone = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", +).s().slow(2) +`; + +export const TinyHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const TransEuroExpress = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ ~ hh] [hh ~ hh hh] [hh ~ ~ hh] ", +).s().slow(2) +`; + +export const Trap1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Trap1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~]", + "[[hh hh hh] ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [[hh hh hh] ~ hh ~]", +).s().slow(2) +`; + +export const Twist1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Twist2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const TwoDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const UkGarage1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh hh] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh hh]", + "[~ rim ~ ~] [~ ~ ~ rim] [~ ~ ~ ~] [~ rim ~ ~]", + "[~ ~ ~ ~] [~ mt ~ ~] [~ ~ ~ mt] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UkGarage1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~]", + "[~ rim ~ ~] [~ ~ ~ rim] [~ ~ ~ ~] [~ rim ~ ~]", + "[~ ~ ~ ~] [~ mt ~ ~] [~ ~ ~ mt] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const UnconventionalSnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[sd ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnknownDrummer = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ hh hh ~] [hh hh ~ hh] [~ ~ ~ ~] [~ hh ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [oh ~ ~ ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const UseMe = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ bd] [bd ~ bd bd] [~ bd ~ bd] [bd ~ bd ~] [~ bd ~ ~] [bd bd ~ bd] [~ bd ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ sd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh ~ ~ ~] [~ ~ ~ hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ ~] ", +).s().slow(2) +`; + +export const UseMeAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] ", + "[~ ~ sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] ", + "[hh ~ ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const WalkThisWay = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const WeWillRockYou = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", +).s().slow(2) +`; + +export const WhenTheLeveeBreaks = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const YaMama = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~]", +).s().slow(2) +`; From ff9ebd64e35152b48e79ea1d75d36bd081528635 Mon Sep 17 00:00:00 2001 From: urswilke Date: Mon, 16 Jan 2023 22:18:22 +0100 Subject: [PATCH 02/52] run: npm test --- test/__snapshots__/tunes.test.mjs.snap | 6842 ++++++++++++++++++++++++ 1 file changed, 6842 insertions(+) diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap index beda5f0d7..8c446a609 100644 --- a/test/__snapshots__/tunes.test.mjs.snap +++ b/test/__snapshots__/tunes.test.mjs.snap @@ -1,5 +1,6847 @@ // Vitest Snapshot v1 +exports[`renders tunes > tune: Afro1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro1c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Afro2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro2c 1`] = ` +[ + "[ 3/4 → 7/8 | s:lt ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Afro3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 3/8 → 1/2 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Afro3c 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 3/8 | s:mt ]", + "[ 3/8 → 1/2 | s:mt ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Afro4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro4c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ht ]", + "[ 3/4 → 7/8 | s:ht ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Afro5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro5c 1`] = ` +[ + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Afro6a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro6b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/4 → 7/8 | s:ht ]", + "[ 3/8 → 1/2 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Afro6c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 1/4 → 3/8 | s:cy ]", + "[ 3/8 → 1/2 | s:cy ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Ageispolis 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Amen 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: AmenBrother 1`] = ` +[ + "[ 0/1 → 1/32 | s:bd ]", + "[ 1/16 → 3/32 | s:bd ]", + "[ 5/16 → 11/32 | s:bd ]", + "[ 11/32 → 3/8 | s:bd ]", + "[ 1/2 → 17/32 | s:bd ]", + "[ 9/16 → 19/32 | s:bd ]", + "[ 13/16 → 27/32 | s:bd ]", + "[ 1/8 → 5/32 | s:sd ]", + "[ 7/32 → 1/4 | s:sd ]", + "[ 9/32 → 5/16 | s:sd ]", + "[ 3/8 → 13/32 | s:sd ]", + "[ 15/32 → 1/2 | s:sd ]", + "[ 5/8 → 21/32 | s:sd ]", + "[ 23/32 → 3/4 | s:sd ]", + "[ 25/32 → 13/16 | s:sd ]", + "[ 7/8 → 29/32 | s:sd ]", + "[ 31/32 → 1/1 | s:sd ]", + "[ 0/1 → 1/32 | s:hh ]", + "[ 1/16 → 3/32 | s:hh ]", + "[ 1/8 → 5/32 | s:hh ]", + "[ 3/16 → 7/32 | s:hh ]", + "[ 1/4 → 9/32 | s:hh ]", + "[ 5/16 → 11/32 | s:hh ]", + "[ 3/8 → 13/32 | s:hh ]", + "[ 7/16 → 15/32 | s:hh ]", + "[ 1/2 → 17/32 | s:hh ]", + "[ 9/16 → 19/32 | s:hh ]", + "[ 5/8 → 21/32 | s:hh ]", + "[ 11/16 → 23/32 | s:hh ]", + "[ 3/4 → 25/32 | s:hh ]", + "[ 13/16 → 27/32 | s:hh ]", + "[ 7/8 → 29/32 | s:hh ]", + "[ 15/16 → 31/32 | s:hh ]", +] +`; + +exports[`renders tunes > tune: AshleysRoachClip 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:lt ]", + "[ 1/4 → 3/8 | s:lt ]", + "[ 1/2 → 5/8 | s:lt ]", + "[ 3/4 → 7/8 | s:lt ]", + "[ 1/8 → 1/4 | s:ht ]", + "[ 3/8 → 1/2 | s:ht ]", + "[ 5/8 → 3/4 | s:ht ]", + "[ 7/8 → 1/1 | s:ht ]", +] +`; + +exports[`renders tunes > tune: Autobahn1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:cp ]", + "[ 1/4 → 3/8 | s:cp ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 3/4 → 7/8 | s:cp ]", + "[ 7/8 → 1/1 | s:cp ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Autobahn1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:cp ]", + "[ 1/4 → 3/8 | s:cp ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 3/4 → 7/8 | s:cp ]", + "[ 7/8 → 1/1 | s:cp ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Ballad1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad2c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Ballad3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad3c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 3/4 → 7/8 | s:ht ]", + "[ 7/8 → 1/1 | s:ht ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad4c 1`] = ` +[ + "[ 5/8 → 3/4 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 1/8 → 1/4 | s:mt ]", + "[ 1/4 → 3/8 | s:mt ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ballad5c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: BigBeat 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/2 → 5/8 | s:cp ]", +] +`; + +exports[`renders tunes > tune: BillyJean 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: BlueMonday1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: BlueMonday2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Blues1a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 1/6 → 1/3 | s:bd ]", + "[ 1/3 → 1/2 | s:bd ]", + "[ 1/2 → 2/3 | s:bd ]", + "[ 2/3 → 5/6 | s:bd ]", + "[ 5/6 → 1/1 | s:bd ]", + "[ 0/1 → 1/6 | s:hh ]", + "[ 1/6 → 1/3 | s:hh ]", + "[ 1/3 → 1/2 | s:hh ]", + "[ 1/2 → 2/3 | s:hh ]", + "[ 2/3 → 5/6 | s:hh ]", + "[ 5/6 → 1/1 | s:hh ]", + "[ 0/1 → 1/6 | s:sd ]", + "[ 1/6 → 1/3 | s:sd ]", + "[ 1/3 → 1/2 | s:sd ]", + "[ 1/2 → 2/3 | s:sd ]", + "[ 2/3 → 5/6 | s:sd ]", + "[ 5/6 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Blues2a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 1/2 → 2/3 | s:bd ]", + "[ 0/1 → 1/6 | s:hh ]", + "[ 1/2 → 2/3 | s:hh ]", + "[ 1/6 → 1/3 | s:sd ]", + "[ 1/3 → 1/2 | s:sd ]", + "[ 2/3 → 5/6 | s:sd ]", + "[ 5/6 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: BookOfMoses 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/4 → 5/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 15/16 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: BootsNCats 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Bossa1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Bossa1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Bossa1c 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 0/1 → 1/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Bossa2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 1/4 → 3/8 | s:cy ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Bossa2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 1/4 → 3/8 | s:cy ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Bossa2c 1`] = ` +[ + "[ 1/4 → 3/8 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", +] +`; + +exports[`renders tunes > tune: Bouton 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Break1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Break2 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Breakbeat1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Breakbeat2 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Breakbeat3 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: BritHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ChaChaCha1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/4 → 3/8 | s:ht ]", + "[ 3/4 → 7/8 | s:ht ]", +] +`; + +exports[`renders tunes > tune: ChaChaCha1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/4 → 3/8 | s:ht ]", + "[ 3/8 → 1/2 | s:ht ]", + "[ 3/4 → 7/8 | s:lt ]", + "[ 7/8 → 1/1 | s:lt ]", +] +`; + +exports[`renders tunes > tune: ChaChaCha1c 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 1/2 → 5/8 | s:lt ]", + "[ 3/4 → 7/8 | s:lt ]", +] +`; + +exports[`renders tunes > tune: ChugChugChugaLug 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: CissyStrutLong 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 3/16 → 1/4 | s:bd ]", + "[ 5/16 → 3/8 | s:bd ]", + "[ 9/16 → 5/8 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 3/4 → 13/16 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 3/4 → 13/16 | s:oh ]", + "[ 7/8 → 15/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: CissyStrutShort 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: ColdSweat 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ColdSweatOpening 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ComeDancing 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 7/16 → 1/2 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 15/16 → 1/1 | s:bd ]", + "[ 1/16 → 1/8 | s:sd ]", + "[ 1/8 → 3/16 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 3/8 → 7/16 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 15/16 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick1b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick2a 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick2b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporaryKick4 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporarySnare1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporarySnare1b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporarySnare2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporarySnare2b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporarySnare3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ContemporarySnare3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: CowdBell 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 3/8 → 1/2 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 3/4 → 7/8 | s:cb ]", + "[ 7/8 → 1/1 | s:cb ]", +] +`; + +exports[`renders tunes > tune: DasModel1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: DasModel1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: DeepHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: DeeperHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/8 → 1/4 | s:cp ]", + "[ 1/4 → 3/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 3/8 → 1/2 | s:sh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: DirtyHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/4 → 3/8 | s:cp ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 1/4 → 3/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Disco1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco1c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco2c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco3c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco4c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Disco5c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Dnb1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Dnb1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Dnb2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Dnb3 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Dnb4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Dnb4b 1`] = ` +[ + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Drumroll1 1`] = ` +[ + "[ 0/1 → 1/8 | s:oh ]", + "[ 0/1 → 1/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll2 1`] = ` +[ + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll3 1`] = ` +[ + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll4 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll5 1`] = ` +[ + "[ 0/1 → 1/8 | s:ht ]", + "[ 1/2 → 5/8 | s:mt ]", +] +`; + +exports[`renders tunes > tune: Drumroll6 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 3/8 → 1/2 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll7 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll8 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll9 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 3/8 → 1/2 | s:ht ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll10 1`] = ` +[ + "[ 1/8 → 1/4 | s:ht ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", +] +`; + +exports[`renders tunes > tune: Drumroll11 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll12 1`] = ` +[ + "[ 1/8 → 1/4 | s:ht ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", +] +`; + +exports[`renders tunes > tune: Drumroll13 1`] = ` +[ + "[ 3/8 → 1/2 | s:mt ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 0/1 → 1/8 | s:lt ]", + "[ 1/8 → 1/4 | s:lt ]", + "[ 1/4 → 3/8 | s:lt ]", +] +`; + +exports[`renders tunes > tune: Drumroll14 1`] = ` +[ + "[ 1/8 → 1/4 | s:ht ]", + "[ 3/8 → 1/2 | s:lt ]", + "[ 7/8 → 1/1 | s:lt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Drumroll15 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll16 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 3/8 → 1/2 | s:ht ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 1/2 → 5/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll17 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 3/4 → 7/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll18 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 1/4 → 3/8 | s:cy ]", + "[ 1/2 → 5/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Drumroll19 1`] = ` +[ + "[ 1/4 → 3/8 | s:ht ]", + "[ 1/2 → 5/8 | s:ht ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Dubstep1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Dubstep1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: DubstepRatcheted 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 3/16 → 1/4 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 5/16 | s:oh ]", + "[ 5/16 → 3/8 | s:oh ]", + "[ 3/8 → 7/16 | s:oh ]", + "[ 7/16 → 1/2 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Electro1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Electro1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Electro2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Electro2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Electro3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Electro3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: End1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:cy ]", +] +`; + +exports[`renders tunes > tune: End1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: ExpensiveShit 1`] = ` +[ + "[ 3/16 → 1/4 | s:bd ]", + "[ 3/8 → 7/16 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 0/1 → 1/16 | s:sd ]", + "[ 1/16 → 1/8 | s:sd ]", + "[ 3/16 → 1/4 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 1/2 → 9/16 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 15/16 → 1/1 | s:hh ]", + "[ 11/16 → 3/4 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ExpressYourself 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 3/16 → 1/4 | s:bd ]", + "[ 1/4 → 5/16 | s:bd ]", + "[ 7/16 → 1/2 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 3/4 → 13/16 | s:bd ]", + "[ 15/16 → 1/1 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 11/16 → 3/4 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 15/16 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Footwork1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Footwork2 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", +] +`; + +exports[`renders tunes > tune: FourOnTheFloor 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: FrenchHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:sh ]", + "[ 1/8 → 1/4 | s:sh ]", + "[ 1/4 → 3/8 | s:sh ]", + "[ 1/2 → 5/8 | s:sh ]", + "[ 3/4 → 7/8 | s:sh ]", + "[ 7/8 → 1/1 | s:sh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Funk1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 3/8 → 1/2 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Funk2c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Funk3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Funk3c 1`] = ` +[ + "[ 3/8 → 1/2 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk4c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ht ]", + "[ 5/8 → 3/4 | s:ht ]", + "[ 3/4 → 7/8 | s:ht ]", + "[ 7/8 → 1/1 | s:ht ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk5a 1`] = ` +[ + "[ 5/8 → 3/4 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk5b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk5c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk6a 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 5/8 → 3/4 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk6b 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 5/8 → 3/4 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 3/8 | s:ht ]", + "[ 7/8 → 1/1 | s:lt ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk6c 1`] = ` +[ + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk7a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk7b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk7c 1`] = ` +[ + "[ 3/4 → 7/8 | s:ac ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk8a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk8b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk8c 1`] = ` +[ + "[ 5/8 → 3/4 | s:ac ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk9a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk9b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk9c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk10a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk10b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk10c 1`] = ` +[ + "[ 1/8 → 1/4 | s:ac ]", + "[ 5/8 → 3/4 | s:ac ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk11a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk11b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk11c 1`] = ` +[ + "[ 3/8 → 1/2 | s:ac ]", + "[ 7/8 → 1/1 | s:ac ]", + "[ 5/8 → 3/4 | s:ht ]", + "[ 3/4 → 7/8 | s:ht ]", + "[ 0/1 → 1/8 | s:lt ]", + "[ 7/8 → 1/1 | s:lt ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk12a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk12b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk12c 1`] = ` +[ + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk13a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Funk13b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Funk13c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk14a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk14b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk14c 1`] = ` +[ + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Funk15a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 0/1 → 1/6 | s:hh ]", + "[ 1/3 → 1/2 | s:sd ]", + "[ 2/3 → 5/6 | s:sd ]", +] +`; + +exports[`renders tunes > tune: FunkyDrummer 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: FunkyDrummerAlt 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: FunkyPresident 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: GenericBossaNova 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/8 → 1/4 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 5/8 → 3/4 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: GenericGahu 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: GenericRock 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: GenericRumba 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/8 → 1/4 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 5/8 → 3/4 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: GenericShiko 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: GenericSon 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/8 → 1/4 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 5/8 → 3/4 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: GenericSoukous 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: GetUp 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: GhostSnare1a 1`] = ` +[ + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: GhostSnare1b 1`] = ` +[ + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: GhostSnare2a 1`] = ` +[ + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: GhostSnare2b 1`] = ` +[ + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: GoodToGo 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: GrooveMe 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: HaitianDivorce 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: HalfDrop 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Haus 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: HipHop 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Hiphop 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Hiphop1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop5 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Hiphop6 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Hiphop7 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Hiphop8 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: HiphopAlt 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: HookAndSling 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/8 → 3/16 | s:bd ]", + "[ 9/16 → 5/8 | s:bd ]", + "[ 13/16 → 7/8 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 3/8 → 7/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", +] +`; + +exports[`renders tunes > tune: HotSweat 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 1/2 → 9/16 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: House1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: House1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 5/8 → 3/4 | s:oh ]", +] +`; + +exports[`renders tunes > tune: HybridKick1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick1d 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick1e 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick1f 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick1g 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: HybridKick3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: IGotTheFeelin 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/8 → 3/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 3/8 → 7/16 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: IGotYou 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 1/8 → 3/16 | s:oh ]", + "[ 5/8 → 11/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ImpeachThePresident 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Irregular1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Irregular1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Irregular2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Irregular2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Irregular3 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: ItaloDisco1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/8 → 1/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 3/8 → 1/2 | s:cb ]", + "[ 3/4 → 7/8 | s:cb ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/8 → 1/4 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 5/8 → 3/4 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ItaloDisco1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/8 → 1/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 3/8 → 1/2 | s:cb ]", + "[ 3/4 → 7/8 | s:cb ]", + "[ 0/1 → 1/8 | s:cy ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/8 → 1/4 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 5/8 → 3/4 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: ItsANewDay 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Juke 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Jungle 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Jungle1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Jungle1b 1`] = ` +[ + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: JungleAlt 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Kick 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", +] +`; + +exports[`renders tunes > tune: KissingMyLove 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 3/16 → 1/4 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 7/8 → 15/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: KnocksOffMyFeet 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Lady 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/8 → 3/16 | s:oh ]", + "[ 3/8 → 7/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: LadyMarmalade 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 3/8 → 7/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: LetAWomanBeAWomanLetAManBeAMan 1`] = ` +[ + "[ 1/8 → 3/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 13/16 → 7/8 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: LookingForThePerfectBeat1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 5/8 → 3/4 | s:cb ]", + "[ 7/8 → 1/1 | s:cb ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: LookingForThePerfectBeat1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 5/8 → 3/4 | s:cb ]", + "[ 7/8 → 1/1 | s:cb ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Lookkapypy 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 3/16 → 1/4 | s:bd ]", + "[ 5/16 → 3/8 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 13/16 → 7/8 | s:bd ]", + "[ 7/8 → 15/16 | s:bd ]", + "[ 1/16 → 1/8 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 1/2 → 9/16 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 5/8 → 11/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: MiamiBass1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: MiamiBass2 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: MoreBounceToTheOunce 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: MotherPopcorn 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/8 → 3/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: MusicNonStop1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: MusicNonStop2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: MusicNonStop2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: NewWave 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 1/2 → 5/8 | s:sh ]", +] +`; + +exports[`renders tunes > tune: Nico 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 1/2 → 5/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Numbers1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Numbers1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: OneDrop 1`] = ` +[ + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: OneSevenFiveThirteen 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: OohChild 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/8 → 3/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 1/16 → 1/8 | s:sd ]", + "[ 3/16 → 1/4 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 11/16 → 3/4 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 1/8 → 3/16 | s:oh ]", + "[ 3/8 → 7/16 | s:oh ]", + "[ 5/8 → 11/16 | s:oh ]", + "[ 7/8 → 15/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: PalmGrease 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 15/16 → 1/1 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 5/8 → 11/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: PapaWasToo 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:lt ]", +] +`; + +exports[`renders tunes > tune: Pattern00 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern01 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern02 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern03 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern04 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern05 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern06 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern07 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern08 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern09 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern10 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern11 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern12 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern13 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern14 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern15 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern16 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern17 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern18 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern19 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern20 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern21 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern22 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern23 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern24 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern25 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern26 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern27 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern28 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern29 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern30 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern31 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern32 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern33 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern34 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern35 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern36 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern37 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern38 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern39 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern40 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern41 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern42 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern43 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern44 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern45 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern46 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern47 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern48 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern49 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern50 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern51 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern52 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern53 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern54 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern55 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern56 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern57 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern58 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern59 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern60 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern61 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern62 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Pattern63 1`] = ` +[ + "[ 0/1 → 1/12 | s:bd ]", + "[ 1/3 → 5/12 | s:bd ]", + "[ 5/6 → 11/12 | s:bd ]", + "[ 11/12 → 1/1 | s:bd ]", + "[ 1/2 → 7/12 | s:sd ]", + "[ 5/6 → 11/12 | s:sd ]", + "[ 0/1 → 1/12 | s:hh ]", + "[ 1/6 → 1/4 | s:hh ]", + "[ 1/4 → 1/3 | s:hh ]", + "[ 5/12 → 1/2 | s:hh ]", + "[ 1/2 → 7/12 | s:hh ]", + "[ 2/3 → 3/4 | s:hh ]", + "[ 3/4 → 5/6 | s:hh ]", + "[ 11/12 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: PlanetRock 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 3/4 → 7/8 | s:cb ]", + "[ 7/8 → 1/1 | s:cb ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Poly1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Poly1b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop1a 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop1b 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:lt ]", + "[ 1/2 → 5/8 | s:lt ]", + "[ 3/4 → 7/8 | s:lt ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop2c 1`] = ` +[ + "[ 3/8 → 1/2 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop3a 1`] = ` +[ + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop3c 1`] = ` +[ + "[ 3/8 → 1/2 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop4c 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Pop5c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:oh ]", + "[ 1/2 → 5/8 | s:oh ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Poptech2010 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 0/1 → 1/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: RNB1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB1c 1`] = ` +[ + "[ 1/2 → 5/8 | s:lt ]", + "[ 1/4 → 3/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB2b 1`] = ` +[ + "[ 3/8 → 1/2 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB2c 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB3c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 5/8 → 3/4 | s:lt ]", + "[ 1/4 → 3/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB4c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RNB5c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Reggae1a 1`] = ` +[ + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Reggae1b 1`] = ` +[ + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Reggae1c 1`] = ` +[ + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Reggae2a 1`] = ` +[ + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Reggae2b 1`] = ` +[ + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Reggae2c 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Reggae3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Reggae3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Reggae3c 1`] = ` +[ + "[ 3/4 → 7/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Reggae4a 1`] = ` +[ + "[ 1/2 → 2/3 | s:bd ]", + "[ 1/2 → 2/3 | s:hh ]", + "[ 1/2 → 2/3 | s:oh ]", + "[ 0/1 → 1/6 | s:rim ]", + "[ 0/1 → 1/6 | s:sd ]", + "[ 1/6 → 1/3 | s:sd ]", + "[ 1/3 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Reggae5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Reggae5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Reggae5c 1`] = ` +[ + "[ 3/8 → 1/2 | s:mt ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Reggaeton 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: RespectYourself 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/4 → 5/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 3/4 → 13/16 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Rock1a 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 3/8 → 1/2 | s:ht ]", + "[ 1/2 → 5/8 | s:ht ]", + "[ 7/8 → 1/1 | s:ht ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/4 → 3/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 3/4 → 7/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:oh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock2c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 5/8 → 3/4 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock3c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock4b 1`] = ` +[ + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock4c 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 3/8 → 1/2 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 7/8 → 1/1 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rock5c 1`] = ` +[ + "[ 7/8 → 1/1 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: RockSteady 1`] = ` +[ + "[ 1/8 → 3/16 | s:bd ]", + "[ 1/4 → 5/16 | s:bd ]", + "[ 7/16 → 1/2 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 3/4 → 13/16 | s:bd ]", + "[ 1/16 → 1/8 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 1/8 → 3/16 | s:oh ]", + "[ 7/16 → 1/2 | s:oh ]", + "[ 5/8 → 11/16 | s:oh ]", + "[ 15/16 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: RockThePlanet 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: RollinBreak 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Rolling1 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling2 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling4b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling5a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling5b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling6a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling7a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling7b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling7c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling7d 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling8 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling9a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling9b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling10 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Rolling11 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 5/8 → 3/4 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Sally 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:lt ]", + "[ 3/4 → 7/8 | s:lt ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Samba1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:lt ]", + "[ 3/8 → 1/2 | s:mt ]", +] +`; + +exports[`renders tunes > tune: Samba1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 5/8 → 3/4 | s:cb ]", + "[ 7/8 → 1/1 | s:cb ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Samba1c 1`] = ` +[ + "[ 3/4 → 7/8 | s:mt ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Samba2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", +] +`; + +exports[`renders tunes > tune: Samba2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 7/8 → 1/1 | s:mt ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Samba2c 1`] = ` +[ + "[ 1/2 → 5/8 | s:lt ]", + "[ 0/1 → 1/8 | s:mt ]", + "[ 3/8 → 1/2 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Samba3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:ac ]", + "[ 1/2 → 5/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Samba3b 1`] = ` +[ + "[ 7/8 → 1/1 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Samba3c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 1/4 → 3/8 | s:ht ]", + "[ 1/2 → 5/8 | s:ht ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Shuffle1a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 2/3 → 5/6 | s:bd ]", + "[ 5/6 → 1/1 | s:bd ]", + "[ 0/1 → 1/6 | s:hh ]", + "[ 1/2 → 2/3 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Shuffle2a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 1/2 → 2/3 | s:bd ]", + "[ 0/1 → 1/6 | s:hh ]", + "[ 1/2 → 2/3 | s:hh ]", + "[ 1/6 → 1/3 | s:sd ]", + "[ 1/3 → 1/2 | s:sd ]", + "[ 2/3 → 5/6 | s:sd ]", + "[ 5/6 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: SiberianNights 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Ska1a 1`] = ` +[ + "[ 1/4 → 3/8 | s:ac ]", + "[ 3/4 → 7/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ska1b 1`] = ` +[ + "[ 1/4 → 3/8 | s:ac ]", + "[ 3/4 → 7/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Ska1c 1`] = ` +[ + "[ 1/2 → 5/8 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/4 → 3/8 | s:sd ]", + "[ 3/8 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: SlowDeepHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:sh ]", + "[ 1/8 → 1/4 | s:sh ]", + "[ 1/4 → 3/8 | s:sh ]", + "[ 3/8 → 1/2 | s:sh ]", + "[ 1/2 → 5/8 | s:sh ]", + "[ 5/8 → 3/4 | s:sh ]", + "[ 3/4 → 7/8 | s:sh ]", + "[ 7/8 → 1/1 | s:sh ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/8 → 1/2 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", + "[ 7/8 → 1/1 | s:oh ]", +] +`; + +exports[`renders tunes > tune: Steppers 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Strbtsdcgogo100 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Supersonic1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Supersonic1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Supersonic2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 3/8 → 1/2 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Supersonic2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:cb ]", + "[ 1/4 → 3/8 | s:cb ]", + "[ 3/8 → 1/2 | s:cb ]", + "[ 1/2 → 5/8 | s:cb ]", + "[ 3/4 → 7/8 | s:cb ]", + "[ 0/1 → 1/8 | s:rim ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 1/4 → 3/8 | s:rim ]", + "[ 3/8 → 1/2 | s:rim ]", + "[ 1/2 → 5/8 | s:rim ]", + "[ 5/8 → 3/4 | s:rim ]", + "[ 3/4 → 7/8 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Superstition 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Swing1a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 1/2 → 2/3 | s:bd ]", + "[ 0/1 → 1/6 | s:hh ]", + "[ 1/2 → 2/3 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Swing2a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 1/6 → 1/3 | s:bd ]", + "[ 1/3 → 1/2 | s:bd ]", + "[ 2/3 → 5/6 | s:bd ]", + "[ 5/6 → 1/1 | s:bd ]", + "[ 1/2 → 2/3 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Swing3a 1`] = ` +[ + "[ 0/1 → 1/6 | s:bd ]", + "[ 1/2 → 2/3 | s:bd ]", + "[ 0/1 → 1/6 | s:cy ]", + "[ 1/2 → 2/3 | s:cy ]", + "[ 2/3 → 5/6 | s:mt ]", + "[ 5/6 → 1/1 | s:mt ]", + "[ 0/1 → 1/6 | s:oh ]", + "[ 1/2 → 2/3 | s:oh ]", + "[ 1/6 → 1/3 | s:sd ]", + "[ 1/3 → 1/2 | s:sd ]", +] +`; + +exports[`renders tunes > tune: SynthWave 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: SynthethicSubstitution 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/8 → 3/16 | s:bd ]", + "[ 7/16 → 1/2 | s:bd ]", + "[ 9/16 → 5/8 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 15/16 → 1/1 | s:bd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: TakeMeToMardiGras 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:cp ]", + "[ 1/4 → 3/8 | s:cp ]", + "[ 5/8 → 3/4 | s:cp ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 7/8 → 1/1 | s:cy ]", +] +`; + +exports[`renders tunes > tune: TakeMeToMardiGrasAlt 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", + "[ 0/1 → 1/8 | s:cp ]", + "[ 1/4 → 3/8 | s:cp ]", + "[ 5/8 → 3/4 | s:cp ]", + "[ 1/2 → 5/8 | s:cy ]", + "[ 7/8 → 1/1 | s:cy ]", +] +`; + +exports[`renders tunes > tune: Techno 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: TheFez 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 1/16 → 1/8 | s:sd ]", + "[ 3/16 → 1/4 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 5/16 → 3/8 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 11/16 → 3/4 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 13/16 → 7/8 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", +] +`; + +exports[`renders tunes > tune: TheSameBlood 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 3/8 → 1/2 | s:sd ]", + "[ 5/8 → 3/4 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: TheTrillsGone 1`] = ` +[ + "[ 7/8 → 1/1 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: TinyHouse 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 1/4 → 3/8 | s:oh ]", + "[ 3/4 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: TransEuroExpress 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Trap1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Trap1b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 0/1 → 1/24 | s:hh ]", + "[ 1/24 → 1/12 | s:hh ]", + "[ 1/12 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: Twist1a 1`] = ` +[ + "[ 3/4 → 7/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Twist1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Twist1c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 1/2 → 5/8 | s:mt ]", + "[ 3/4 → 7/8 | s:mt ]", +] +`; + +exports[`renders tunes > tune: Twist2a 1`] = ` +[ + "[ 3/4 → 7/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Twist2b 1`] = ` +[ + "[ 3/4 → 7/8 | s:ac ]", + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: Twist2c 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 3/4 → 7/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: TwoDrop 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: UkGarage1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/8 → 1/2 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 5/8 → 3/4 | s:mt ]", +] +`; + +exports[`renders tunes > tune: UkGarage1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:cp ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 1/8 → 1/4 | s:rim ]", + "[ 7/8 → 1/1 | s:rim ]", + "[ 5/8 → 3/4 | s:mt ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare1a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare1b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare2a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare2b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare3a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare3b 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/2 → 5/8 | s:bd ]", + "[ 7/8 → 1/1 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare4a 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnconventionalSnare4b 1`] = ` +[ + "[ 1/4 → 3/8 | s:bd ]", + "[ 0/1 → 1/8 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", +] +`; + +exports[`renders tunes > tune: UnknownDrummer 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 3/8 → 1/2 | s:bd ]", + "[ 3/4 → 7/8 | s:bd ]", + "[ 1/8 → 1/4 | s:sd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 7/8 → 1/1 | s:sd ]", + "[ 1/8 → 1/4 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 5/8 → 3/4 | s:hh ]", + "[ 7/8 → 1/1 | s:hh ]", +] +`; + +exports[`renders tunes > tune: UseMe 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/8 → 3/16 | s:bd ]", + "[ 5/16 → 3/8 | s:bd ]", + "[ 7/16 → 1/2 | s:bd ]", + "[ 1/2 → 9/16 | s:bd ]", + "[ 5/8 → 11/16 | s:bd ]", + "[ 11/16 → 3/4 | s:bd ]", + "[ 13/16 → 7/8 | s:bd ]", + "[ 15/16 → 1/1 | s:bd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/16 → 1/8 | s:hh ]", + "[ 1/8 → 3/16 | s:hh ]", + "[ 3/16 → 1/4 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 5/8 → 11/16 | s:hh ]", + "[ 11/16 → 3/4 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 15/16 → 1/1 | s:hh ]", + "[ 9/16 → 5/8 | s:oh ]", + "[ 11/16 → 3/4 | s:oh ]", + "[ 13/16 → 7/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: UseMeAlt 1`] = ` +[ + "[ 0/1 → 1/16 | s:bd ]", + "[ 1/4 → 5/16 | s:bd ]", + "[ 3/4 → 13/16 | s:bd ]", + "[ 1/8 → 3/16 | s:sd ]", + "[ 1/4 → 5/16 | s:sd ]", + "[ 3/8 → 7/16 | s:sd ]", + "[ 7/16 → 1/2 | s:sd ]", + "[ 9/16 → 5/8 | s:sd ]", + "[ 5/8 → 11/16 | s:sd ]", + "[ 3/4 → 13/16 | s:sd ]", + "[ 7/8 → 15/16 | s:sd ]", + "[ 15/16 → 1/1 | s:sd ]", + "[ 0/1 → 1/16 | s:hh ]", + "[ 1/4 → 5/16 | s:hh ]", + "[ 5/16 → 3/8 | s:hh ]", + "[ 3/8 → 7/16 | s:hh ]", + "[ 7/16 → 1/2 | s:hh ]", + "[ 1/2 → 9/16 | s:hh ]", + "[ 9/16 → 5/8 | s:hh ]", + "[ 3/4 → 13/16 | s:hh ]", + "[ 13/16 → 7/8 | s:hh ]", + "[ 7/8 → 15/16 | s:hh ]", + "[ 15/16 → 1/1 | s:hh ]", + "[ 1/8 → 3/16 | s:oh ]", + "[ 5/8 → 11/16 | s:oh ]", +] +`; + +exports[`renders tunes > tune: WalkThisWay 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", + "[ 0/1 → 1/8 | s:oh ]", +] +`; + +exports[`renders tunes > tune: WeWillRockYou 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/4 → 3/8 | s:bd ]", + "[ 1/2 → 5/8 | s:cp ]", +] +`; + +exports[`renders tunes > tune: WhenTheLeveeBreaks 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 1/8 → 1/4 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:sd ]", + "[ 0/1 → 1/8 | s:hh ]", + "[ 1/4 → 3/8 | s:hh ]", + "[ 1/2 → 5/8 | s:hh ]", + "[ 3/4 → 7/8 | s:hh ]", +] +`; + +exports[`renders tunes > tune: YaMama 1`] = ` +[ + "[ 0/1 → 1/8 | s:bd ]", + "[ 7/8 → 1/1 | s:bd ]", + "[ 1/2 → 5/8 | s:cy ]", +] +`; + exports[`renders tunes > tune: amensister 1`] = ` [ "[ 0/1 → 1/4 | n:0 s:amencutup room:0.5 ]", From 47c6ed8829c742a3ef281b9d55d6db19bdc07947 Mon Sep 17 00:00:00 2001 From: urswilke Date: Mon, 16 Jan 2023 23:06:43 +0100 Subject: [PATCH 03/52] Revert "import patterns created by new method in:" This reverts commit b266e975755e035b85c0869a30219c80a84db856. --- website/src/repl/tunes.mjs | 5141 ------------------------------------ 1 file changed, 5141 deletions(-) diff --git a/website/src/repl/tunes.mjs b/website/src/repl/tunes.mjs index 835e60a4f..3543cb054 100644 --- a/website/src/repl/tunes.mjs +++ b/website/src/repl/tunes.mjs @@ -869,5144 +869,3 @@ await samples('github:tidalcycles/Dirt-Samples/master') .slow(4) .stack(s("bd*4, [~ [hh hh? hh?]]*2,~ [sd ~ [sd:2? bd?]]").bank('RolandTR909').gain(.5).slow(2)) `; - -export const Afro1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ rim ~] [~ ~ rim ~] ", -).s().slow(2) -`; - -export const Afro1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", - "[~ ~ ~ ~] [~ ~ mt mt] [mt mt mt ~] [~ ~ ~ ~] ", - "[~ sd sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [mt ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ lt ~] [lt ~ lt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ rim] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] [bd ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ hh ~] [~ ~ hh ~] [hh ~ ~ ~] ", - "[~ ~ mt mt] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ mt mt] ", - "[~ sd ~ ~] [~ sd ~ sd] [~ ~ ~ sd] [~ sd ~ ~] ", -).s().slow(2) -`; - -export const Afro4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [ht ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] [~ ~ ~ ~] ", - "[sd ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[sd ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro6b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ rim] [~ ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] ", -).s().slow(2) -`; - -export const Afro6c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[cy ~ cy cy] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Ageispolis = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Amen = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const AmenBrother = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const AshleysRoachClip = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ bd bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", - "[lt ~ lt ~] [lt ~ lt ~] [lt ~ lt ~] [lt ~ lt ~] ", - "[~ ht ~ ht] [~ ht ~ ht] [~ ht ~ ht] [~ ht ~ ht] ", -).s().slow(2) -`; - -export const Autobahn1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~] ", - "[cp ~ cp ~] [cp ~ cp cp] [~ cp ~ cp] [cp ~ cp ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const Autobahn1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~] ", - "[cp ~ cp ~] [cp ~ cp cp] [~ cp ~ cp] [cp ~ cp ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const Ballad1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ac] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ sd sd] [sd ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ oh ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd sd] ", -).s().slow(2) -`; - -export const Ballad3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd bd ~ ~] [bd bd ~ ~] [bd bd ~ ~] ", - "[~ ~ ~ ~] [~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] ", - "[~ ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd sd] ", -).s().slow(2) -`; - -export const Ballad4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", - "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ hh ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ mt mt ~] [~ ~ ~ ~] [~ ~ mt ~] [mt mt ~ ~] ", - "[~ ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] ", - "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh hh hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ballad5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt mt] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const BigBeat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", -).s().slow(2) -`; - -export const BillyJean = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const BlueMonday1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const BlueMonday2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", - "[hh ~ ~ hh] [hh ~ ~ hh] [hh ~ ~ hh] [hh ~ ~ hh] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const Blues1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd bd bd] [bd bd bd bd] [bd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh ~ ~ ~] ", - "[sd sd sd sd] [sd sd sd sd] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Blues2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh ~ ~ hh] [~ ~ hh ~] [~ hh ~ ~] ", - "[~ sd sd ~] [sd sd ~ sd] [sd ~ sd sd] ", -).s().slow(2) -`; - -export const BookOfMoses = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", -).s().slow(2) -`; - -export const BootsNCats = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Bossa1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", -).s().slow(2) -`; - -export const Bossa1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Bossa1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", - "[rim ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Bossa2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", - "[~ ~ rim ~] [~ rim ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Bossa2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", - "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", -).s().slow(2) -`; - -export const Bossa2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [lt ~ ~ ~] ", - "[~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Bouton = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~]", - "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~]", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Break1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh hh hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Break2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [~ ~ hh ~]", -).s().slow(2) -`; - -export const Breakbeat1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Breakbeat2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Breakbeat3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const BritHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh]", - "[~ ~ cy ~] [~ ~ cy ~] [~ ~ cy ~] [~ ~ cy ~]", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const ChaChaCha1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", - "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ht ~] [~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", -).s().slow(2) -`; - -export const ChaChaCha1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", - "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ht ht] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] [~ ~ lt ~] ", -).s().slow(2) -`; - -export const ChaChaCha1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ht ~] [~ ~ ~ ~] [ht ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [lt ~ lt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const ChugChugChugaLug = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ bd ~ bd] [~ bd ~ bd] [~ ~ bd ~] ", - "[~ sd sd ~] [sd ~ ~ sd] [~ sd sd ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh hh hh ~] [hh hh hh ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const CissyStrutLong = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ bd ~ ~] [~ bd ~ bd] [bd ~ bd ~] [bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [bd ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ sd sd ~] [sd sd ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const CissyStrutShort = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ bd ~ ~] [bd bd ~ bd] [~ bd ~ ~] ", - "[sd sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd ~] ", - "[hh hh hh ~] [hh ~ hh hh] [~ hh hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const ColdSweat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] ", - "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const ColdSweatOpening = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] ", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const ComeDancing = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ bd] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ sd sd ~] [sd sd sd ~] [~ sd sd ~] [sd sd sd ~] [~ sd ~ ~] [sd sd ~ ~] [~ sd ~ ~] [sd sd sd ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const ContemporaryKick1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const ContemporaryKick1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const ContemporaryKick2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const ContemporaryKick2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const ContemporaryKick3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const ContemporaryKick3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const ContemporaryKick4 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const ContemporarySnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [~ ~ sd ~]", -).s().slow(2) -`; - -export const ContemporarySnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] [~ sd ~ ~]", -).s().slow(2) -`; - -export const ContemporarySnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const ContemporarySnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const ContemporarySnare3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ sd ~ sd]", -).s().slow(2) -`; - -export const ContemporarySnare3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const CowdBell = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd bd] [~ ~ bd bd] [~ bd ~ bd] ", - "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[cb ~ cb cb] [cb ~ cb cb] [cb ~ cb cb] [cb ~ cb cb] ", -).s().slow(2) -`; - -export const DasModel1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const DasModel1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const DeepHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", - "[~ hh ~ ~] [~ ~ ~ hh] [~ hh ~ ~] [~ ~ ~ ~]", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const DeeperHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ cp ~ ~] [~ ~ ~ ~] [~ cp ~ ~] [~ ~ ~ ~]", - "[~ ~ mt ~] [~ ~ ~ mt] [~ ~ mt ~] [~ ~ ~ ~]", - "[~ ~ ~ sh] [~ ~ ~ ~] [sh ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh oh] [~ ~ oh ~]", -).s().slow(2) -`; - -export const DirtyHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[~ ~ cp ~] [cp ~ ~ ~] [cp ~ cp ~] [cp ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ hh]", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const Disco1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh ~ hh] [hh hh ~ hh] [hh ~ hh hh] [hh hh ~ hh] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ oh ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [lt ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd sd ~ sd] [~ sd sd sd] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Disco2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", - "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", - "[hh ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ sd] [sd ~ sd ~] [sd ~ sd ~] [sd sd sd ~] ", -).s().slow(2) -`; - -export const Disco3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cb ~ cb cb] ", - "[hh hh hh hh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ mt] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ sd sd] [~ sd sd ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ bd] [bd ~ ~ ~] ", - "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh ~ ~] [~ hh ~ ~] [~ hh ~ ~] [~ hh ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", - "[~ ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const Disco5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh ~ ~] [~ hh ~ hh] [hh hh ~ ~] [~ hh ~ hh] ", - "[~ ~ oh oh] [~ ~ oh ~] [~ ~ oh oh] [~ ~ oh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh hh ~] [~ hh hh hh] [hh hh hh hh] [~ hh hh ~] ", - "[~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Disco5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] ", - "[~ ~ oh oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Dnb1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Dnb1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [bd bd bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Dnb2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", -).s().slow(2) -`; - -export const Dnb3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", - "[~ ~ ~ ~] [~ ~ oh oh] [oh oh ~ ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const Dnb4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const Dnb4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const Drumroll1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [ht ht ht ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ mt] [mt mt ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ht ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ht ~ ~] ", - "[~ ~ ~ ~] [mt ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [~ ~ lt lt] ", - "[sd ~ ~ sd] [~ ~ sd ~] [~ sd ~ ~] [sd ~ ~ ~] ", - "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ~] [~ ~ ~ ~] [~ ht ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [mt ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] [~ lt lt ~] ", - "[sd sd ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cy ~ cy ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll12 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ht ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ mt ~ ~] [~ mt ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ lt ~ ~] ", - "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] ", -).s().slow(2) -`; - -export const Drumroll13 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ht ht ht] [ht ~ ~ ~] ", - "[~ ~ ~ mt] [mt mt mt mt] [mt ~ ~ ~] [~ mt mt ~] ", - "[lt lt lt ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", -).s().slow(2) -`; - -export const Drumroll14 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ht ~ ~] [~ ~ ~ ~] [~ ht ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ lt] [~ ~ ~ lt] [~ ~ ~ lt] [~ ~ ~ lt] ", - "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll15 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", - "[sd sd ~ ~] [~ ~ sd sd] [~ ~ ~ ~] [sd sd ~ ~] ", - "[~ ~ hh ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll16 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] ", - "[sd sd ~ ~] [sd ~ sd sd] [~ ~ sd ~] [sd sd sd sd] ", - "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll17 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] [cy ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll18 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[sd sd ~ ~] [~ ~ sd sd] [~ ~ ~ ~] [sd sd ~ ~] ", - "[~ ~ cy ~] [cy ~ ~ ~] [cy ~ cy ~] [~ ~ cy ~] ", -).s().slow(2) -`; - -export const Drumroll19 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ~] [ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ mt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", - "[~ bd ~ bd] [~ bd ~ bd] [~ bd ~ bd] [bd ~ ~ ~] ", - "[sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] [~ sd ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] ", - "[sd ~ sd sd] [sd ~ sd sd] [~ sd sd sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[sd sd sd ~] [sd sd sd ~] [sd ~ sd ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Drumroll4 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ sd] ", - "[cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] [cy ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll5 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", -).s().slow(2) -`; - -export const Drumroll6 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ mt] [~ ~ mt mt] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ lt ~ ~] ", - "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll7 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt ~ ~ ~] [mt ~ mt mt] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", - "[sd ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", - "[sd sd ~ ~] [~ ~ sd ~] [sd sd ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Drumroll9 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt mt] [~ ~ mt mt] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", - "[sd sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Dubstep1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", - "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", - "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] [~ oh ~ ~]", -).s().slow(2) -`; - -export const Dubstep1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", - "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", - "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] [~ oh ~ ~]", -).s().slow(2) -`; - -export const DubstepRatcheted = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~]", - "[~ [~ sd] [sd sd] ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd]", - "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", - "[~ ~ [oh oh] [oh oh]] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const Electro1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Electro1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Electro2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Electro2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Electro3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Electro3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ bd ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const End1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const End1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const ExpensiveShit = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[sd sd ~ sd] [~ sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const ExpressYourself = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ ~] ", - "[hh ~ hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh ~ hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Footwork1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", - "[~ ~ hh ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ ~]", - "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim]", -).s().slow(2) -`; - -export const Footwork2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", - "[~ ~ hh ~] [~ ~ ~ hh] [hh ~ hh ~] [~ ~ hh ~]", - "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim]", -).s().slow(2) -`; - -export const FourOnTheFloor = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const FrenchHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", - "[sh sh sh ~] [sh ~ sh sh] [sh sh sh sh] [sh ~ sh sh]", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~]", -).s().slow(2) -`; - -export const Funk10a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh hh hh hh] [~ hh hh hh] [hh hh hh hh] [~ hh hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk10b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh hh hh hh] [~ hh hh hh] [hh hh hh hh] [~ hh hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk10c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ac ~ ~] [~ ac ~ ~] [~ ~ ac ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ bd ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ hh ~ ~] [~ ~ hh ~] [~ ~ ~ ~] ", - "[sd sd ~ sd] [sd ~ ~ sd] [sd ~ ~ ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Funk11a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk11b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd bd ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk11c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ac] ", - "[~ ~ ~ ~] [~ ht ht ~] [~ ~ ~ ht] [~ ~ ~ ~] ", - "[lt ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [lt ~ ~ ~] ", - "[~ ~ sd sd] [sd ~ ~ ~] [sd sd sd ~] [~ ~ sd sd] ", -).s().slow(2) -`; - -export const Funk12a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [~ ~ ~ bd] ", - "[hh hh hh ~] [~ hh hh ~] [hh ~ hh ~] [~ hh hh ~] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ oh ~ oh] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk12b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] ", - "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk12c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] ", - "[oh ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ sd ~ sd] [sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk13a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] ", - "[hh hh hh ~] [hh hh ~ ~] [hh hh hh ~] [hh hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", -).s().slow(2) -`; - -export const Funk13b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] ", - "[hh hh hh ~] [hh hh ~ ~] [hh hh hh ~] [hh hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ sd sd] ", -).s().slow(2) -`; - -export const Funk13c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ mt mt ~] [~ ~ ~ ~] [~ mt ~ mt] ", - "[~ ~ ~ sd] [sd ~ ~ ~] [~ sd ~ sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk14a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk14b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk14c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", - "[~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", - "[sd ~ ~ sd] [sd ~ ~ ~] [sd ~ sd ~] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Funk15a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ sd ~] [sd ~ sd ~] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Funk1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ac] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ac ac] ", - "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] ", - "[hh ~ ~ hh] [~ ~ hh ~] [~ hh ~ ~] [hh ~ ~ ~] ", - "[~ sd sd ~] [sd sd ~ sd] [sd ~ sd sd] [~ ~ sd sd] ", -).s().slow(2) -`; - -export const Funk2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh hh hh ~] [~ ~ ~ ~] [~ hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ oh] [~ oh ~ oh] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", - "[bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ ~] [~ bd ~ ~] ", - "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [~ hh ~ ~] ", - "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Funk3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Funk3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ac] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ac ~] ", - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ hh] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ sd sd sd] [sd sd sd ~] [~ sd sd sd] [sd ~ sd ~] ", -).s().slow(2) -`; - -export const Funk4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh hh hh hh] [~ ~ hh ~] [hh hh hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh hh hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [ht ht ht ht] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd sd sd sd] [~ ~ ~ ~] [sd sd sd sd] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Funk5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh hh hh ~] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [~ hh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [ht ht ht ht] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Funk6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ac ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", - "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] ", - "[hh hh ~ hh] [~ ~ hh ~] [hh hh ~ hh] [~ ~ hh ~] ", - "[~ ~ sd ~] [sd sd ~ sd] [~ ~ sd ~] [sd sd ~ sd] ", -).s().slow(2) -`; - -export const Funk6b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ac ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", - "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] ", - "[hh hh ~ hh] [~ ~ hh ~] [hh hh ~ hh] [~ ~ hh ~] ", - "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [~ ~ ~ lt] ", - "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Funk6c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ sd sd ~] ", -).s().slow(2) -`; - -export const Funk7a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] ", - "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk7b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ ~] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk7c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [~ ~ ~ ac] ", - "[~ bd ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd ~ ~ sd] [~ ~ ~ ~] [~ sd ~ sd] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Funk8a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", - "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const Funk8b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", - "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd sd] ", -).s().slow(2) -`; - -export const Funk8c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ac ~ ~] [~ ac ~ ~] [ac ~ ac ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ mt ~ ~] [~ mt ~ ~] [~ ~ ~ ~] ", - "[sd ~ sd ~] [sd ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk9a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [hh hh hh ~] [hh hh hh ~] [hh hh hh hh] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk9b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd bd] [~ bd ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", - "[hh ~ hh hh] [hh ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", - "[~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ oh] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Funk9c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ bd] [~ bd ~ ~] [~ bd ~ bd] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ sd sd ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const FunkyDrummer = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ sd] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const FunkyDrummerAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ sd] ", - "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ oh ~ ~] ", -).s().slow(2) -`; - -export const FunkyPresident = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const GenericBossaNova = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[rim ~ ~ rim] [~ ~ rim ~] [~ ~ rim ~] [rim ~ ~ ~] ", - "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", -).s().slow(2) -`; - -export const GenericGahu = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", - "[hh ~ ~ hh] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", -).s().slow(2) -`; - -export const GenericRock = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const GenericRumba = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[rim ~ ~ rim] [~ ~ ~ rim] [~ ~ rim ~] [rim ~ ~ ~] ", - "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", -).s().slow(2) -`; - -export const GenericShiko = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] ", - "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", - "[hh ~ ~ ~] [hh ~ hh ~] [~ ~ hh ~] [hh ~ ~ ~] ", -).s().slow(2) -`; - -export const GenericSon = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[rim ~ ~ rim] [~ ~ rim ~] [~ ~ rim ~] [rim ~ ~ ~] ", - "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", -).s().slow(2) -`; - -export const GenericSoukous = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] ", - "[rim ~ ~ rim] [~ ~ rim ~] [rim ~ ~ rim] [~ ~ rim ~] ", - "[hh ~ ~ hh] [~ ~ hh ~] [~ hh hh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const GetUp = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ sd sd] [~ sd ~ ~] [sd ~ ~ sd] ", - "[hh ~ ~ ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const GhostSnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const GhostSnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const GhostSnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const GhostSnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ sd ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const GoodToGo = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const GrooveMe = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd bd ~ bd] [~ bd ~ bd] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const HaitianDivorce = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] ", - "[~ sd ~ ~] [sd ~ sd sd] [~ sd ~ ~] [sd ~ sd sd] ", - "[hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const HalfDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Haus = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const HipHop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Hiphop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ bd] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const Hiphop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd bd ~ ~] [~ bd ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd bd ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [bd bd bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop5 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Hiphop6 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Hiphop7 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ bd]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Hiphop8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh ~ hh] [hh ~ hh hh] [hh hh ~ hh] [hh ~ hh hh]", -).s().slow(2) -`; - -export const HiphopAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd bd ~ ~] [bd ~ ~ ~] [bd bd ~ ~] ", - "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", -).s().slow(2) -`; - -export const HookAndSling = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ bd ~ ~] [~ bd bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ sd ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd sd ~ sd] [~ ~ sd sd] [~ ~ sd sd] ", - "[hh ~ hh hh] [~ hh ~ ~] [hh hh ~ hh] [~ ~ ~ ~] [hh hh ~ hh] [~ ~ hh ~] [hh hh ~ ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const HotSweat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [sd sd ~ ~] [sd ~ sd sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const House1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", - "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const House1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", - "[~ ~ oh ~] [~ oh ~ ~] [~ ~ oh ~] [~ oh ~ ~]", -).s().slow(2) -`; - -export const HybridKick1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick1d = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick1e = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick1f = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick1g = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ bd ~ bd] [~ bd bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const HybridKick3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const IGotTheFeelin = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] [~ ~ sd ~] [~ sd ~ ~] [sd sd ~ sd] [~ sd sd sd] [~ sd sd sd] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const IGotYou = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const ImpeachThePresident = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Irregular1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd]", -).s().slow(2) -`; - -export const Irregular1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd]", -).s().slow(2) -`; - -export const Irregular2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Irregular2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Irregular3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~]", - "[~ sd ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~]", -).s().slow(2) -`; - -export const ItaloDisco1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ mt ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", - "[~ ~ ~ rim] [rim ~ ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", - "[cb ~ ~ cb] [~ ~ cb ~] [cb ~ ~ ~] [~ ~ ~ ~] ", - "[cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", -).s().slow(2) -`; - -export const ItaloDisco1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ mt ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", - "[~ ~ ~ rim] [rim ~ ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", - "[cb ~ ~ cb] [~ ~ cb ~] [cb ~ cb ~] [cb cb ~ ~] ", - "[cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", -).s().slow(2) -`; - -export const ItsANewDay = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Juke = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[sd ~ sd sd] [~ sd ~ sd] [~ sd sd ~] [sd ~ sd ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Jungle = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", - "[~ ~ sd ~] [~ ~ sd ~] [~ sd ~ ~] [~ sd ~ sd] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ oh] [~ ~ oh ~] [~ ~ ~ oh] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const Jungle1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const Jungle1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ bd bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ sd ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", -).s().slow(2) -`; - -export const JungleAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ ~] [~ bd ~ ~] ", - "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const Kick = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", -).s().slow(2) -`; - -export const KissingMyLove = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const KnocksOffMyFeet = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [bd ~ ~ bd] [bd ~ bd ~] [bd ~ ~ bd] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ hh hh] [~ hh ~ ~] [~ ~ hh ~] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Lady = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ hh ~] [~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const LadyMarmalade = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const LetAWomanBeAWomanLetAManBeAMan = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ bd bd ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd sd ~] [sd sd ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const LookingForThePerfectBeat1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[rim rim rim rim] [rim rim ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", - "[cb ~ cb ~] [~ cb ~ cb] [~ ~ ~ cb] [~ ~ cb ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const LookingForThePerfectBeat1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ sd sd] ", - "[rim rim rim rim] [rim rim ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", - "[cb ~ cb ~] [~ cb ~ cb] [~ ~ ~ cb] [~ ~ cb ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Lookkapypy = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ bd ~ ~] [~ ~ bd ~] [~ bd bd ~] [bd ~ ~ bd] [~ bd ~ bd] [bd ~ bd ~] [~ bd bd ~] ", - "[~ sd ~ ~] [sd ~ ~ sd] [sd ~ sd ~] [~ ~ sd ~] [~ sd ~ ~] [sd sd ~ sd] [sd ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const MiamiBass1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", -).s().slow(2) -`; - -export const MiamiBass2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", -).s().slow(2) -`; - -export const MoreBounceToTheOunce = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~]", - "[~ ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const MotherPopcorn = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", -).s().slow(2) -`; - -export const MusicNonStop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const MusicNonStop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[rim rim rim ~] [~ rim ~ ~] [rim ~ ~ rim] [~ rim rim ~] ", - "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const MusicNonStop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[rim ~ rim ~] [rim rim ~ ~] [rim ~ ~ rim] [~ rim rim rim] ", - "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", - "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", -).s().slow(2) -`; - -export const NewWave = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd bd ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sh ~ ~ ~] [~ ~ ~ ~] [sh ~ ~ ~]", -).s().slow(2) -`; - -export const Nico = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [~ bd bd ~] [~ ~ ~ ~] ", - "[~ ~ rim rim] [~ rim rim rim] [rim ~ ~ rim] [~ rim rim rim] ", - "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", -).s().slow(2) -`; - -export const Numbers1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh hh hh hh] [hh ~ hh hh] ", -).s().slow(2) -`; - -export const Numbers1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh hh] [hh hh ~ hh] [hh hh hh hh] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const OneDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const OneSevenFiveThirteen = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~]", -).s().slow(2) -`; - -export const OohChild = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", - "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ ~] [sd ~ sd ~] ", - "[hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const PalmGrease = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] ", - "[hh hh hh hh] [~ hh hh ~] [hh ~ hh hh] [~ hh hh ~] [hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const PapaWasToo = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh hh] ", - "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Pattern00 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern01 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern02 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern03 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern04 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern05 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern06 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern07 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern08 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern09 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern12 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern13 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern14 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern15 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern16 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern17 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern18 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern19 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern20 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern21 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern22 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern23 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern24 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern25 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern26 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern27 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern28 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern29 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern30 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern31 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern32 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern33 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern34 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern35 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern36 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern37 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern38 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern39 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern40 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern41 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern42 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern43 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern44 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern45 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern46 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern47 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern48 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern49 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern50 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern51 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern52 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern53 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern54 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern55 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern56 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern57 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern58 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern59 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern60 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern61 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern62 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const Pattern63 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", - "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", - "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", -).s().slow(2) -`; - -export const PlanetRock = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", - "[cb ~ cb ~] [cb ~ cb cb] [~ cb ~ cb] [cb ~ cb ~]", - "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~]", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh hh hh hh]", -).s().slow(2) -`; - -export const Poly1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ sd ~] [sd ~ ~ [sd sd]] [sd ~ sd sd] [sd ~ sd sd]", -).s().slow(2) -`; - -export const Poly1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ sd ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Pop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ lt ~] [lt ~ lt ~] [lt ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ sd ~] [sd ~ sd ~] [sd ~ sd sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] ", -).s().slow(2) -`; - -export const Pop2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ac] [~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] ", - "[bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] ", - "[~ ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Pop3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [bd ~ bd bd] [~ bd ~ ~] [bd ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd bd] [~ bd ~ ~] [bd ~ bd bd] [~ bd ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] [sd ~ sd sd] ", -).s().slow(2) -`; - -export const Pop5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ bd ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh hh ~ ~] ", - "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Pop5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", - "[~ sd sd sd] [sd ~ sd sd] [sd sd sd ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Poptech2010 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd bd bd] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] ", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const RNB1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const RNB1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ lt ~] [~ ~ ~ ~] ", - "[~ ~ mt ~] [~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] ", - "[sd sd ~ sd] [~ sd sd sd] [~ sd ~ sd] [sd sd sd sd] ", -).s().slow(2) -`; - -export const RNB2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ bd ~ bd] [~ ~ bd bd] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ bd] [~ bd bd ~] [~ bd ~ bd] [~ bd bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const RNB3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd bd] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] ", - "[hh ~ ~ hh] [hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", - "[~ ~ ~ ~] [~ lt ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ sd ~] [~ ~ ~ ~] [sd ~ sd sd] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const RNB4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const RNB4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] ", -).s().slow(2) -`; - -export const RNB4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ hh] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [mt ~ mt mt] ", - "[~ sd sd ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd bd ~ bd] [bd ~ bd ~] [bd bd ~ bd] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ sd] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const RNB5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd bd] [~ ~ ~ bd] [bd ~ bd bd] [~ bd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const RNB5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt mt mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ sd sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [rim ~ ~ rim] [~ rim ~ ~] [rim ~ ~ rim] ", -).s().slow(2) -`; - -export const Reggae1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ rim rim] [~ ~ rim ~] [~ ~ rim rim] [~ ~ rim ~] ", -).s().slow(2) -`; - -export const Reggae1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ sd ~] [sd ~ sd ~] [~ ~ ~ ~] [sd sd ~ ~] ", -).s().slow(2) -`; - -export const Reggae2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [lt ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh hh] [hh hh hh ~] [~ ~ hh ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh hh] [~ hh hh ~] [~ ~ hh ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [lt ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[sd ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ bd] [~ ~ ~ ~] [~ bd ~ ~] ", - "[~ ~ ~ hh] [~ ~ ~ ~] [~ hh ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] ", - "[~ ~ ~ oh] [~ ~ ~ ~] [~ oh ~ ~] ", - "[rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", - "[sd sd sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggae5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ rim ~] [~ ~ rim ~] [~ ~ rim ~] [~ ~ rim rim] ", -).s().slow(2) -`; - -export const Reggae5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] ", - "[~ ~ oh oh] [~ ~ oh oh] [~ ~ oh oh] [~ ~ oh oh] ", - "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ rim] ", -).s().slow(2) -`; - -export const Reggae5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ lt ~ lt] [~ ~ ~ ~] ", - "[~ ~ ~ mt] [~ mt mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Reggaeton = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ sd] [~ ~ sd ~] [~ ~ ~ sd] [~ ~ sd ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const RespectYourself = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const Rock1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ bd ~] [~ ~ bd ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ht] [ht ~ ~ ht] [ht ~ ~ ht] [~ ~ ~ ~] ", - "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Rock2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ac ~] [ac ~ ac ~] [ac ~ ac ~] [ac ~ ac ~] ", - "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", - "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh hh hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", -).s().slow(2) -`; - -export const Rock2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ bd ~ ~] [bd ~ bd ~] [bd ~ bd ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cy ~ cy ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", - "[~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ac] [ac ~ ~ ac] [ac ~ ~ ac] [ac ~ ~ ac] ", - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[sd sd sd sd] [sd sd sd sd] [sd sd sd sd] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Rock5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Rock5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ac ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ sd ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const RockSteady = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] ", - "[~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] ", - "[~ hh ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh hh] ", - "[~ ~ oh ~] [~ ~ ~ oh] [~ ~ oh ~] [~ ~ ~ oh] [~ oh ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const RockThePlanet = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[hh ~ hh hh] [hh ~ hh hh] [hh hh ~ hh] [hh hh hh hh]", -).s().slow(2) -`; - -export const RollinBreak = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Rolling1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ bd bd ~] [~ bd bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~]", -).s().slow(2) -`; - -export const Rolling4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling7a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling7b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling7c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling7d = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling9a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Rolling9b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const Sally = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[lt ~ ~ ~] [~ ~ lt ~] [~ ~ lt ~] [~ ~ lt ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Samba1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", - "[~ hh hh ~] [~ hh hh ~] [~ hh hh ~] [~ hh hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [~ ~ ~ lt] ", - "[~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Samba1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[cb ~ cb ~] [cb cb ~ cb] [~ cb cb ~] [cb cb ~ cb] ", - "[~ hh ~ hh] [~ ~ hh ~] [hh ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ mt] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Samba1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [lt ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", - "[sd ~ sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const Samba2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", - "[~ ~ rim ~] [~ rim ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Samba2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", - "[~ ~ ~ ~] [~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ rim ~ ~] [~ rim ~ ~] [~ rim ~ ~] [~ rim ~ ~] ", - "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Samba2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ lt ~] [~ ~ ~ ~] ", - "[mt ~ ~ mt] [~ ~ mt ~] [~ mt ~ ~] [mt ~ ~ mt] ", - "[~ sd sd ~] [~ ~ ~ sd] [sd ~ ~ ~] [~ sd sd ~] ", -).s().slow(2) -`; - -export const Samba3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Samba3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ~] ", - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[~ hh ~ hh] [~ ~ hh ~] [hh ~ ~ hh] [~ ~ hh ~] ", - "[sd ~ sd ~] [sd sd ~ sd] [~ sd sd ~] [sd sd ~ sd] ", -).s().slow(2) -`; - -export const Samba3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", - "[hh hh ~ ~] [~ ~ hh hh] [~ ~ hh ~] [hh ~ ~ ~] ", - "[~ ~ ht ~] [ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] [~ ~ lt ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", - "[~ ~ sd ~] [sd ~ ~ ~] [sd ~ ~ sd] [~ ~ sd ~] ", -).s().slow(2) -`; - -export const Shuffle1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd bd ~ bd] [bd ~ bd bd] ", - "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ sd] [~ ~ sd ~] [~ sd ~ ~] ", -).s().slow(2) -`; - -export const Shuffle2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ bd] ", - "[hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ sd sd ~] [sd sd sd sd] [~ sd sd ~] ", -).s().slow(2) -`; - -export const SiberianNights = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", -).s().slow(2) -`; - -export const Ska1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ska1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] [~ ~ ~ ~] ", - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Ska1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[sd ~ sd sd] [~ ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const SlowDeepHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[sh sh sh sh] [sh sh sh sh] [sh sh sh sh] [sh sh sh sh]", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~]", - "[~ ~ oh oh] [~ ~ oh oh] [~ oh oh ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const Steppers = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Strbtsdcgogo100 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ hh hh ~] [hh hh ~ hh] [~ ~ ~ ~] [~ hh hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const Supersonic1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", -).s().slow(2) -`; - -export const Supersonic1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", -).s().slow(2) -`; - -export const Supersonic2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[cb ~ cb cb] [cb ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Supersonic2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] ", - "[cb ~ cb cb] [cb ~ cb ~] [cb ~ ~ ~] [~ ~ ~ ~] ", - "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", -).s().slow(2) -`; - -export const Superstition = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh hh] [hh hh hh ~] [hh ~ hh hh] ", -).s().slow(2) -`; - -export const Swing1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ sd sd] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Swing2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd bd ~] [bd bd bd ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", - "[~ ~ ~ sd] [~ ~ ~ sd] [~ sd sd ~] ", -).s().slow(2) -`; - -export const Swing3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", - "[cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ ~] ", - "[~ ~ ~ ~] [mt mt ~ ~] [~ ~ mt mt] ", - "[oh ~ ~ oh] [~ ~ oh ~] [~ oh ~ ~] ", - "[~ sd sd ~] [~ ~ ~ sd] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const SynthWave = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", -).s().slow(2) -`; - -export const SynthethicSubstitution = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ bd] [~ bd bd bd] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd] [~ bd bd bd] [~ ~ ~ bd] ", - "[~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const TakeMeToMardiGras = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[cp ~ cp ~] [~ cp ~ ~] [~ cp ~ ~] [cp ~ ~ ~] ", - "[~ ~ ~ ~] [cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ cy] ", -).s().slow(2) -`; - -export const TakeMeToMardiGrasAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", - "[cp ~ cp ~] [~ cp ~ ~] [~ cp ~ ~] [cp ~ ~ ~] ", - "[~ ~ ~ ~] [cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ cy] ", -).s().slow(2) -`; - -export const Techno = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] [~ ~ ~ ~] ", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", -).s().slow(2) -`; - -export const TheFez = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [bd ~ ~ ~] ", - "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", - "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", -).s().slow(2) -`; - -export const TheSameBlood = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ sd] [~ sd sd ~] [~ ~ ~ ~] [sd sd sd ~] ", - "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", -).s().slow(2) -`; - -export const TheTrillsGone = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", - "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", - "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", -).s().slow(2) -`; - -export const TinyHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const TransEuroExpress = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ ~ hh] [hh ~ hh hh] [hh ~ ~ hh] ", -).s().slow(2) -`; - -export const Trap1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const Trap1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~]", - "[[hh hh hh] ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [[hh hh hh] ~ hh ~]", -).s().slow(2) -`; - -export const Twist1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Twist1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Twist1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const Twist2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Twist2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", -).s().slow(2) -`; - -export const Twist2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd sd sd sd] ", -).s().slow(2) -`; - -export const TwoDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", -).s().slow(2) -`; - -export const UkGarage1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", - "[~ ~ hh hh] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh hh]", - "[~ rim ~ ~] [~ ~ ~ rim] [~ ~ ~ ~] [~ rim ~ ~]", - "[~ ~ ~ ~] [~ mt ~ ~] [~ ~ ~ mt] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const UkGarage1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", - "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~]", - "[~ rim ~ ~] [~ ~ ~ rim] [~ ~ ~ ~] [~ rim ~ ~]", - "[~ ~ ~ ~] [~ mt ~ ~] [~ ~ ~ mt] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~]", -).s().slow(2) -`; - -export const UnconventionalSnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", -).s().slow(2) -`; - -export const UnconventionalSnare4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[sd ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", -).s().slow(2) -`; - -export const UnknownDrummer = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", - "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", - "[~ hh hh ~] [hh hh ~ hh] [~ ~ ~ ~] [~ hh ~ ~]", - "[~ ~ ~ ~] [~ ~ ~ ~] [oh ~ ~ ~] [~ ~ oh ~]", -).s().slow(2) -`; - -export const UseMe = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ bd ~ bd] [bd ~ bd bd] [~ bd ~ bd] [bd ~ bd ~] [~ bd ~ ~] [bd bd ~ bd] [~ bd ~ bd] ", - "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ sd] ", - "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh ~ ~ ~] [~ ~ ~ hh] ", - "[~ ~ ~ ~] [~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ ~] ", -).s().slow(2) -`; - -export const UseMeAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] ", - "[~ ~ sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] ", - "[hh ~ ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] ", - "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const WalkThisWay = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[~ ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", - "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", -).s().slow(2) -`; - -export const WeWillRockYou = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", -).s().slow(2) -`; - -export const WhenTheLeveeBreaks = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd bd] [~ ~ ~ ~] ", - "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", - "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", -).s().slow(2) -`; - -export const YaMama = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns -// (licensed under GPL-3.0 license) -// using the R script from this repository: https://github.com/urswilke/read_beats -stack( - "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~]", - "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~]", -).s().slow(2) -`; From 05b63533551d68fb5bc3096140dbd28f2c8cfa8c Mon Sep 17 00:00:00 2001 From: urswilke Date: Mon, 16 Jan 2023 23:11:17 +0100 Subject: [PATCH 04/52] move drum patterns in a new file --- website/src/repl/drum_patterns.mjs | 5140 ++++++++++++++++++++++++++++ 1 file changed, 5140 insertions(+) create mode 100644 website/src/repl/drum_patterns.mjs diff --git a/website/src/repl/drum_patterns.mjs b/website/src/repl/drum_patterns.mjs new file mode 100644 index 000000000..1db301391 --- /dev/null +++ b/website/src/repl/drum_patterns.mjs @@ -0,0 +1,5140 @@ +export const Afro1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ rim ~] [~ ~ rim ~] ", +).s().slow(2) +`; + +export const Afro1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt mt mt ~] [~ ~ ~ ~] ", + "[~ sd sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [mt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ lt ~] [lt ~ lt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ rim] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] [bd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [~ ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ mt mt] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ mt mt] ", + "[~ sd ~ ~] [~ sd ~ sd] [~ ~ ~ sd] [~ sd ~ ~] ", +).s().slow(2) +`; + +export const Afro4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [ht ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] [~ ~ ~ ~] ", + "[sd ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[sd ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro6b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ rim] [~ ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Afro6c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[cy ~ cy cy] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ageispolis = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Amen = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const AmenBrother = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const AshleysRoachClip = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ bd bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", + "[lt ~ lt ~] [lt ~ lt ~] [lt ~ lt ~] [lt ~ lt ~] ", + "[~ ht ~ ht] [~ ht ~ ht] [~ ht ~ ht] [~ ht ~ ht] ", +).s().slow(2) +`; + +export const Autobahn1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~] ", + "[cp ~ cp ~] [cp ~ cp cp] [~ cp ~ cp] [cp ~ cp ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const Autobahn1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~] ", + "[cp ~ cp ~] [cp ~ cp cp] [~ cp ~ cp] [cp ~ cp ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const Ballad1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ sd sd] [sd ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ oh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Ballad3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ ~] [bd bd ~ ~] [bd bd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] ", + "[~ ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Ballad4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ hh ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ mt mt ~] [~ ~ ~ ~] [~ ~ mt ~] [mt mt ~ ~] ", + "[~ ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ballad5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const BigBeat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", +).s().slow(2) +`; + +export const BillyJean = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const BlueMonday1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const BlueMonday2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[hh ~ ~ hh] [hh ~ ~ hh] [hh ~ ~ hh] [hh ~ ~ hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const Blues1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd bd bd] [bd bd bd bd] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh ~ ~ ~] ", + "[sd sd sd sd] [sd sd sd sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Blues2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ hh ~ ~] ", + "[~ sd sd ~] [sd sd ~ sd] [sd ~ sd sd] ", +).s().slow(2) +`; + +export const BookOfMoses = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", +).s().slow(2) +`; + +export const BootsNCats = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Bossa1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[rim ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", + "[~ ~ rim ~] [~ rim ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bossa2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] [cy ~ cy ~] ", + "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", +).s().slow(2) +`; + +export const Bossa2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [lt ~ ~ ~] ", + "[~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Bouton = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~]", + "[~ ~ ~ rim] [~ ~ rim ~] [~ ~ ~ ~] [rim ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Break1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh hh hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Break2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [~ ~ hh ~]", +).s().slow(2) +`; + +export const Breakbeat1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Breakbeat2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Breakbeat3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const BritHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh]", + "[~ ~ cy ~] [~ ~ cy ~] [~ ~ cy ~] [~ ~ cy ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const ChaChaCha1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ht ~] [~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", +).s().slow(2) +`; + +export const ChaChaCha1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ht ht] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] [~ ~ lt ~] ", +).s().slow(2) +`; + +export const ChaChaCha1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ht ~] [~ ~ ~ ~] [ht ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [lt ~ lt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ChugChugChugaLug = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ bd] [~ bd ~ bd] [~ ~ bd ~] ", + "[~ sd sd ~] [sd ~ ~ sd] [~ sd sd ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [hh hh hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const CissyStrutLong = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ ~] [~ bd ~ bd] [bd ~ bd ~] [bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [bd ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ sd sd ~] [sd sd ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const CissyStrutShort = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ ~] [bd bd ~ bd] [~ bd ~ ~] ", + "[sd sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd ~] ", + "[hh hh hh ~] [hh ~ hh hh] [~ hh hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const ColdSweat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ColdSweatOpening = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const ComeDancing = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ bd] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ sd sd ~] [sd sd sd ~] [~ sd sd ~] [sd sd sd ~] [~ sd ~ ~] [sd sd ~ ~] [~ sd ~ ~] [sd sd sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const ContemporaryKick1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const ContemporaryKick1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const ContemporaryKick3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporaryKick4 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ContemporarySnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const ContemporarySnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] [~ sd ~ ~]", +).s().slow(2) +`; + +export const ContemporarySnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const ContemporarySnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const ContemporarySnare3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ sd ~ sd]", +).s().slow(2) +`; + +export const ContemporarySnare3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const CowdBell = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd bd] [~ ~ bd bd] [~ bd ~ bd] ", + "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[cb ~ cb cb] [cb ~ cb cb] [cb ~ cb cb] [cb ~ cb cb] ", +).s().slow(2) +`; + +export const DasModel1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const DasModel1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const DeepHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ hh ~ ~] [~ ~ ~ hh] [~ hh ~ ~] [~ ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const DeeperHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ cp ~ ~] [~ ~ ~ ~] [~ cp ~ ~] [~ ~ ~ ~]", + "[~ ~ mt ~] [~ ~ ~ mt] [~ ~ mt ~] [~ ~ ~ ~]", + "[~ ~ ~ sh] [~ ~ ~ ~] [sh ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh oh] [~ ~ oh ~]", +).s().slow(2) +`; + +export const DirtyHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ ~ cp ~] [cp ~ ~ ~] [cp ~ cp ~] [cp ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ hh]", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const Disco1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ hh] [hh hh ~ hh] [hh ~ hh hh] [hh hh ~ hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ oh ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd sd ~ sd] [~ sd sd sd] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Disco2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[hh ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [sd ~ sd ~] [sd ~ sd ~] [sd sd sd ~] ", +).s().slow(2) +`; + +export const Disco3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cb ~ cb cb] ", + "[hh hh hh hh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ sd sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ bd] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [~ hh ~ ~] [~ hh ~ ~] [~ hh ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", + "[~ ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const Disco5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [~ hh ~ hh] [hh hh ~ ~] [~ hh ~ hh] ", + "[~ ~ oh oh] [~ ~ oh ~] [~ ~ oh oh] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh hh] [hh hh hh hh] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Disco5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] ", + "[~ ~ oh oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Dnb1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Dnb1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [bd bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Dnb2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", +).s().slow(2) +`; + +export const Dnb3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[~ ~ ~ ~] [~ ~ oh oh] [oh oh ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Dnb4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Dnb4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Drumroll1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [ht ht ht ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ mt] [mt mt ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ht ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ht ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [~ ~ lt lt] ", + "[sd ~ ~ sd] [~ ~ sd ~] [~ sd ~ ~] [sd ~ ~ ~] ", + "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ht ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ mt ~] [mt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] [~ lt lt ~] ", + "[sd sd ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ cy ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll12 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ht ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ mt ~ ~] [~ mt ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ lt ~ ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] ", +).s().slow(2) +`; + +export const Drumroll13 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ht ht ht] [ht ~ ~ ~] ", + "[~ ~ ~ mt] [mt mt mt mt] [mt ~ ~ ~] [~ mt mt ~] ", + "[lt lt lt ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", +).s().slow(2) +`; + +export const Drumroll14 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ht ~ ~] [~ ~ ~ ~] [~ ht ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ lt] [~ ~ ~ lt] [~ ~ ~ lt] [~ ~ ~ lt] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll15 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[sd sd ~ ~] [~ ~ sd sd] [~ ~ ~ ~] [sd sd ~ ~] ", + "[~ ~ hh ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll16 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ ~] [sd ~ sd sd] [~ ~ sd ~] [sd sd sd sd] ", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll17 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] [cy ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll18 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[sd sd ~ ~] [~ ~ sd sd] [~ ~ ~ ~] [sd sd ~ ~] ", + "[~ ~ cy ~] [cy ~ ~ ~] [cy ~ cy ~] [~ ~ cy ~] ", +).s().slow(2) +`; + +export const Drumroll19 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ mt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ bd ~ bd] [~ bd ~ bd] [~ bd ~ bd] [bd ~ ~ ~] ", + "[sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] [~ sd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] ", + "[sd ~ sd sd] [sd ~ sd sd] [~ sd sd sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[sd sd sd ~] [sd sd sd ~] [sd ~ sd ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Drumroll4 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ sd] [sd ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ sd] ", + "[cy ~ ~ ~] [~ ~ cy ~] [~ ~ ~ ~] [cy ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll5 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", +).s().slow(2) +`; + +export const Drumroll6 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ mt] [~ ~ mt mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ lt ~ ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll7 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [mt ~ mt mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[sd ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt ~ lt ~] ", + "[sd sd ~ ~] [~ ~ sd ~] [sd sd ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Drumroll9 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ht ht] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [~ ~ mt mt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[sd sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Dubstep1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", + "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] [~ oh ~ ~]", +).s().slow(2) +`; + +export const Dubstep1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", + "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] [~ oh ~ ~]", +).s().slow(2) +`; + +export const DubstepRatcheted = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ [~ sd] [sd sd] ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd]", + "[~ hh hh ~] [~ ~ hh ~] [~ ~ ~ hh] [~ ~ hh ~]", + "[~ ~ [oh oh] [oh oh]] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Electro1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Electro3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const End1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const End1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ExpensiveShit = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[sd sd ~ sd] [~ sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ ~] [sd sd ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ExpressYourself = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [~ sd ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh ~ hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Footwork1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ ~]", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim]", +).s().slow(2) +`; + +export const Footwork2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh ~] [~ ~ ~ hh] [hh ~ hh ~] [~ ~ hh ~]", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim]", +).s().slow(2) +`; + +export const FourOnTheFloor = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const FrenchHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[sh sh sh ~] [sh ~ sh sh] [sh sh sh sh] [sh ~ sh sh]", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~]", +).s().slow(2) +`; + +export const Funk10a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [~ hh hh hh] [hh hh hh hh] [~ hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk10b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [~ hh hh hh] [hh hh hh hh] [~ hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk10c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ac ~ ~] [~ ac ~ ~] [~ ~ ac ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ bd ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ hh ~ ~] [~ ~ hh ~] [~ ~ ~ ~] ", + "[sd sd ~ sd] [sd ~ ~ sd] [sd ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Funk11a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk11b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd bd ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk11c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ac] ", + "[~ ~ ~ ~] [~ ht ht ~] [~ ~ ~ ht] [~ ~ ~ ~] ", + "[lt ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [lt ~ ~ ~] ", + "[~ ~ sd sd] [sd ~ ~ ~] [sd sd sd ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Funk12a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [~ ~ ~ bd] ", + "[hh hh hh ~] [~ hh hh ~] [hh ~ hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ oh ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk12b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk12c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] ", + "[oh ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ sd ~ sd] [sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk13a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[hh hh hh ~] [hh hh ~ ~] [hh hh hh ~] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", +).s().slow(2) +`; + +export const Funk13b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[hh hh hh ~] [hh hh ~ ~] [hh hh hh ~] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ sd sd] ", +).s().slow(2) +`; + +export const Funk13c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ mt mt ~] [~ ~ ~ ~] [~ mt ~ mt] ", + "[~ ~ ~ sd] [sd ~ ~ ~] [~ sd ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk14a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk14b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk14c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[sd ~ ~ sd] [sd ~ ~ ~] [sd ~ sd ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk15a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ sd ~] [sd ~ sd ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ac] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ac ac] ", + "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ hh ~ ~] [hh ~ ~ ~] ", + "[~ sd sd ~] [sd sd ~ sd] [sd ~ sd sd] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Funk2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ oh ~ oh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Funk3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Funk3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ac] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ac ~] ", + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ hh] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ sd sd sd] [sd sd sd ~] [~ sd sd sd] [sd ~ sd ~] ", +).s().slow(2) +`; + +export const Funk4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh hh] [~ ~ hh ~] [hh hh hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [ht ht ht ht] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd sd sd] [~ ~ ~ ~] [sd sd sd sd] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh hh hh ~] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [~ hh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [ht ht ht ht] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Funk6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ac ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] ", + "[hh hh ~ hh] [~ ~ hh ~] [hh hh ~ hh] [~ ~ hh ~] ", + "[~ ~ sd ~] [sd sd ~ sd] [~ ~ sd ~] [sd sd ~ sd] ", +).s().slow(2) +`; + +export const Funk6b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ac ~ ~] [~ ~ ~ ~] [ac ac ~ ~] ", + "[bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] ", + "[hh hh ~ hh] [~ ~ hh ~] [hh hh ~ hh] [~ ~ hh ~] ", + "[~ ~ ht ~] [~ ~ ~ ~] [~ ~ ht ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Funk6c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ sd sd ~] ", +).s().slow(2) +`; + +export const Funk7a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk7b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh hh hh ~] [~ hh hh ~] [hh hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ ~] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk7c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [~ ~ ~ ac] ", + "[~ bd ~ ~] [bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ ~ sd] [~ ~ ~ ~] [~ sd ~ sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Funk8a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const Funk8b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd sd] ", +).s().slow(2) +`; + +export const Funk8c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ac ~ ~] [~ ac ~ ~] [ac ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ mt ~ ~] [~ mt ~ ~] [~ ~ ~ ~] ", + "[sd ~ sd ~] [sd ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk9a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [hh hh hh ~] [hh hh hh ~] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk9b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ bd ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", + "[hh ~ hh hh] [hh ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ oh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Funk9c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ bd] [~ bd ~ ~] [~ bd ~ bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ sd sd ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const FunkyDrummer = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ sd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const FunkyDrummerAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ sd] ", + "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ oh ~ ~] ", +).s().slow(2) +`; + +export const FunkyPresident = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [oh ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const GenericBossaNova = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[rim ~ ~ rim] [~ ~ rim ~] [~ ~ rim ~] [rim ~ ~ ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const GenericGahu = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", +).s().slow(2) +`; + +export const GenericRock = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const GenericRumba = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[rim ~ ~ rim] [~ ~ ~ rim] [~ ~ rim ~] [rim ~ ~ ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const GenericShiko = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ bd ~] [bd ~ ~ ~] [bd ~ bd ~] ", + "[~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] [~ ~ rim rim] ", + "[hh ~ ~ ~] [hh ~ hh ~] [~ ~ hh ~] [hh ~ ~ ~] ", +).s().slow(2) +`; + +export const GenericSon = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[rim ~ ~ rim] [~ ~ rim ~] [~ ~ rim ~] [rim ~ ~ ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const GenericSoukous = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] ", + "[rim ~ ~ rim] [~ ~ rim ~] [rim ~ ~ rim] [~ ~ rim ~] ", + "[hh ~ ~ hh] [~ ~ hh ~] [~ hh hh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const GetUp = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ sd ~ ~] [sd ~ ~ sd] ", + "[hh ~ ~ ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const GhostSnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const GhostSnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const GhostSnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const GhostSnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ sd ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const GoodToGo = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const GrooveMe = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd bd ~ bd] [~ bd ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const HaitianDivorce = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] ", + "[~ sd ~ ~] [sd ~ sd sd] [~ sd ~ ~] [sd ~ sd sd] ", + "[hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const HalfDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Haus = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const HipHop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Hiphop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const Hiphop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd bd ~ ~] [~ bd ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd bd ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [bd bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop5 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Hiphop6 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Hiphop7 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ bd ~ bd]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Hiphop8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh ~ hh] [hh ~ hh hh] [hh hh ~ hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const HiphopAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ ~] [bd ~ ~ ~] [bd bd ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] [~ ~ ~ oh] ", +).s().slow(2) +`; + +export const HookAndSling = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ bd ~ ~] [~ bd bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ sd ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd sd ~ sd] [~ ~ sd sd] [~ ~ sd sd] ", + "[hh ~ hh hh] [~ hh ~ ~] [hh hh ~ hh] [~ ~ ~ ~] [hh hh ~ hh] [~ ~ hh ~] [hh hh ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const HotSweat = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [sd sd ~ ~] [sd ~ sd sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const House1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[cy ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const House1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[~ ~ oh ~] [~ oh ~ ~] [~ ~ oh ~] [~ oh ~ ~]", +).s().slow(2) +`; + +export const HybridKick1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1d = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1e = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1f = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick1g = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd ~ bd] [~ bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const HybridKick3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const IGotTheFeelin = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] [~ ~ sd ~] [~ sd ~ ~] [sd sd ~ sd] [~ sd sd sd] [~ sd sd sd] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const IGotYou = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const ImpeachThePresident = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Irregular1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd]", +).s().slow(2) +`; + +export const Irregular1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd]", +).s().slow(2) +`; + +export const Irregular2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Irregular2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Irregular3 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~]", + "[~ sd ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~]", +).s().slow(2) +`; + +export const ItaloDisco1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ mt ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ rim] [rim ~ ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ ~ cb] [~ ~ cb ~] [cb ~ ~ ~] [~ ~ ~ ~] ", + "[cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const ItaloDisco1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ mt ~ ~] [~ ~ mt ~] [~ ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ rim] [rim ~ ~ ~] [rim ~ ~ rim] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ ~ cb] [~ ~ cb ~] [cb ~ cb ~] [cb cb ~ ~] ", + "[cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] [cy ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[oh oh oh oh] [oh oh oh oh] [oh oh oh oh] [oh oh oh oh] ", +).s().slow(2) +`; + +export const ItsANewDay = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd bd] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Juke = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[sd ~ sd sd] [~ sd ~ sd] [~ sd sd ~] [sd ~ sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Jungle = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ sd ~ ~] [~ sd ~ sd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ oh] [~ ~ oh ~] [~ ~ ~ oh] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const Jungle1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Jungle1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ bd bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ sd ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh hh]", +).s().slow(2) +`; + +export const JungleAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd ~ ~] [bd ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const Kick = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", +).s().slow(2) +`; + +export const KissingMyLove = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const KnocksOffMyFeet = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [bd ~ ~ bd] [bd ~ bd ~] [bd ~ ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ hh hh] [~ hh ~ ~] [~ ~ hh ~] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Lady = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const LadyMarmalade = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const LetAWomanBeAWomanLetAManBeAMan = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ bd bd ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd sd ~] [sd sd ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ sd] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const LookingForThePerfectBeat1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim rim rim rim] [rim rim ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ cb ~] [~ cb ~ cb] [~ ~ ~ cb] [~ ~ cb ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const LookingForThePerfectBeat1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ sd sd] ", + "[rim rim rim rim] [rim rim ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", + "[cb ~ cb ~] [~ cb ~ cb] [~ ~ ~ cb] [~ ~ cb ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Lookkapypy = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ bd ~ ~] [~ ~ bd ~] [~ bd bd ~] [bd ~ ~ bd] [~ bd ~ bd] [bd ~ bd ~] [~ bd bd ~] ", + "[~ sd ~ ~] [sd ~ ~ sd] [sd ~ sd ~] [~ ~ sd ~] [~ sd ~ ~] [sd sd ~ sd] [sd ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const MiamiBass1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const MiamiBass2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const MoreBounceToTheOunce = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~]", + "[~ ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const MotherPopcorn = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", +).s().slow(2) +`; + +export const MusicNonStop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const MusicNonStop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim rim rim ~] [~ rim ~ ~] [rim ~ ~ rim] [~ rim rim ~] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const MusicNonStop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ bd bd] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[rim ~ rim ~] [rim rim ~ ~] [rim ~ ~ rim] [~ rim rim rim] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", + "[oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] [oh ~ oh ~] ", +).s().slow(2) +`; + +export const NewWave = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sh ~ ~ ~] [~ ~ ~ ~] [sh ~ ~ ~]", +).s().slow(2) +`; + +export const Nico = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [~ bd bd ~] [~ ~ ~ ~] ", + "[~ ~ rim rim] [~ rim rim rim] [rim ~ ~ rim] [~ rim rim rim] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", +).s().slow(2) +`; + +export const Numbers1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh hh hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Numbers1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh hh ~ hh] [hh hh hh hh] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const OneDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const OneSevenFiveThirteen = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const OohChild = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ ~] [sd ~ sd ~] ", + "[hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const PalmGrease = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] ", + "[hh hh hh hh] [~ hh hh ~] [hh ~ hh hh] [~ hh hh ~] [hh ~ hh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const PapaWasToo = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh hh] ", + "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pattern00 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern01 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern02 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern03 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern04 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern05 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern06 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern07 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern08 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern09 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern12 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern13 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern14 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern15 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern16 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern17 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern18 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern19 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern20 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern21 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern22 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern23 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern24 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern25 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern26 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern27 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern28 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern29 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern30 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern31 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern32 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern33 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern34 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern35 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern36 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern37 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern38 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern39 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern40 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern41 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern42 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern43 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern44 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern45 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern46 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern47 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern48 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern49 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern50 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern51 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern52 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern53 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern54 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern55 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern56 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern57 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern58 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern59 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern60 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern61 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern62 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const Pattern63 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] [bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd bd] ", + "[~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~] ", + "[hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] [hh ~ hh hh] [~ hh hh ~] [hh hh ~ hh] ", +).s().slow(2) +`; + +export const PlanetRock = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[cb ~ cb ~] [cb ~ cb cb] [~ cb ~ cb] [cb ~ cb ~]", + "[rim ~ rim ~] [rim ~ rim rim] [~ rim ~ rim] [rim ~ rim ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh hh hh hh]", +).s().slow(2) +`; + +export const Poly1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ sd ~] [sd ~ ~ [sd sd]] [sd ~ sd sd] [sd ~ sd sd]", +).s().slow(2) +`; + +export const Poly1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ sd ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Pop1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ lt ~] [lt ~ lt ~] [lt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd ~] [sd ~ sd ~] [sd ~ sd sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] [~ sd ~ ~] ", +).s().slow(2) +`; + +export const Pop2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ac] [~ ~ ~ ~] [~ ac ~ ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Pop3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ bd bd] [~ bd ~ ~] [bd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ bd ~ ~] [bd ~ bd bd] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] [sd ~ sd sd] ", +).s().slow(2) +`; + +export const Pop5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ sd] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ac ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ bd ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh hh ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Pop5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] [oh ~ ~ ~] ", + "[~ sd sd sd] [sd ~ sd sd] [sd sd sd ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Poptech2010 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ bd bd bd] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] [~ ~ ~ ~] ", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ lt ~] [~ ~ ~ ~] ", + "[~ ~ mt ~] [~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ sd] [~ sd sd sd] [~ sd ~ sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const RNB2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ bd] [~ ~ bd bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ bd] [~ bd bd ~] [~ bd ~ bd] [~ bd bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd bd] [~ ~ bd bd] [~ ~ bd bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt mt ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const RNB3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ bd ~ bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [sd ~ sd sd] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ bd] ", + "[hh ~ ~ hh] [hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ht ht ~ ~] ", + "[~ ~ ~ ~] [~ lt ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd ~] [~ ~ ~ ~] [sd ~ sd sd] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const RNB4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd bd] [~ ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] [hh hh ~ hh] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ sd] ", +).s().slow(2) +`; + +export const RNB4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ bd ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ hh] [~ ~ ~ ~] [~ ~ hh ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [mt ~ mt mt] ", + "[~ sd sd ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ bd] [bd ~ bd ~] [bd bd ~ bd] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ sd] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const RNB5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd bd] [~ ~ ~ bd] [bd ~ bd bd] [~ bd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RNB5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt mt mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ sd sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [rim ~ ~ rim] [~ rim ~ ~] [rim ~ ~ rim] ", +).s().slow(2) +`; + +export const Reggae1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ rim rim] [~ ~ rim ~] [~ ~ rim rim] [~ ~ rim ~] ", +).s().slow(2) +`; + +export const Reggae1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ sd ~] [sd ~ sd ~] [~ ~ ~ ~] [sd sd ~ ~] ", +).s().slow(2) +`; + +export const Reggae2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ hh hh] [~ ~ hh hh] [~ ~ hh hh] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [hh hh hh ~] [~ ~ hh ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [~ hh hh ~] [~ ~ hh ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt ~] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[sd ~ sd ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ bd] [~ ~ ~ ~] [~ bd ~ ~] ", + "[~ ~ ~ hh] [~ ~ ~ ~] [~ hh ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] ", + "[~ ~ ~ oh] [~ ~ ~ ~] [~ oh ~ ~] ", + "[rim ~ ~ ~] [~ ~ rim ~] [~ ~ ~ ~] ", + "[sd sd sd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggae5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ rim ~] [~ ~ rim ~] [~ ~ rim ~] [~ ~ rim rim] ", +).s().slow(2) +`; + +export const Reggae5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] [hh hh ~ ~] ", + "[~ ~ oh oh] [~ ~ oh oh] [~ ~ oh oh] [~ ~ oh oh] ", + "[~ ~ ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] [rim ~ ~ rim] ", +).s().slow(2) +`; + +export const Reggae5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ lt ~ lt] [~ ~ ~ ~] ", + "[~ ~ ~ mt] [~ mt mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Reggaeton = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ sd] [~ ~ sd ~] [~ ~ ~ sd] [~ ~ sd ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const RespectYourself = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const Rock1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ bd ~] [~ ~ bd ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ht] [ht ~ ~ ht] [ht ~ ~ ht] [~ ~ ~ ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ sd ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Rock2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ac ~] [ac ~ ac ~] [ac ~ ac ~] [ac ~ ac ~] ", + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ ~ ~] [~ ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh ~] [hh hh hh hh] [hh hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ oh] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ sd ~] ", +).s().slow(2) +`; + +export const Rock2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ ~] [bd ~ bd ~] [bd ~ bd ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [cy ~ cy ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [lt lt lt lt] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [mt mt mt mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd sd sd sd] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", + "[~ ~ sd ~] [~ ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [ac ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock4c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ac] [ac ~ ~ ac] [ac ~ ~ ac] [ac ~ ~ ac] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[sd sd sd sd] [sd sd sd sd] [sd sd sd sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Rock5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Rock5c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ac ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ ~ sd ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const RockSteady = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] ", + "[~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] [~ sd ~ ~] [sd sd ~ sd] ", + "[~ hh ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh hh] [hh ~ ~ ~] [hh ~ hh hh] ", + "[~ ~ oh ~] [~ ~ ~ oh] [~ ~ oh ~] [~ ~ ~ oh] [~ oh ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const RockThePlanet = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh hh ~ hh] [hh hh hh hh]", +).s().slow(2) +`; + +export const RollinBreak = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Rolling1 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling10 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling11 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ bd bd ~] [~ bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling2 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const Rolling4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ bd bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling5a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling5b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling6a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ bd] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling7d = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ bd] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling8 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling9a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Rolling9b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const Sally = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[lt ~ ~ ~] [~ ~ lt ~] [~ ~ lt ~] [~ ~ lt ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Samba1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] [cb ~ ~ ~] ", + "[~ hh hh ~] [~ hh hh ~] [~ hh hh ~] [~ hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ lt] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[cb ~ cb ~] [cb cb ~ cb] [~ cb cb ~] [cb cb ~ cb] ", + "[~ hh ~ hh] [~ ~ hh ~] [hh ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ mt] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ac ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] [lt ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ mt mt] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ sd sd] [sd ~ ~ ~] [~ ~ ~ ~] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const Samba2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ lt lt] ", + "[~ ~ rim ~] [~ rim ~ ~] [rim ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] ", + "[~ ~ ~ ~] [~ ~ ~ mt] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ rim ~ ~] [~ rim ~ ~] [~ rim ~ ~] [~ rim ~ ~] ", + "[~ ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [lt ~ ~ ~] [~ ~ lt ~] [~ ~ ~ ~] ", + "[mt ~ ~ mt] [~ ~ mt ~] [~ mt ~ ~] [mt ~ ~ mt] ", + "[~ sd sd ~] [~ ~ ~ sd] [sd ~ ~ ~] [~ sd sd ~] ", +).s().slow(2) +`; + +export const Samba3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Samba3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ac] [~ ~ ~ ac] [~ ~ ~ ~] ", + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[~ hh ~ hh] [~ ~ hh ~] [hh ~ ~ hh] [~ ~ hh ~] ", + "[sd ~ sd ~] [sd sd ~ sd] [~ sd sd ~] [sd sd ~ sd] ", +).s().slow(2) +`; + +export const Samba3c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] [bd ~ ~ bd] ", + "[hh hh ~ ~] [~ ~ hh hh] [~ ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ht ~] [ht ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ lt] [~ ~ lt ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ oh] ", + "[~ ~ sd ~] [sd ~ ~ ~] [sd ~ ~ sd] [~ ~ sd ~] ", +).s().slow(2) +`; + +export const Shuffle1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd bd ~ bd] [bd ~ bd bd] ", + "[hh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [~ ~ sd ~] [~ sd ~ ~] ", +).s().slow(2) +`; + +export const Shuffle2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [bd ~ ~ bd] ", + "[hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ sd sd ~] [sd sd sd sd] [~ sd sd ~] ", +).s().slow(2) +`; + +export const SiberianNights = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh]", +).s().slow(2) +`; + +export const Ska1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ska1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ac ~] [~ ~ ac ~] [~ ~ ac ~] [~ ~ ~ ~] ", + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Ska1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[sd ~ sd sd] [~ ~ ~ ~] [sd ~ sd ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const SlowDeepHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[sh sh sh sh] [sh sh sh sh] [sh sh sh sh] [sh sh sh sh]", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~]", + "[~ ~ oh oh] [~ ~ oh oh] [~ oh oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const Steppers = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Strbtsdcgogo100 = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ hh hh ~] [hh hh ~ hh] [~ ~ ~ ~] [~ hh hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [oh ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const Supersonic1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Supersonic1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Supersonic2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[cb ~ cb cb] [cb ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Supersonic2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [sd ~ ~ ~] ", + "[cb ~ cb cb] [cb ~ cb ~] [cb ~ ~ ~] [~ ~ ~ ~] ", + "[rim rim rim rim] [rim rim rim rim] [rim rim rim rim] [rim rim rim rim] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] ", +).s().slow(2) +`; + +export const Superstition = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh hh hh ~] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const Swing1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ hh] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ sd sd] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Swing2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd bd ~] [bd bd bd ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ hh ~] ", + "[~ ~ ~ sd] [~ ~ ~ sd] [~ sd sd ~] ", +).s().slow(2) +`; + +export const Swing3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ bd ~ ~] ", + "[cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ ~] ", + "[~ ~ ~ ~] [mt mt ~ ~] [~ ~ mt mt] ", + "[oh ~ ~ oh] [~ ~ oh ~] [~ oh ~ ~] ", + "[~ sd sd ~] [~ ~ ~ sd] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const SynthWave = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh]", +).s().slow(2) +`; + +export const SynthethicSubstitution = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ bd] [~ bd bd bd] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ bd] [~ bd bd bd] [~ ~ ~ bd] ", + "[~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~] [~ sd ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const TakeMeToMardiGras = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ bd ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ hh hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[cp ~ cp ~] [~ cp ~ ~] [~ cp ~ ~] [cp ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ cy] ", +).s().slow(2) +`; + +export const TakeMeToMardiGrasAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh hh] [hh ~ hh ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ oh ~] ", + "[cp ~ cp ~] [~ cp ~ ~] [~ cp ~ ~] [cp ~ ~ ~] ", + "[~ ~ ~ ~] [cy ~ ~ cy] [~ ~ cy ~] [~ cy ~ cy] ", +).s().slow(2) +`; + +export const Techno = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ hh ~ ~] [~ ~ ~ ~] ", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] ", +).s().slow(2) +`; + +export const TheFez = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [bd ~ ~ ~] ", + "[~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] [~ sd ~ sd] [sd sd ~ sd] ", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] ", +).s().slow(2) +`; + +export const TheSameBlood = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd bd ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ sd] [~ sd sd ~] [~ ~ ~ ~] [sd sd sd ~] ", + "[hh ~ hh ~] [hh ~ hh hh] [hh ~ hh hh] [hh ~ hh hh] ", +).s().slow(2) +`; + +export const TheTrillsGone = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", + "[sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ ~] ", + "[~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] [~ hh ~ hh] ", +).s().slow(2) +`; + +export const TinyHouse = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const TransEuroExpress = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ ~ hh] [hh ~ hh hh] [hh ~ ~ hh] ", +).s().slow(2) +`; + +export const Trap1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const Trap1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ sd ~ ~] [~ ~ ~ ~]", + "[[hh hh hh] ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [[hh hh hh] ~ hh ~]", +).s().slow(2) +`; + +export const Twist1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [bd ~ ~ ~] [~ ~ bd ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist1c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const Twist2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[hh ~ ~ ~] [hh ~ hh ~] [hh ~ ~ ~] [hh ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ ~ ~] [~ ~ ac ~] [~ ~ ~ ~] [ac ~ ~ ~] ", + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[hh ~ hh hh] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd ~ ~ ~] ", +).s().slow(2) +`; + +export const Twist2c = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [mt ~ mt ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ sd ~] [~ ~ ~ ~] [sd sd sd sd] ", +).s().slow(2) +`; + +export const TwoDrop = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~]", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~]", +).s().slow(2) +`; + +export const UkGarage1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh hh] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh hh]", + "[~ rim ~ ~] [~ ~ ~ rim] [~ ~ ~ ~] [~ rim ~ ~]", + "[~ ~ ~ ~] [~ mt ~ ~] [~ ~ ~ mt] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UkGarage1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~]", + "[~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~] [~ ~ hh ~]", + "[~ rim ~ ~] [~ ~ ~ rim] [~ ~ ~ ~] [~ rim ~ ~]", + "[~ ~ ~ ~] [~ mt ~ ~] [~ ~ ~ mt] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare1a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~]", +).s().slow(2) +`; + +export const UnconventionalSnare1b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare2a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare2b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare3a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare3b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare4a = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ bd ~] [~ bd ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ sd ~] [~ ~ ~ ~]", +).s().slow(2) +`; + +export const UnconventionalSnare4b = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[~ ~ bd ~] [~ ~ ~ ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[sd ~ ~ ~] [sd ~ ~ ~] [~ sd ~ ~] [sd ~ ~ ~]", +).s().slow(2) +`; + +export const UnknownDrummer = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ bd] [~ ~ bd ~] [~ ~ bd ~] [~ ~ ~ ~]", + "[~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ ~]", + "[~ hh hh ~] [hh hh ~ hh] [~ ~ ~ ~] [~ hh ~ ~]", + "[~ ~ ~ ~] [~ ~ ~ ~] [oh ~ ~ ~] [~ ~ oh ~]", +).s().slow(2) +`; + +export const UseMe = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ bd ~ bd] [bd ~ bd bd] [~ bd ~ bd] [bd ~ bd ~] [~ bd ~ ~] [bd bd ~ bd] [~ bd ~ bd] ", + "[~ ~ ~ ~] [sd ~ ~ sd] [~ sd ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [sd ~ ~ sd] [~ ~ ~ ~] [~ ~ ~ sd] ", + "[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh ~ ~ ~] [~ ~ ~ hh] ", + "[~ ~ ~ ~] [~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ oh ~ oh] [~ oh ~ ~] ", +).s().slow(2) +`; + +export const UseMeAlt = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ ~] [~ ~ ~ ~] [bd ~ ~ bd] [~ ~ bd ~] [bd ~ ~ ~] ", + "[~ ~ sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] [~ sd sd ~] [sd ~ sd sd] ", + "[hh ~ ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] [hh hh ~ ~] [hh hh hh hh] ", + "[~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] [~ ~ oh ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const WalkThisWay = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[~ ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", + "[oh ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] [~ ~ ~ ~] ", +).s().slow(2) +`; + +export const WeWillRockYou = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ bd ~] [~ ~ ~ ~] [bd ~ bd ~] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [cp ~ ~ ~] [~ ~ ~ ~] [cp ~ ~ ~] ", +).s().slow(2) +`; + +export const WhenTheLeveeBreaks = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd bd ~ ~] [~ ~ ~ bd] [~ ~ bd bd] [~ ~ ~ ~] ", + "[~ ~ ~ ~] [sd ~ ~ ~] [~ ~ ~ ~] [sd ~ ~ ~] ", + "[hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] [hh ~ hh ~] ", +).s().slow(2) +`; + +export const YaMama = `// made by using the patterns from https://github.com/lvm/tidal-drum-patterns +// (licensed under GPL-3.0 license) +// using the R script from this repository: https://github.com/urswilke/read_beats +stack( + "[bd ~ ~ ~] [~ ~ ~ bd] [bd ~ ~ ~] [~ ~ ~ ~]", + "[~ ~ ~ ~] [cy ~ ~ ~] [~ ~ ~ ~] [cy ~ ~ ~]", +).s().slow(2) +`; From 0179ec051fc776b5f1083e43a5183945149a8084 Mon Sep 17 00:00:00 2001 From: urswilke Date: Mon, 16 Jan 2023 23:19:46 +0100 Subject: [PATCH 05/52] Revert "run: npm test" This reverts commit 00709539e9bdfbc1404e984f28453f0a54b5638e. --- test/__snapshots__/tunes.test.mjs.snap | 6842 ------------------------ 1 file changed, 6842 deletions(-) diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap index 8c446a609..beda5f0d7 100644 --- a/test/__snapshots__/tunes.test.mjs.snap +++ b/test/__snapshots__/tunes.test.mjs.snap @@ -1,6847 +1,5 @@ // Vitest Snapshot v1 -exports[`renders tunes > tune: Afro1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro1c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Afro2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro2c 1`] = ` -[ - "[ 3/4 → 7/8 | s:lt ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Afro3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 3/8 → 1/2 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Afro3c 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 3/8 | s:mt ]", - "[ 3/8 → 1/2 | s:mt ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Afro4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro4c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ht ]", - "[ 3/4 → 7/8 | s:ht ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Afro5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro5c 1`] = ` -[ - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Afro6a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro6b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/4 → 7/8 | s:ht ]", - "[ 3/8 → 1/2 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Afro6c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 1/4 → 3/8 | s:cy ]", - "[ 3/8 → 1/2 | s:cy ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Ageispolis 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Amen 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: AmenBrother 1`] = ` -[ - "[ 0/1 → 1/32 | s:bd ]", - "[ 1/16 → 3/32 | s:bd ]", - "[ 5/16 → 11/32 | s:bd ]", - "[ 11/32 → 3/8 | s:bd ]", - "[ 1/2 → 17/32 | s:bd ]", - "[ 9/16 → 19/32 | s:bd ]", - "[ 13/16 → 27/32 | s:bd ]", - "[ 1/8 → 5/32 | s:sd ]", - "[ 7/32 → 1/4 | s:sd ]", - "[ 9/32 → 5/16 | s:sd ]", - "[ 3/8 → 13/32 | s:sd ]", - "[ 15/32 → 1/2 | s:sd ]", - "[ 5/8 → 21/32 | s:sd ]", - "[ 23/32 → 3/4 | s:sd ]", - "[ 25/32 → 13/16 | s:sd ]", - "[ 7/8 → 29/32 | s:sd ]", - "[ 31/32 → 1/1 | s:sd ]", - "[ 0/1 → 1/32 | s:hh ]", - "[ 1/16 → 3/32 | s:hh ]", - "[ 1/8 → 5/32 | s:hh ]", - "[ 3/16 → 7/32 | s:hh ]", - "[ 1/4 → 9/32 | s:hh ]", - "[ 5/16 → 11/32 | s:hh ]", - "[ 3/8 → 13/32 | s:hh ]", - "[ 7/16 → 15/32 | s:hh ]", - "[ 1/2 → 17/32 | s:hh ]", - "[ 9/16 → 19/32 | s:hh ]", - "[ 5/8 → 21/32 | s:hh ]", - "[ 11/16 → 23/32 | s:hh ]", - "[ 3/4 → 25/32 | s:hh ]", - "[ 13/16 → 27/32 | s:hh ]", - "[ 7/8 → 29/32 | s:hh ]", - "[ 15/16 → 31/32 | s:hh ]", -] -`; - -exports[`renders tunes > tune: AshleysRoachClip 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:lt ]", - "[ 1/4 → 3/8 | s:lt ]", - "[ 1/2 → 5/8 | s:lt ]", - "[ 3/4 → 7/8 | s:lt ]", - "[ 1/8 → 1/4 | s:ht ]", - "[ 3/8 → 1/2 | s:ht ]", - "[ 5/8 → 3/4 | s:ht ]", - "[ 7/8 → 1/1 | s:ht ]", -] -`; - -exports[`renders tunes > tune: Autobahn1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:cp ]", - "[ 1/4 → 3/8 | s:cp ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 3/4 → 7/8 | s:cp ]", - "[ 7/8 → 1/1 | s:cp ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Autobahn1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:cp ]", - "[ 1/4 → 3/8 | s:cp ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 3/4 → 7/8 | s:cp ]", - "[ 7/8 → 1/1 | s:cp ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Ballad1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad2c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Ballad3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad3c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 3/4 → 7/8 | s:ht ]", - "[ 7/8 → 1/1 | s:ht ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad4c 1`] = ` -[ - "[ 5/8 → 3/4 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 1/8 → 1/4 | s:mt ]", - "[ 1/4 → 3/8 | s:mt ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ballad5c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: BigBeat 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/2 → 5/8 | s:cp ]", -] -`; - -exports[`renders tunes > tune: BillyJean 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: BlueMonday1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: BlueMonday2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Blues1a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 1/6 → 1/3 | s:bd ]", - "[ 1/3 → 1/2 | s:bd ]", - "[ 1/2 → 2/3 | s:bd ]", - "[ 2/3 → 5/6 | s:bd ]", - "[ 5/6 → 1/1 | s:bd ]", - "[ 0/1 → 1/6 | s:hh ]", - "[ 1/6 → 1/3 | s:hh ]", - "[ 1/3 → 1/2 | s:hh ]", - "[ 1/2 → 2/3 | s:hh ]", - "[ 2/3 → 5/6 | s:hh ]", - "[ 5/6 → 1/1 | s:hh ]", - "[ 0/1 → 1/6 | s:sd ]", - "[ 1/6 → 1/3 | s:sd ]", - "[ 1/3 → 1/2 | s:sd ]", - "[ 1/2 → 2/3 | s:sd ]", - "[ 2/3 → 5/6 | s:sd ]", - "[ 5/6 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Blues2a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 1/2 → 2/3 | s:bd ]", - "[ 0/1 → 1/6 | s:hh ]", - "[ 1/2 → 2/3 | s:hh ]", - "[ 1/6 → 1/3 | s:sd ]", - "[ 1/3 → 1/2 | s:sd ]", - "[ 2/3 → 5/6 | s:sd ]", - "[ 5/6 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: BookOfMoses 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/4 → 5/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 15/16 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: BootsNCats 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Bossa1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Bossa1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Bossa1c 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 0/1 → 1/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Bossa2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 1/4 → 3/8 | s:cy ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Bossa2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 1/4 → 3/8 | s:cy ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Bossa2c 1`] = ` -[ - "[ 1/4 → 3/8 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", -] -`; - -exports[`renders tunes > tune: Bouton 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Break1 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Break2 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Breakbeat1 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Breakbeat2 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Breakbeat3 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: BritHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ChaChaCha1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/4 → 3/8 | s:ht ]", - "[ 3/4 → 7/8 | s:ht ]", -] -`; - -exports[`renders tunes > tune: ChaChaCha1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/4 → 3/8 | s:ht ]", - "[ 3/8 → 1/2 | s:ht ]", - "[ 3/4 → 7/8 | s:lt ]", - "[ 7/8 → 1/1 | s:lt ]", -] -`; - -exports[`renders tunes > tune: ChaChaCha1c 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 1/2 → 5/8 | s:lt ]", - "[ 3/4 → 7/8 | s:lt ]", -] -`; - -exports[`renders tunes > tune: ChugChugChugaLug 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: CissyStrutLong 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 3/16 → 1/4 | s:bd ]", - "[ 5/16 → 3/8 | s:bd ]", - "[ 9/16 → 5/8 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 3/4 → 13/16 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 3/4 → 13/16 | s:oh ]", - "[ 7/8 → 15/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: CissyStrutShort 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: ColdSweat 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ColdSweatOpening 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ComeDancing 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 7/16 → 1/2 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 15/16 → 1/1 | s:bd ]", - "[ 1/16 → 1/8 | s:sd ]", - "[ 1/8 → 3/16 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 3/8 → 7/16 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 15/16 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick1b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick2a 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick2b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporaryKick4 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporarySnare1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporarySnare1b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporarySnare2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporarySnare2b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporarySnare3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ContemporarySnare3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: CowdBell 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 3/8 → 1/2 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 3/4 → 7/8 | s:cb ]", - "[ 7/8 → 1/1 | s:cb ]", -] -`; - -exports[`renders tunes > tune: DasModel1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: DasModel1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: DeepHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: DeeperHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/8 → 1/4 | s:cp ]", - "[ 1/4 → 3/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 3/8 → 1/2 | s:sh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: DirtyHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/4 → 3/8 | s:cp ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 1/4 → 3/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Disco1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco1c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco2c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco3c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco4c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Disco5c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Dnb1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Dnb1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Dnb2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Dnb3 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Dnb4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Dnb4b 1`] = ` -[ - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Drumroll1 1`] = ` -[ - "[ 0/1 → 1/8 | s:oh ]", - "[ 0/1 → 1/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll2 1`] = ` -[ - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll3 1`] = ` -[ - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll4 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll5 1`] = ` -[ - "[ 0/1 → 1/8 | s:ht ]", - "[ 1/2 → 5/8 | s:mt ]", -] -`; - -exports[`renders tunes > tune: Drumroll6 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 3/8 → 1/2 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll7 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll8 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll9 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 3/8 → 1/2 | s:ht ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll10 1`] = ` -[ - "[ 1/8 → 1/4 | s:ht ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", -] -`; - -exports[`renders tunes > tune: Drumroll11 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll12 1`] = ` -[ - "[ 1/8 → 1/4 | s:ht ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", -] -`; - -exports[`renders tunes > tune: Drumroll13 1`] = ` -[ - "[ 3/8 → 1/2 | s:mt ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 0/1 → 1/8 | s:lt ]", - "[ 1/8 → 1/4 | s:lt ]", - "[ 1/4 → 3/8 | s:lt ]", -] -`; - -exports[`renders tunes > tune: Drumroll14 1`] = ` -[ - "[ 1/8 → 1/4 | s:ht ]", - "[ 3/8 → 1/2 | s:lt ]", - "[ 7/8 → 1/1 | s:lt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Drumroll15 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll16 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 3/8 → 1/2 | s:ht ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 1/2 → 5/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll17 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 3/4 → 7/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll18 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 1/4 → 3/8 | s:cy ]", - "[ 1/2 → 5/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Drumroll19 1`] = ` -[ - "[ 1/4 → 3/8 | s:ht ]", - "[ 1/2 → 5/8 | s:ht ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Dubstep1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Dubstep1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: DubstepRatcheted 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 3/16 → 1/4 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 5/16 | s:oh ]", - "[ 5/16 → 3/8 | s:oh ]", - "[ 3/8 → 7/16 | s:oh ]", - "[ 7/16 → 1/2 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Electro1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Electro1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Electro2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Electro2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Electro3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Electro3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: End1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:cy ]", -] -`; - -exports[`renders tunes > tune: End1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: ExpensiveShit 1`] = ` -[ - "[ 3/16 → 1/4 | s:bd ]", - "[ 3/8 → 7/16 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 0/1 → 1/16 | s:sd ]", - "[ 1/16 → 1/8 | s:sd ]", - "[ 3/16 → 1/4 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 1/2 → 9/16 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 15/16 → 1/1 | s:hh ]", - "[ 11/16 → 3/4 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ExpressYourself 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 3/16 → 1/4 | s:bd ]", - "[ 1/4 → 5/16 | s:bd ]", - "[ 7/16 → 1/2 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 3/4 → 13/16 | s:bd ]", - "[ 15/16 → 1/1 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 11/16 → 3/4 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 15/16 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Footwork1 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Footwork2 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", -] -`; - -exports[`renders tunes > tune: FourOnTheFloor 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: FrenchHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:sh ]", - "[ 1/8 → 1/4 | s:sh ]", - "[ 1/4 → 3/8 | s:sh ]", - "[ 1/2 → 5/8 | s:sh ]", - "[ 3/4 → 7/8 | s:sh ]", - "[ 7/8 → 1/1 | s:sh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Funk1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 3/8 → 1/2 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Funk2c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Funk3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Funk3c 1`] = ` -[ - "[ 3/8 → 1/2 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk4c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ht ]", - "[ 5/8 → 3/4 | s:ht ]", - "[ 3/4 → 7/8 | s:ht ]", - "[ 7/8 → 1/1 | s:ht ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk5a 1`] = ` -[ - "[ 5/8 → 3/4 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk5b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk5c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk6a 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 5/8 → 3/4 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk6b 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 5/8 → 3/4 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 3/8 | s:ht ]", - "[ 7/8 → 1/1 | s:lt ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk6c 1`] = ` -[ - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk7a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk7b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk7c 1`] = ` -[ - "[ 3/4 → 7/8 | s:ac ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk8a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk8b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk8c 1`] = ` -[ - "[ 5/8 → 3/4 | s:ac ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk9a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk9b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk9c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk10a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk10b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk10c 1`] = ` -[ - "[ 1/8 → 1/4 | s:ac ]", - "[ 5/8 → 3/4 | s:ac ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk11a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk11b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk11c 1`] = ` -[ - "[ 3/8 → 1/2 | s:ac ]", - "[ 7/8 → 1/1 | s:ac ]", - "[ 5/8 → 3/4 | s:ht ]", - "[ 3/4 → 7/8 | s:ht ]", - "[ 0/1 → 1/8 | s:lt ]", - "[ 7/8 → 1/1 | s:lt ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk12a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk12b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk12c 1`] = ` -[ - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk13a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Funk13b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Funk13c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk14a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk14b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk14c 1`] = ` -[ - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Funk15a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 0/1 → 1/6 | s:hh ]", - "[ 1/3 → 1/2 | s:sd ]", - "[ 2/3 → 5/6 | s:sd ]", -] -`; - -exports[`renders tunes > tune: FunkyDrummer 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: FunkyDrummerAlt 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: FunkyPresident 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: GenericBossaNova 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/8 → 1/4 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 5/8 → 3/4 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: GenericGahu 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: GenericRock 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: GenericRumba 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/8 → 1/4 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 5/8 → 3/4 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: GenericShiko 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: GenericSon 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/8 → 1/4 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 5/8 → 3/4 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: GenericSoukous 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: GetUp 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: GhostSnare1a 1`] = ` -[ - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: GhostSnare1b 1`] = ` -[ - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: GhostSnare2a 1`] = ` -[ - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: GhostSnare2b 1`] = ` -[ - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: GoodToGo 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: GrooveMe 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: HaitianDivorce 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: HalfDrop 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Haus 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: HipHop 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Hiphop 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Hiphop1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop5 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Hiphop6 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Hiphop7 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Hiphop8 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: HiphopAlt 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: HookAndSling 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/8 → 3/16 | s:bd ]", - "[ 9/16 → 5/8 | s:bd ]", - "[ 13/16 → 7/8 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 3/8 → 7/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", -] -`; - -exports[`renders tunes > tune: HotSweat 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 1/2 → 9/16 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: House1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: House1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 5/8 → 3/4 | s:oh ]", -] -`; - -exports[`renders tunes > tune: HybridKick1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick1d 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick1e 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick1f 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick1g 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: HybridKick3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: IGotTheFeelin 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/8 → 3/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 3/8 → 7/16 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: IGotYou 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 1/8 → 3/16 | s:oh ]", - "[ 5/8 → 11/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ImpeachThePresident 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Irregular1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Irregular1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Irregular2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Irregular2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Irregular3 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: ItaloDisco1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/8 → 1/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 3/8 → 1/2 | s:cb ]", - "[ 3/4 → 7/8 | s:cb ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/8 → 1/4 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 5/8 → 3/4 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ItaloDisco1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/8 → 1/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 3/8 → 1/2 | s:cb ]", - "[ 3/4 → 7/8 | s:cb ]", - "[ 0/1 → 1/8 | s:cy ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/8 → 1/4 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 5/8 → 3/4 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: ItsANewDay 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Juke 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Jungle 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Jungle1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Jungle1b 1`] = ` -[ - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: JungleAlt 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Kick 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", -] -`; - -exports[`renders tunes > tune: KissingMyLove 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 3/16 → 1/4 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 7/8 → 15/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: KnocksOffMyFeet 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Lady 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/8 → 3/16 | s:oh ]", - "[ 3/8 → 7/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: LadyMarmalade 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 3/8 → 7/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: LetAWomanBeAWomanLetAManBeAMan 1`] = ` -[ - "[ 1/8 → 3/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 13/16 → 7/8 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: LookingForThePerfectBeat1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 5/8 → 3/4 | s:cb ]", - "[ 7/8 → 1/1 | s:cb ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: LookingForThePerfectBeat1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 5/8 → 3/4 | s:cb ]", - "[ 7/8 → 1/1 | s:cb ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Lookkapypy 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 3/16 → 1/4 | s:bd ]", - "[ 5/16 → 3/8 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 13/16 → 7/8 | s:bd ]", - "[ 7/8 → 15/16 | s:bd ]", - "[ 1/16 → 1/8 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 1/2 → 9/16 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 5/8 → 11/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: MiamiBass1 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: MiamiBass2 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: MoreBounceToTheOunce 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: MotherPopcorn 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/8 → 3/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: MusicNonStop1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: MusicNonStop2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: MusicNonStop2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: NewWave 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 1/2 → 5/8 | s:sh ]", -] -`; - -exports[`renders tunes > tune: Nico 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 1/2 → 5/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Numbers1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Numbers1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: OneDrop 1`] = ` -[ - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: OneSevenFiveThirteen 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: OohChild 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/8 → 3/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 1/16 → 1/8 | s:sd ]", - "[ 3/16 → 1/4 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 11/16 → 3/4 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 1/8 → 3/16 | s:oh ]", - "[ 3/8 → 7/16 | s:oh ]", - "[ 5/8 → 11/16 | s:oh ]", - "[ 7/8 → 15/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: PalmGrease 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 15/16 → 1/1 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 5/8 → 11/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: PapaWasToo 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:lt ]", -] -`; - -exports[`renders tunes > tune: Pattern00 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern01 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern02 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern03 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern04 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern05 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern06 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern07 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern08 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern09 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern10 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern11 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern12 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern13 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern14 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern15 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern16 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern17 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern18 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern19 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern20 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern21 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern22 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern23 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern24 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern25 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern26 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern27 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern28 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern29 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern30 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern31 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern32 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern33 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern34 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern35 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern36 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern37 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern38 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern39 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern40 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern41 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern42 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern43 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern44 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern45 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern46 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern47 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern48 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern49 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern50 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern51 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern52 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern53 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern54 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern55 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern56 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern57 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern58 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern59 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern60 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern61 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern62 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Pattern63 1`] = ` -[ - "[ 0/1 → 1/12 | s:bd ]", - "[ 1/3 → 5/12 | s:bd ]", - "[ 5/6 → 11/12 | s:bd ]", - "[ 11/12 → 1/1 | s:bd ]", - "[ 1/2 → 7/12 | s:sd ]", - "[ 5/6 → 11/12 | s:sd ]", - "[ 0/1 → 1/12 | s:hh ]", - "[ 1/6 → 1/4 | s:hh ]", - "[ 1/4 → 1/3 | s:hh ]", - "[ 5/12 → 1/2 | s:hh ]", - "[ 1/2 → 7/12 | s:hh ]", - "[ 2/3 → 3/4 | s:hh ]", - "[ 3/4 → 5/6 | s:hh ]", - "[ 11/12 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: PlanetRock 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 3/4 → 7/8 | s:cb ]", - "[ 7/8 → 1/1 | s:cb ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Poly1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Poly1b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop1a 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop1b 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:lt ]", - "[ 1/2 → 5/8 | s:lt ]", - "[ 3/4 → 7/8 | s:lt ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop2c 1`] = ` -[ - "[ 3/8 → 1/2 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop3a 1`] = ` -[ - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop3c 1`] = ` -[ - "[ 3/8 → 1/2 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop4c 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Pop5c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:oh ]", - "[ 1/2 → 5/8 | s:oh ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Poptech2010 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 0/1 → 1/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: RNB1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB1c 1`] = ` -[ - "[ 1/2 → 5/8 | s:lt ]", - "[ 1/4 → 3/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB2b 1`] = ` -[ - "[ 3/8 → 1/2 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB2c 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB3c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 5/8 → 3/4 | s:lt ]", - "[ 1/4 → 3/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB4c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RNB5c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Reggae1a 1`] = ` -[ - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Reggae1b 1`] = ` -[ - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Reggae1c 1`] = ` -[ - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Reggae2a 1`] = ` -[ - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Reggae2b 1`] = ` -[ - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Reggae2c 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Reggae3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Reggae3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Reggae3c 1`] = ` -[ - "[ 3/4 → 7/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Reggae4a 1`] = ` -[ - "[ 1/2 → 2/3 | s:bd ]", - "[ 1/2 → 2/3 | s:hh ]", - "[ 1/2 → 2/3 | s:oh ]", - "[ 0/1 → 1/6 | s:rim ]", - "[ 0/1 → 1/6 | s:sd ]", - "[ 1/6 → 1/3 | s:sd ]", - "[ 1/3 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Reggae5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Reggae5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Reggae5c 1`] = ` -[ - "[ 3/8 → 1/2 | s:mt ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Reggaeton 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: RespectYourself 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/4 → 5/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 3/4 → 13/16 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Rock1a 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 3/8 → 1/2 | s:ht ]", - "[ 1/2 → 5/8 | s:ht ]", - "[ 7/8 → 1/1 | s:ht ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/4 → 3/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 3/4 → 7/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:oh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock2c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 5/8 → 3/4 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock3c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock4b 1`] = ` -[ - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock4c 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 3/8 → 1/2 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 7/8 → 1/1 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rock5c 1`] = ` -[ - "[ 7/8 → 1/1 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: RockSteady 1`] = ` -[ - "[ 1/8 → 3/16 | s:bd ]", - "[ 1/4 → 5/16 | s:bd ]", - "[ 7/16 → 1/2 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 3/4 → 13/16 | s:bd ]", - "[ 1/16 → 1/8 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 1/8 → 3/16 | s:oh ]", - "[ 7/16 → 1/2 | s:oh ]", - "[ 5/8 → 11/16 | s:oh ]", - "[ 15/16 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: RockThePlanet 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: RollinBreak 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Rolling1 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling2 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling4b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling5a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling5b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling6a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling7a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling7b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling7c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling7d 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling8 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling9a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling9b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling10 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Rolling11 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 5/8 → 3/4 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Sally 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:lt ]", - "[ 3/4 → 7/8 | s:lt ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Samba1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:lt ]", - "[ 3/8 → 1/2 | s:mt ]", -] -`; - -exports[`renders tunes > tune: Samba1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 5/8 → 3/4 | s:cb ]", - "[ 7/8 → 1/1 | s:cb ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Samba1c 1`] = ` -[ - "[ 3/4 → 7/8 | s:mt ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Samba2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", -] -`; - -exports[`renders tunes > tune: Samba2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 7/8 → 1/1 | s:mt ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Samba2c 1`] = ` -[ - "[ 1/2 → 5/8 | s:lt ]", - "[ 0/1 → 1/8 | s:mt ]", - "[ 3/8 → 1/2 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Samba3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:ac ]", - "[ 1/2 → 5/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Samba3b 1`] = ` -[ - "[ 7/8 → 1/1 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Samba3c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 1/4 → 3/8 | s:ht ]", - "[ 1/2 → 5/8 | s:ht ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Shuffle1a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 2/3 → 5/6 | s:bd ]", - "[ 5/6 → 1/1 | s:bd ]", - "[ 0/1 → 1/6 | s:hh ]", - "[ 1/2 → 2/3 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Shuffle2a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 1/2 → 2/3 | s:bd ]", - "[ 0/1 → 1/6 | s:hh ]", - "[ 1/2 → 2/3 | s:hh ]", - "[ 1/6 → 1/3 | s:sd ]", - "[ 1/3 → 1/2 | s:sd ]", - "[ 2/3 → 5/6 | s:sd ]", - "[ 5/6 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: SiberianNights 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Ska1a 1`] = ` -[ - "[ 1/4 → 3/8 | s:ac ]", - "[ 3/4 → 7/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ska1b 1`] = ` -[ - "[ 1/4 → 3/8 | s:ac ]", - "[ 3/4 → 7/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Ska1c 1`] = ` -[ - "[ 1/2 → 5/8 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/4 → 3/8 | s:sd ]", - "[ 3/8 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: SlowDeepHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:sh ]", - "[ 1/8 → 1/4 | s:sh ]", - "[ 1/4 → 3/8 | s:sh ]", - "[ 3/8 → 1/2 | s:sh ]", - "[ 1/2 → 5/8 | s:sh ]", - "[ 5/8 → 3/4 | s:sh ]", - "[ 3/4 → 7/8 | s:sh ]", - "[ 7/8 → 1/1 | s:sh ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/8 → 1/2 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", - "[ 7/8 → 1/1 | s:oh ]", -] -`; - -exports[`renders tunes > tune: Steppers 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Strbtsdcgogo100 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Supersonic1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Supersonic1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Supersonic2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 3/8 → 1/2 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Supersonic2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:cb ]", - "[ 1/4 → 3/8 | s:cb ]", - "[ 3/8 → 1/2 | s:cb ]", - "[ 1/2 → 5/8 | s:cb ]", - "[ 3/4 → 7/8 | s:cb ]", - "[ 0/1 → 1/8 | s:rim ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 1/4 → 3/8 | s:rim ]", - "[ 3/8 → 1/2 | s:rim ]", - "[ 1/2 → 5/8 | s:rim ]", - "[ 5/8 → 3/4 | s:rim ]", - "[ 3/4 → 7/8 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Superstition 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Swing1a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 1/2 → 2/3 | s:bd ]", - "[ 0/1 → 1/6 | s:hh ]", - "[ 1/2 → 2/3 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Swing2a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 1/6 → 1/3 | s:bd ]", - "[ 1/3 → 1/2 | s:bd ]", - "[ 2/3 → 5/6 | s:bd ]", - "[ 5/6 → 1/1 | s:bd ]", - "[ 1/2 → 2/3 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Swing3a 1`] = ` -[ - "[ 0/1 → 1/6 | s:bd ]", - "[ 1/2 → 2/3 | s:bd ]", - "[ 0/1 → 1/6 | s:cy ]", - "[ 1/2 → 2/3 | s:cy ]", - "[ 2/3 → 5/6 | s:mt ]", - "[ 5/6 → 1/1 | s:mt ]", - "[ 0/1 → 1/6 | s:oh ]", - "[ 1/2 → 2/3 | s:oh ]", - "[ 1/6 → 1/3 | s:sd ]", - "[ 1/3 → 1/2 | s:sd ]", -] -`; - -exports[`renders tunes > tune: SynthWave 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: SynthethicSubstitution 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/8 → 3/16 | s:bd ]", - "[ 7/16 → 1/2 | s:bd ]", - "[ 9/16 → 5/8 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 15/16 → 1/1 | s:bd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: TakeMeToMardiGras 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:cp ]", - "[ 1/4 → 3/8 | s:cp ]", - "[ 5/8 → 3/4 | s:cp ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 7/8 → 1/1 | s:cy ]", -] -`; - -exports[`renders tunes > tune: TakeMeToMardiGrasAlt 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", - "[ 0/1 → 1/8 | s:cp ]", - "[ 1/4 → 3/8 | s:cp ]", - "[ 5/8 → 3/4 | s:cp ]", - "[ 1/2 → 5/8 | s:cy ]", - "[ 7/8 → 1/1 | s:cy ]", -] -`; - -exports[`renders tunes > tune: Techno 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: TheFez 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 1/16 → 1/8 | s:sd ]", - "[ 3/16 → 1/4 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 5/16 → 3/8 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 11/16 → 3/4 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 13/16 → 7/8 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", -] -`; - -exports[`renders tunes > tune: TheSameBlood 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 3/8 → 1/2 | s:sd ]", - "[ 5/8 → 3/4 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: TheTrillsGone 1`] = ` -[ - "[ 7/8 → 1/1 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: TinyHouse 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 1/4 → 3/8 | s:oh ]", - "[ 3/4 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: TransEuroExpress 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Trap1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Trap1b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 0/1 → 1/24 | s:hh ]", - "[ 1/24 → 1/12 | s:hh ]", - "[ 1/12 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: Twist1a 1`] = ` -[ - "[ 3/4 → 7/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Twist1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Twist1c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 1/2 → 5/8 | s:mt ]", - "[ 3/4 → 7/8 | s:mt ]", -] -`; - -exports[`renders tunes > tune: Twist2a 1`] = ` -[ - "[ 3/4 → 7/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Twist2b 1`] = ` -[ - "[ 3/4 → 7/8 | s:ac ]", - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: Twist2c 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 3/4 → 7/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: TwoDrop 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: UkGarage1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/8 → 1/2 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 5/8 → 3/4 | s:mt ]", -] -`; - -exports[`renders tunes > tune: UkGarage1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:cp ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 1/8 → 1/4 | s:rim ]", - "[ 7/8 → 1/1 | s:rim ]", - "[ 5/8 → 3/4 | s:mt ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare1a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare1b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare2a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare2b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare3a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare3b 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/2 → 5/8 | s:bd ]", - "[ 7/8 → 1/1 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare4a 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnconventionalSnare4b 1`] = ` -[ - "[ 1/4 → 3/8 | s:bd ]", - "[ 0/1 → 1/8 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", -] -`; - -exports[`renders tunes > tune: UnknownDrummer 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 3/8 → 1/2 | s:bd ]", - "[ 3/4 → 7/8 | s:bd ]", - "[ 1/8 → 1/4 | s:sd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 7/8 → 1/1 | s:sd ]", - "[ 1/8 → 1/4 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 5/8 → 3/4 | s:hh ]", - "[ 7/8 → 1/1 | s:hh ]", -] -`; - -exports[`renders tunes > tune: UseMe 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/8 → 3/16 | s:bd ]", - "[ 5/16 → 3/8 | s:bd ]", - "[ 7/16 → 1/2 | s:bd ]", - "[ 1/2 → 9/16 | s:bd ]", - "[ 5/8 → 11/16 | s:bd ]", - "[ 11/16 → 3/4 | s:bd ]", - "[ 13/16 → 7/8 | s:bd ]", - "[ 15/16 → 1/1 | s:bd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/16 → 1/8 | s:hh ]", - "[ 1/8 → 3/16 | s:hh ]", - "[ 3/16 → 1/4 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 5/8 → 11/16 | s:hh ]", - "[ 11/16 → 3/4 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 15/16 → 1/1 | s:hh ]", - "[ 9/16 → 5/8 | s:oh ]", - "[ 11/16 → 3/4 | s:oh ]", - "[ 13/16 → 7/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: UseMeAlt 1`] = ` -[ - "[ 0/1 → 1/16 | s:bd ]", - "[ 1/4 → 5/16 | s:bd ]", - "[ 3/4 → 13/16 | s:bd ]", - "[ 1/8 → 3/16 | s:sd ]", - "[ 1/4 → 5/16 | s:sd ]", - "[ 3/8 → 7/16 | s:sd ]", - "[ 7/16 → 1/2 | s:sd ]", - "[ 9/16 → 5/8 | s:sd ]", - "[ 5/8 → 11/16 | s:sd ]", - "[ 3/4 → 13/16 | s:sd ]", - "[ 7/8 → 15/16 | s:sd ]", - "[ 15/16 → 1/1 | s:sd ]", - "[ 0/1 → 1/16 | s:hh ]", - "[ 1/4 → 5/16 | s:hh ]", - "[ 5/16 → 3/8 | s:hh ]", - "[ 3/8 → 7/16 | s:hh ]", - "[ 7/16 → 1/2 | s:hh ]", - "[ 1/2 → 9/16 | s:hh ]", - "[ 9/16 → 5/8 | s:hh ]", - "[ 3/4 → 13/16 | s:hh ]", - "[ 13/16 → 7/8 | s:hh ]", - "[ 7/8 → 15/16 | s:hh ]", - "[ 15/16 → 1/1 | s:hh ]", - "[ 1/8 → 3/16 | s:oh ]", - "[ 5/8 → 11/16 | s:oh ]", -] -`; - -exports[`renders tunes > tune: WalkThisWay 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", - "[ 0/1 → 1/8 | s:oh ]", -] -`; - -exports[`renders tunes > tune: WeWillRockYou 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/4 → 3/8 | s:bd ]", - "[ 1/2 → 5/8 | s:cp ]", -] -`; - -exports[`renders tunes > tune: WhenTheLeveeBreaks 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 1/8 → 1/4 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:sd ]", - "[ 0/1 → 1/8 | s:hh ]", - "[ 1/4 → 3/8 | s:hh ]", - "[ 1/2 → 5/8 | s:hh ]", - "[ 3/4 → 7/8 | s:hh ]", -] -`; - -exports[`renders tunes > tune: YaMama 1`] = ` -[ - "[ 0/1 → 1/8 | s:bd ]", - "[ 7/8 → 1/1 | s:bd ]", - "[ 1/2 → 5/8 | s:cy ]", -] -`; - exports[`renders tunes > tune: amensister 1`] = ` [ "[ 0/1 → 1/4 | n:0 s:amencutup room:0.5 ]", From 9731eb8c5b060069cfd81d2800ec7dd7630c2e1c Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 19 Jan 2023 12:25:12 +0100 Subject: [PATCH 06/52] add ribbon + test + docs --- packages/core/pattern.mjs | 10 ++++++++++ packages/core/test/pattern.test.mjs | 7 +++++++ test/__snapshots__/examples.test.mjs.snap | 21 +++++++++++++++++++++ website/src/pages/learn/time-modifiers.mdx | 4 ++++ 4 files changed, 42 insertions(+) diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index c12cf2b00..2d7a8f43a 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -2028,6 +2028,16 @@ export const bypass = register('bypass', function (on, pat) { return on ? silence : pat; }); +/** + * Loops the pattern inside at `offset` for `cycles`. + * @param {number} offset start point of loop in cycles + * @param {number} cycles loop length in cycles + * @example + * // Looping a portion of randomness + * note(irand(8).segment(4).scale('C3 minor')).ribbon(1337, 2) + */ +export const ribbon = register('ribbon', (offset, cycles, pat) => pat.early(offset).restart(pure(1).slow(cycles))); + // sets absolute duration of haps // TODO - fix export const duration = register('duration', function (value, pat) { diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index a4c04e809..31b080b68 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -914,6 +914,13 @@ describe('Pattern', () => { expect(run(4).firstCycle()).toStrictEqual(sequence(0, 1, 2, 3).firstCycle()); }); }); + describe('ribbon', () => { + it('Can ribbon', () => { + expect(cat(0, 1, 2, 3, 4, 5, 6, 7).ribbon(2, 4).fast(4).firstCycle()).toStrictEqual( + sequence(2, 3, 4, 5).firstCycle(), + ); + }); + }); describe('linger', () => { it('Can linger on the first quarter of a cycle', () => { expect(sequence(0, 1, 2, 3, 4, 5, 6, 7).linger(0.25).firstCycle()).toStrictEqual( diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index f9156bc36..698d8209d 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -3066,6 +3066,27 @@ exports[`runs examples > example "rev" example index 0 1`] = ` ] `; +exports[`runs examples > example "ribbon" example index 0 1`] = ` +[ + "[ 0/1 → 1/4 | note:C3 ]", + "[ 1/4 → 1/2 | note:G3 ]", + "[ 1/2 → 3/4 | note:Eb3 ]", + "[ 3/4 → 1/1 | note:Bb3 ]", + "[ 1/1 → 5/4 | note:C3 ]", + "[ 5/4 → 3/2 | note:D3 ]", + "[ 3/2 → 7/4 | note:G3 ]", + "[ 7/4 → 2/1 | note:Eb3 ]", + "[ 2/1 → 9/4 | note:C3 ]", + "[ 9/4 → 5/2 | note:G3 ]", + "[ 5/2 → 11/4 | note:Eb3 ]", + "[ 11/4 → 3/1 | note:Bb3 ]", + "[ 3/1 → 13/4 | note:C3 ]", + "[ 13/4 → 7/2 | note:D3 ]", + "[ 7/2 → 15/4 | note:G3 ]", + "[ 15/4 → 4/1 | note:Eb3 ]", +] +`; + exports[`runs examples > example "room" example index 0 1`] = ` [ "[ 0/1 → 1/2 | s:bd room:0 ]", diff --git a/website/src/pages/learn/time-modifiers.mdx b/website/src/pages/learn/time-modifiers.mdx index 8183a7df6..41e871130 100644 --- a/website/src/pages/learn/time-modifiers.mdx +++ b/website/src/pages/learn/time-modifiers.mdx @@ -101,3 +101,7 @@ Some of these have equivalent operators in the Mini Notation: ## cpm + +## ribbon + + From 217e348fc3190a0ab1e66d223fbc48c1dd28b87f Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Fri, 27 Jan 2023 11:10:37 +0000 Subject: [PATCH 07/52] Notes are not essential :) (#393) * Notes are not essential :) * Update notes.mdx --- website/src/pages/learn/notes.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/pages/learn/notes.mdx b/website/src/pages/learn/notes.mdx index d4209c0f0..e2d2c7bb8 100644 --- a/website/src/pages/learn/notes.mdx +++ b/website/src/pages/learn/notes.mdx @@ -9,7 +9,7 @@ import { JsDoc } from '../../docs/JsDoc'; # Notes -Pitches are an essential building block for music. +Pitches are an important building block in many musical traditions. In Strudel, pitches can be expressed as note names, note numbers or frequencies. Here's the same pattern written in three different ways: From 35f20407171cda10aa318cc570cd3ed529c55b98 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 20:14:26 +0100 Subject: [PATCH 08/52] use pnpm workspaces --- package.json | 8 +- packages/core/fraction.mjs | 2 +- packages/core/test/pattern.test.mjs | 2 +- packages/csound/package.json | 2 + packages/eval/package.json | 3 + packages/midi/package.json | 4 +- packages/osc/package.json | 3 +- packages/react/package.json | 3 + packages/serial/package.json | 5 +- pnpm-lock.yaml | 11728 ++++++++++++++++++++++++++ pnpm-workspace.yaml | 4 + website/astro.config.mjs | 6 + website/package.json | 12 + website/src/repl/Repl.jsx | 2 - 14 files changed, 11776 insertions(+), 8 deletions(-) create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/package.json b/package.json index 6d60cfb72..d385d82f0 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,12 @@ "lerna": "^4.0.0", "prettier": "^2.8.1", "rollup-plugin-visualizer": "^5.8.1", - "vitest": "^0.25.7" + "vitest": "^0.25.7", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/transpiler": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", + "@strudel.cycles/mini": "workspace:*", + "@strudel.cycles/tonal": "workspace:*", + "@strudel.cycles/xen": "workspace:*" } } diff --git a/packages/core/fraction.mjs b/packages/core/fraction.mjs index 3af73e0ee..92ba51569 100644 --- a/packages/core/fraction.mjs +++ b/packages/core/fraction.mjs @@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see . */ -import Fraction from 'fraction.js'; +import { Fraction } from 'fraction.js'; import { TimeSpan } from './timespan.mjs'; // Returns the start of the cycle. diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index 31b080b68..93dba47dd 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see . */ -import Fraction from 'fraction.js'; +import { Fraction } from 'fraction.js'; import { describe, it, expect } from 'vitest'; diff --git a/packages/csound/package.json b/packages/csound/package.json index 321da4eba..8770558a5 100644 --- a/packages/csound/package.json +++ b/packages/csound/package.json @@ -27,6 +27,8 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", "@csound/browser": "^6.18.3" } } diff --git a/packages/eval/package.json b/packages/eval/package.json index 506cc77dc..e837b7826 100644 --- a/packages/eval/package.json +++ b/packages/eval/package.json @@ -35,5 +35,8 @@ "shift-parser": "^8.0.0", "shift-spec": "^2019.0.0", "shift-traverser": "^1.0.0" + }, + "devDependencies": { + "@strudel.cycles/mini": "workspace:*" } } diff --git a/packages/midi/package.json b/packages/midi/package.json index 56db895f3..0ce2e088c 100644 --- a/packages/midi/package.json +++ b/packages/midi/package.json @@ -21,7 +21,9 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/tone": "^0.5.0", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", + "@strudel.cycles/tone": "workspace:*", "tone": "^14.7.77", "webmidi": "^3.0.21" } diff --git a/packages/osc/package.json b/packages/osc/package.json index e79d16134..7db0b0525 100644 --- a/packages/osc/package.json +++ b/packages/osc/package.json @@ -31,7 +31,8 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "osc-js": "^2.4.0" + "osc-js": "^2.4.0", + "@strudel.cycles/core": "workspace:*" }, "devDependencies": { "pkg": "^5.7.0" diff --git a/packages/react/package.json b/packages/react/package.json index 26f5f1d60..96acd908c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -39,6 +39,9 @@ "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { "@codemirror/lang-javascript": "^6.1.1", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.7.3", + "@lezer/highlight": "^1.1.3", "@strudel.cycles/core": "^0.5.0", "@strudel.cycles/tone": "^0.5.0", "@strudel.cycles/transpiler": "^0.5.0", diff --git a/packages/serial/package.json b/packages/serial/package.json index 227e5fbfd..4ca223cd1 100644 --- a/packages/serial/package.json +++ b/packages/serial/package.json @@ -19,5 +19,8 @@ "bugs": { "url": "https://github.com/tidalcycles/strudel/issues" }, - "homepage": "https://github.com/tidalcycles/strudel#readme" + "homepage": "https://github.com/tidalcycles/strudel#readme", + "dependencies": { + "@strudel.cycles/core": "workspace:*" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..e36c33f0f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,11728 @@ +lockfileVersion: 5.4 + +importers: + + .: + specifiers: + '@strudel.cycles/core': workspace:* + '@strudel.cycles/mini': workspace:* + '@strudel.cycles/tonal': workspace:* + '@strudel.cycles/transpiler': workspace:* + '@strudel.cycles/webaudio': workspace:* + '@strudel.cycles/xen': workspace:* + '@vitest/ui': ^0.25.7 + c8: ^7.12.0 + canvas: ^2.11.0 + dependency-tree: ^9.0.0 + eslint: ^8.28.0 + events: ^3.3.0 + gh-pages: ^4.0.0 + jsdoc: ^3.6.10 + jsdoc-json: ^2.0.2 + jsdoc-to-markdown: ^7.1.1 + lerna: ^4.0.0 + prettier: ^2.8.1 + rollup-plugin-visualizer: ^5.8.1 + vitest: ^0.25.7 + devDependencies: + '@strudel.cycles/core': link:packages/core + '@strudel.cycles/mini': link:packages/mini + '@strudel.cycles/tonal': link:packages/tonal + '@strudel.cycles/transpiler': link:packages/transpiler + '@strudel.cycles/webaudio': link:packages/webaudio + '@strudel.cycles/xen': link:packages/xen + '@vitest/ui': 0.25.8 + c8: 7.12.0 + canvas: 2.11.0 + dependency-tree: 9.0.0 + eslint: 8.32.0 + events: 3.3.0 + gh-pages: 4.0.0 + jsdoc: 3.6.11 + jsdoc-json: 2.0.2 + jsdoc-to-markdown: 7.1.1 + lerna: 4.0.0 + prettier: 2.8.3 + rollup-plugin-visualizer: 5.9.0 + vitest: 0.25.8_@vitest+ui@0.25.8 + + packages/core: + specifiers: + fraction.js: ^4.2.0 + dependencies: + fraction.js: 4.2.0 + + packages/csound: + specifiers: + '@csound/browser': ^6.18.3 + '@strudel.cycles/core': workspace:* + '@strudel.cycles/webaudio': workspace:* + dependencies: + '@csound/browser': 6.18.5 + '@strudel.cycles/core': link:../core + '@strudel.cycles/webaudio': link:../webaudio + + packages/embed: + specifiers: {} + + packages/eval: + specifiers: + '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/mini': workspace:* + estraverse: ^5.3.0 + shift-ast: ^7.0.0 + shift-codegen: ^8.1.0 + shift-parser: ^8.0.0 + shift-spec: ^2019.0.0 + shift-traverser: ^1.0.0 + dependencies: + '@strudel.cycles/core': link:../core + estraverse: 5.3.0 + shift-ast: 7.0.0 + shift-codegen: 8.1.0 + shift-parser: 8.0.0 + shift-spec: 2019.0.0 + shift-traverser: 1.0.0 + devDependencies: + '@strudel.cycles/mini': link:../mini + + packages/midi: + specifiers: + '@strudel.cycles/core': workspace:* + '@strudel.cycles/tone': workspace:* + '@strudel.cycles/webaudio': workspace:* + tone: ^14.7.77 + webmidi: ^3.0.21 + dependencies: + '@strudel.cycles/core': link:../core + '@strudel.cycles/tone': link:../tone + '@strudel.cycles/webaudio': link:../webaudio + tone: 14.7.77 + webmidi: 3.1.2 + + packages/mini: + specifiers: + '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/eval': ^0.5.0 + '@strudel.cycles/tone': ^0.5.0 + peggy: ^2.0.1 + dependencies: + '@strudel.cycles/core': link:../core + '@strudel.cycles/eval': link:../eval + '@strudel.cycles/tone': link:../tone + devDependencies: + peggy: 2.0.1 + + packages/osc: + specifiers: + '@strudel.cycles/core': workspace:* + osc-js: ^2.4.0 + pkg: ^5.7.0 + dependencies: + '@strudel.cycles/core': link:../core + osc-js: 2.4.0 + devDependencies: + pkg: 5.8.0 + + packages/react: + specifiers: + '@codemirror/lang-javascript': ^6.1.1 + '@codemirror/state': ^6.2.0 + '@codemirror/view': ^6.7.3 + '@lezer/highlight': ^1.1.3 + '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/tone': ^0.5.0 + '@strudel.cycles/transpiler': ^0.5.0 + '@strudel.cycles/webaudio': ^0.5.0 + '@types/react': ^17.0.2 + '@types/react-dom': ^17.0.2 + '@uiw/codemirror-themes': ^4.12.4 + '@uiw/react-codemirror': ^4.12.4 + '@vitejs/plugin-react': ^2.2.0 + autoprefixer: ^10.4.7 + postcss: ^8.4.18 + react: ^17.0.2 + react-dom: ^17.0.2 + react-hook-inview: ^4.5.0 + tailwindcss: ^3.0.24 + vite: ^3.2.2 + dependencies: + '@codemirror/lang-javascript': 6.1.2 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + '@lezer/highlight': 1.1.3 + '@strudel.cycles/core': link:../core + '@strudel.cycles/tone': link:../tone + '@strudel.cycles/transpiler': link:../transpiler + '@strudel.cycles/webaudio': link:../webaudio + '@uiw/codemirror-themes': 4.19.7_a4vbhepr4qhxm5cldqd4jpyase + '@uiw/react-codemirror': 4.19.7_b6o5qp6ml4k7skggixohr5abde + react-hook-inview: 4.5.0_sfoxds7t5ydpegc3knd667wn6m + devDependencies: + '@types/react': 17.0.53 + '@types/react-dom': 17.0.18 + '@vitejs/plugin-react': 2.2.0_vite@3.2.5 + autoprefixer: 10.4.13_postcss@8.4.21 + postcss: 8.4.21 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + tailwindcss: 3.2.4_postcss@8.4.21 + vite: 3.2.5 + + packages/serial: + specifiers: + '@strudel.cycles/core': workspace:* + dependencies: + '@strudel.cycles/core': link:../core + + packages/soundfonts: + specifiers: + '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/webaudio': ^0.5.0 + node-fetch: ^3.2.6 + sfumato: ^0.1.2 + soundfont2: ^0.4.0 + dependencies: + '@strudel.cycles/core': link:../core + '@strudel.cycles/webaudio': link:../webaudio + sfumato: 0.1.2 + soundfont2: 0.4.0 + devDependencies: + node-fetch: 3.3.0 + + packages/tonal: + specifiers: + '@strudel.cycles/core': ^0.5.0 + '@tonaljs/tonal': ^4.7.2 + chord-voicings: ^0.0.1 + webmidi: ^3.0.21 + dependencies: + '@strudel.cycles/core': link:../core + '@tonaljs/tonal': 4.10.0 + chord-voicings: 0.0.1 + webmidi: 3.1.2 + + packages/tone: + specifiers: + '@strudel.cycles/core': ^0.5.0 + tone: ^14.7.77 + dependencies: + '@strudel.cycles/core': link:../core + tone: 14.7.77 + + packages/transpiler: + specifiers: + '@strudel.cycles/core': ^0.5.0 + acorn: ^8.8.1 + escodegen: ^2.0.0 + estree-walker: ^3.0.1 + dependencies: + '@strudel.cycles/core': link:../core + acorn: 8.8.2 + escodegen: 2.0.0 + estree-walker: 3.0.3 + + packages/webaudio: + specifiers: + '@strudel.cycles/core': ^0.5.0 + dependencies: + '@strudel.cycles/core': link:../core + + packages/webdirt: + specifiers: + '@strudel.cycles/core': ^0.5.0 + WebDirt: github:dktr0/WebDirt + dependencies: + '@strudel.cycles/core': link:../core + WebDirt: github.com/dktr0/WebDirt/8bdd7478ae05f74cbd5003936da23ce9bc6fc7c7 + + packages/xen: + specifiers: + '@strudel.cycles/core': ^0.5.0 + dependencies: + '@strudel.cycles/core': link:../core + + website: + specifiers: + '@algolia/client-search': ^4.13.1 + '@astrojs/mdx': ^0.13.0 + '@astrojs/preact': ^1.2.0 + '@astrojs/react': ^1.2.2 + '@astrojs/tailwind': ^2.1.3 + '@docsearch/css': ^3.1.0 + '@docsearch/react': ^3.1.0 + '@headlessui/react': ^1.7.7 + '@heroicons/react': ^2.0.13 + '@strudel.cycles/core': workspace:* + '@strudel.cycles/csound': workspace:* + '@strudel.cycles/midi': workspace:* + '@strudel.cycles/mini': workspace:* + '@strudel.cycles/osc': workspace:* + '@strudel.cycles/react': workspace:* + '@strudel.cycles/serial': workspace:* + '@strudel.cycles/soundfonts': workspace:* + '@strudel.cycles/tonal': workspace:* + '@strudel.cycles/transpiler': workspace:* + '@strudel.cycles/webaudio': workspace:* + '@strudel.cycles/xen': workspace:* + '@supabase/supabase-js': ^1.35.3 + '@tailwindcss/typography': ^0.5.8 + '@types/node': ^18.0.0 + '@types/react': ^18.0.26 + '@types/react-dom': ^18.0.9 + astro: ^1.7.2 + html-escaper: ^3.0.3 + nanoid: ^4.0.0 + preact: ^10.7.3 + react: ^18.2.0 + react-dom: ^18.2.0 + rehype-autolink-headings: ^6.1.1 + rehype-slug: ^5.0.1 + remark-toc: ^8.0.1 + tailwindcss: ^3.2.4 + dependencies: + '@algolia/client-search': 4.14.3 + '@astrojs/mdx': 0.13.0 + '@astrojs/preact': 1.2.0_preact@10.11.3 + '@astrojs/react': 1.2.2_fxtgt6bjwd6p4cwoordejim2zi + '@astrojs/tailwind': 2.1.3_tailwindcss@3.2.4 + '@docsearch/css': 3.3.2 + '@docsearch/react': 3.3.2_y6lbs4o5th67cuzjdmtw5eqh7a + '@headlessui/react': 1.7.8_biqbaboplfbrettd7655fr4n2y + '@heroicons/react': 2.0.14_react@18.2.0 + '@strudel.cycles/core': link:../packages/core + '@strudel.cycles/csound': link:../packages/csound + '@strudel.cycles/midi': link:../packages/midi + '@strudel.cycles/mini': link:../packages/mini + '@strudel.cycles/osc': link:../packages/osc + '@strudel.cycles/react': link:../packages/react + '@strudel.cycles/serial': link:../packages/serial + '@strudel.cycles/soundfonts': link:../packages/soundfonts + '@strudel.cycles/tonal': link:../packages/tonal + '@strudel.cycles/transpiler': link:../packages/transpiler + '@strudel.cycles/webaudio': link:../packages/webaudio + '@strudel.cycles/xen': link:../packages/xen + '@supabase/supabase-js': 1.35.7 + '@tailwindcss/typography': 0.5.9_tailwindcss@3.2.4 + '@types/node': 18.11.18 + '@types/react': 18.0.27 + '@types/react-dom': 18.0.10 + astro: 1.9.2_@types+node@18.11.18 + nanoid: 4.0.0 + preact: 10.11.3 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + rehype-autolink-headings: 6.1.1 + rehype-slug: 5.1.0 + remark-toc: 8.0.1 + tailwindcss: 3.2.4 + devDependencies: + html-escaper: 3.0.3 + +packages: + + /@algolia/autocomplete-core/1.7.4: + resolution: {integrity: sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==} + dependencies: + '@algolia/autocomplete-shared': 1.7.4 + dev: false + + /@algolia/autocomplete-preset-algolia/1.7.4_dk4ct527ug5whbfokpeal2wzha: + resolution: {integrity: sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + dependencies: + '@algolia/autocomplete-shared': 1.7.4 + '@algolia/client-search': 4.14.3 + algoliasearch: 4.14.3 + dev: false + + /@algolia/autocomplete-shared/1.7.4: + resolution: {integrity: sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==} + dev: false + + /@algolia/cache-browser-local-storage/4.14.3: + resolution: {integrity: sha512-hWH1yCxgG3+R/xZIscmUrWAIBnmBFHH5j30fY/+aPkEZWt90wYILfAHIOZ1/Wxhho5SkPfwFmT7ooX2d9JeQBw==} + dependencies: + '@algolia/cache-common': 4.14.3 + dev: false + + /@algolia/cache-common/4.14.3: + resolution: {integrity: sha512-oZJofOoD9FQOwiGTzyRnmzvh3ZP8WVTNPBLH5xU5JNF7drDbRT0ocVT0h/xB2rPHYzOeXRrLaQQBwRT/CKom0Q==} + dev: false + + /@algolia/cache-in-memory/4.14.3: + resolution: {integrity: sha512-ES0hHQnzWjeioLQf5Nq+x1AWdZJ50znNPSH3puB/Y4Xsg4Av1bvLmTJe7SY2uqONaeMTvL0OaVcoVtQgJVw0vg==} + dependencies: + '@algolia/cache-common': 4.14.3 + dev: false + + /@algolia/client-account/4.14.3: + resolution: {integrity: sha512-PBcPb0+f5Xbh5UfLZNx2Ow589OdP8WYjB4CnvupfYBrl9JyC1sdH4jcq/ri8osO/mCZYjZrQsKAPIqW/gQmizQ==} + dependencies: + '@algolia/client-common': 4.14.3 + '@algolia/client-search': 4.14.3 + '@algolia/transporter': 4.14.3 + dev: false + + /@algolia/client-analytics/4.14.3: + resolution: {integrity: sha512-eAwQq0Hb/aauv9NhCH5Dp3Nm29oFx28sayFN2fdOWemwSeJHIl7TmcsxVlRsO50fsD8CtPcDhtGeD3AIFLNvqw==} + dependencies: + '@algolia/client-common': 4.14.3 + '@algolia/client-search': 4.14.3 + '@algolia/requester-common': 4.14.3 + '@algolia/transporter': 4.14.3 + dev: false + + /@algolia/client-common/4.14.3: + resolution: {integrity: sha512-jkPPDZdi63IK64Yg4WccdCsAP4pHxSkr4usplkUZM5C1l1oEpZXsy2c579LQ0rvwCs5JFmwfNG4ahOszidfWPw==} + dependencies: + '@algolia/requester-common': 4.14.3 + '@algolia/transporter': 4.14.3 + dev: false + + /@algolia/client-personalization/4.14.3: + resolution: {integrity: sha512-UCX1MtkVNgaOL9f0e22x6tC9e2H3unZQlSUdnVaSKpZ+hdSChXGaRjp2UIT7pxmPqNCyv51F597KEX5WT60jNg==} + dependencies: + '@algolia/client-common': 4.14.3 + '@algolia/requester-common': 4.14.3 + '@algolia/transporter': 4.14.3 + dev: false + + /@algolia/client-search/4.14.3: + resolution: {integrity: sha512-I2U7xBx5OPFdPLA8AXKUPPxGY3HDxZ4r7+mlZ8ZpLbI8/ri6fnu6B4z3wcL7sgHhDYMwnAE8Xr0AB0h3Hnkp4A==} + dependencies: + '@algolia/client-common': 4.14.3 + '@algolia/requester-common': 4.14.3 + '@algolia/transporter': 4.14.3 + dev: false + + /@algolia/logger-common/4.14.3: + resolution: {integrity: sha512-kUEAZaBt/J3RjYi8MEBT2QEexJR2kAE2mtLmezsmqMQZTV502TkHCxYzTwY2dE7OKcUTxi4OFlMuS4GId9CWPw==} + dev: false + + /@algolia/logger-console/4.14.3: + resolution: {integrity: sha512-ZWqAlUITktiMN2EiFpQIFCJS10N96A++yrexqC2Z+3hgF/JcKrOxOdT4nSCQoEPvU4Ki9QKbpzbebRDemZt/hw==} + dependencies: + '@algolia/logger-common': 4.14.3 + dev: false + + /@algolia/requester-browser-xhr/4.14.3: + resolution: {integrity: sha512-AZeg2T08WLUPvDncl2XLX2O67W5wIO8MNaT7z5ii5LgBTuk/rU4CikTjCe2xsUleIZeFl++QrPAi4Bdxws6r/Q==} + dependencies: + '@algolia/requester-common': 4.14.3 + dev: false + + /@algolia/requester-common/4.14.3: + resolution: {integrity: sha512-RrRzqNyKFDP7IkTuV3XvYGF9cDPn9h6qEDl595lXva3YUk9YSS8+MGZnnkOMHvjkrSCKfoLeLbm/T4tmoIeclw==} + dev: false + + /@algolia/requester-node-http/4.14.3: + resolution: {integrity: sha512-O5wnPxtDRPuW2U0EaOz9rMMWdlhwP0J0eSL1Z7TtXF8xnUeeUyNJrdhV5uy2CAp6RbhM1VuC3sOJcIR6Av+vbA==} + dependencies: + '@algolia/requester-common': 4.14.3 + dev: false + + /@algolia/transporter/4.14.3: + resolution: {integrity: sha512-2qlKlKsnGJ008exFRb5RTeTOqhLZj0bkMCMVskxoqWejs2Q2QtWmsiH98hDfpw0fmnyhzHEt0Z7lqxBYp8bW2w==} + dependencies: + '@algolia/cache-common': 4.14.3 + '@algolia/logger-common': 4.14.3 + '@algolia/requester-common': 4.14.3 + dev: false + + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 + + /@astrojs/compiler/0.31.4: + resolution: {integrity: sha512-6bBFeDTtPOn4jZaiD3p0f05MEGQL9pw2Zbfj546oFETNmjJFWO3nzHz6/m+P53calknCvyVzZ5YhoBLIvzn5iw==} + dev: false + + /@astrojs/language-server/0.28.3: + resolution: {integrity: sha512-fPovAX/X46eE2w03jNRMpQ7W9m2mAvNt4Ay65lD9wl1Z5vIQYxlg7Enp9qP225muTr4jSVB5QiLumFJmZMAaVA==} + hasBin: true + dependencies: + '@vscode/emmet-helper': 2.8.6 + events: 3.3.0 + prettier: 2.8.3 + prettier-plugin-astro: 0.7.2 + source-map: 0.7.4 + vscode-css-languageservice: 6.2.3 + vscode-html-languageservice: 5.0.4 + vscode-languageserver: 8.0.2 + vscode-languageserver-protocol: 3.17.2 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.2 + vscode-uri: 3.0.7 + dev: false + + /@astrojs/markdown-remark/1.2.0: + resolution: {integrity: sha512-Cb+uhSuukyfERknfJ8K4iJLeKJaiZWi1BTwPS4fzw0bc9kGKe5VeTRzd2E25+vaMnRTk0tN/y6QfYEMMN3Q97g==} + dependencies: + '@astrojs/micromark-extension-mdx-jsx': 1.0.3 + '@astrojs/prism': 1.0.2 + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + github-slugger: 1.5.0 + hast-util-to-html: 8.0.4 + import-meta-resolve: 2.2.1 + mdast-util-from-markdown: 1.3.0 + mdast-util-mdx-expression: 1.3.1 + mdast-util-mdx-jsx: 1.2.0 + micromark-extension-mdx-expression: 1.0.4 + micromark-extension-mdx-md: 1.0.0 + micromark-util-combine-extensions: 1.0.0 + rehype-raw: 6.1.1 + rehype-stringify: 9.0.3 + remark-gfm: 3.0.1 + remark-parse: 10.0.1 + remark-rehype: 10.1.0 + remark-smartypants: 2.0.0 + shiki: 0.11.1 + unified: 10.1.2 + unist-util-map: 3.1.3 + unist-util-visit: 4.1.2 + vfile: 5.3.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/mdx/0.13.0: + resolution: {integrity: sha512-2D/O5AjCBQQ/PLx3P/WysACdFxz97iQPu55hy9pc+u04a+fMFuVdKm9ftWXpsNHL2SXbKb7uRpcuFw93FnRNDw==} + engines: {node: ^14.18.0 || >=16.12.0} + dependencies: + '@astrojs/prism': 1.0.2 + '@mdx-js/mdx': 2.2.1 + '@mdx-js/rollup': 2.2.1 + acorn: 8.8.2 + es-module-lexer: 0.10.5 + estree-util-visit: 1.2.1 + github-slugger: 1.5.0 + gray-matter: 4.0.3 + kleur: 4.1.5 + rehype-raw: 6.1.1 + remark-frontmatter: 4.0.1 + remark-gfm: 3.0.1 + remark-smartypants: 2.0.0 + shiki: 0.11.1 + unist-util-visit: 4.1.2 + vfile: 5.3.6 + transitivePeerDependencies: + - rollup + - supports-color + dev: false + + /@astrojs/micromark-extension-mdx-jsx/1.0.3: + resolution: {integrity: sha512-O15+i2DGG0qb1R/1SYbFXgOKDGbYdV8iJMtuboVb1S9YFQfMOJxaCMco0bhXQI7PmZcQ4pZWIjT5oZ64dXUtRA==} + dependencies: + '@types/acorn': 4.0.6 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.7 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + vfile-message: 3.1.3 + dev: false + + /@astrojs/preact/1.2.0_preact@10.11.3: + resolution: {integrity: sha512-Vm8rkBIE3cNlxhFoUO2Rsv5RxSP7x7Oi9J6qz8+91lwAIjdm6oyDOrrBmdGqsONJ1MqnjPG4EPmIZJGuFtz2SQ==} + engines: {node: ^14.18.0 || >=16.12.0} + peerDependencies: + preact: ^10.6.5 + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + '@preact/signals': 1.1.3_preact@10.11.3 + babel-plugin-module-resolver: 4.1.0 + preact: 10.11.3 + preact-render-to-string: 5.2.6_preact@10.11.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/prism/1.0.2: + resolution: {integrity: sha512-o3cUVoAuALDqdN5puNlsN2eO4Yi1kDh68YO8V7o6U4Ts+J/mMayzlJ7JsgYAmob0xrf/XnADVgu8khfMv/w3uA==} + engines: {node: ^14.18.0 || >=16.12.0} + dependencies: + prismjs: 1.29.0 + dev: false + + /@astrojs/react/1.2.2_fxtgt6bjwd6p4cwoordejim2zi: + resolution: {integrity: sha512-ab9fYvzkC74J7N+M3DWQuZgwu7sYjW0aLO3sEAdCX/jZZz+0BhrqS8m9QjtGJyQK/niF4tgJjpPfadopxKc56g==} + engines: {node: ^14.18.0 || >=16.12.0} + peerDependencies: + '@types/react': ^17.0.50 || ^18.0.21 + '@types/react-dom': ^17.0.17 || ^18.0.6 + react: ^17.0.2 || ^18.0.0 + react-dom: ^17.0.2 || ^18.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + '@types/react': 18.0.27 + '@types/react-dom': 18.0.10 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/tailwind/2.1.3_tailwindcss@3.2.4: + resolution: {integrity: sha512-W7UUUBJ3itDGcvJPvk+M/eNKFlLBYGODIzPsJ3zuehNzcJDhv/Ues+TzrpSvd0FaKfmV9Zlq3ZtToy96xxJU6Q==} + peerDependencies: + tailwindcss: ^3.0.24 + dependencies: + '@proload/core': 0.3.3 + autoprefixer: 10.4.13_postcss@8.4.21 + postcss: 8.4.21 + tailwindcss: 3.2.4 + dev: false + + /@astrojs/telemetry/1.0.1: + resolution: {integrity: sha512-SJVfZHp00f8VZsT1fsx1+6acJGUNt/84xZytV5znPzzNE8RXjlE0rv03llgTsEeUHYZc6uJah91jNojS7RldFg==} + engines: {node: ^14.18.0 || >=16.12.0} + dependencies: + ci-info: 3.7.1 + debug: 4.3.4 + dlv: 1.1.3 + dset: 3.1.2 + is-docker: 3.0.0 + is-wsl: 2.2.0 + node-fetch: 3.3.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@astrojs/webapi/1.1.1: + resolution: {integrity: sha512-yeUvP27PoiBK/WCxyQzC4HLYZo4Hg6dzRd/dTsL50WGlAQVCwWcqzVJrIZKvzNDNaW/fIXutZTmdj6nec0PIGg==} + dependencies: + global-agent: 3.0.0 + node-fetch: 3.3.0 + dev: false + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/compat-data/7.20.14: + resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} + engines: {node: '>=6.9.0'} + + /@babel/core/7.20.12: + resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.14 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helpers': 7.20.13 + '@babel/parser': 7.20.13 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/generator/7.18.2: + resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.18.4 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + dev: true + + /@babel/generator/7.20.14: + resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.14 + '@babel/core': 7.20.12 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 + + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + + /@babel/helper-module-transforms/7.20.11: + resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.7 + + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} + + /@babel/helpers/7.20.13: + resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser/7.18.4: + resolution: {integrity: sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.18.4 + dev: true + + /@babel/parser/7.20.13: + resolution: {integrity: sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.20.7 + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + dev: true + + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: + resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-jsx/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 + + /@babel/runtime/7.20.13: + resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: false + + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.20.13 + '@babel/types': 7.20.7 + + /@babel/traverse/7.20.13: + resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.14 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.20.13 + '@babel/types': 7.20.7 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types/7.18.4: + resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types/7.20.7: + resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@codemirror/autocomplete/6.4.0_a4vbhepr4qhxm5cldqd4jpyase: + resolution: {integrity: sha512-HLF2PnZAm1s4kGs30EiqKMgD7XsYaQ0XJnMR0rofEWQ5t5D60SfqpDIkIh1ze5tiEbyUWm8+VJ6W1/erVvBMIA==} + peerDependencies: + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + dependencies: + '@codemirror/language': 6.4.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + '@lezer/common': 1.0.2 + dev: false + + /@codemirror/commands/6.2.0: + resolution: {integrity: sha512-+00smmZBradoGFEkRjliN7BjqPh/Hx0KCHWOEibUmflUqZz2RwBTU0MrVovEEHozhx3AUSGcO/rl3/5f9e9Biw==} + dependencies: + '@codemirror/language': 6.4.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + '@lezer/common': 1.0.2 + dev: false + + /@codemirror/lang-javascript/6.1.2: + resolution: {integrity: sha512-OcwLfZXdQ1OHrLiIcKCn7MqZ7nx205CMKlhe+vL88pe2ymhT9+2P+QhwkYGxMICj8TDHyp8HFKVwpiisUT7iEQ==} + dependencies: + '@codemirror/autocomplete': 6.4.0_a4vbhepr4qhxm5cldqd4jpyase + '@codemirror/language': 6.4.0 + '@codemirror/lint': 6.1.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + '@lezer/common': 1.0.2 + '@lezer/javascript': 1.4.1 + dev: false + + /@codemirror/language/6.4.0: + resolution: {integrity: sha512-Wzb7GnNj8vnEtbPWiOy9H0m1fBtE28kepQNGLXekU2EEZv43BF865VKITUn+NoV8OpW6gRtvm29YEhqm46927Q==} + dependencies: + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + '@lezer/common': 1.0.2 + '@lezer/highlight': 1.1.3 + '@lezer/lr': 1.3.1 + style-mod: 4.0.0 + dev: false + + /@codemirror/lint/6.1.0: + resolution: {integrity: sha512-mdvDQrjRmYPvQ3WrzF6Ewaao+NWERYtpthJvoQ3tK3t/44Ynhk8ZGjTSL9jMEv8CgSMogmt75X8ceOZRDSXHtQ==} + dependencies: + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + crelt: 1.0.5 + dev: false + + /@codemirror/search/6.2.3: + resolution: {integrity: sha512-V9n9233lopQhB1dyjsBK2Wc1i+8hcCqxl1wQ46c5HWWLePoe4FluV3TGHoZ04rBRlGjNyz9DTmpJErig8UE4jw==} + dependencies: + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + crelt: 1.0.5 + dev: false + + /@codemirror/state/6.2.0: + resolution: {integrity: sha512-69QXtcrsc3RYtOtd+GsvczJ319udtBf1PTrr2KbLWM/e2CXUPnh0Nz9AUo8WfhSQ7GeL8dPVNUmhQVgpmuaNGA==} + dev: false + + /@codemirror/theme-one-dark/6.1.0: + resolution: {integrity: sha512-AiTHtFRu8+vWT9wWUWDM+cog6ZwgivJogB1Tm/g40NIpLwph7AnmxrSzWfvJN5fBVufsuwBxecQCNmdcR5D7Aw==} + dependencies: + '@codemirror/language': 6.4.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + '@lezer/highlight': 1.1.3 + dev: false + + /@codemirror/view/6.7.3: + resolution: {integrity: sha512-Lt+4POnhXrZFfHOdPzXEHxrzwdy7cjqYlMkOWvoFGi6/bAsjzlFfr0NY3B15B/PGx+cDFgM1hlc12wvYeZbGLw==} + dependencies: + '@codemirror/state': 6.2.0 + style-mod: 4.0.0 + w3c-keyname: 2.2.6 + dev: false + + /@csound/browser/6.18.5: + resolution: {integrity: sha512-PrffNroCFgns9ct6O0e1anyxZWdDPcPA8y4Ei9t96DgkRba/wvxJayXfLJvEdlTQy+LVw1es92TDODtEYHJeKw==} + dependencies: + comlink: 4.3.1 + eslint-plugin-n: 15.6.1 + eventemitter3: 4.0.7 + google-closure-compiler: 20221102.0.1 + google-closure-library: 20221102.0.0 + path-browserify: 1.0.1 + rambda: 7.4.0 + rimraf: 3.0.2 + standardized-audio-context: 25.3.37 + text-encoding-shim: 1.0.5 + unmute-ios-audio: 3.3.0 + web-midi-api: 2.2.2 + transitivePeerDependencies: + - eslint + dev: false + + /@docsearch/css/3.3.2: + resolution: {integrity: sha512-dctFYiwbvDZkksMlsmc7pj6W6By/EjnVXJq5TEPd05MwQe+dcdHJgaIn1c8wfsucxHpIsdrUcgSkACHCq6aIhw==} + dev: false + + /@docsearch/react/3.3.2_y6lbs4o5th67cuzjdmtw5eqh7a: + resolution: {integrity: sha512-ugILab2TYKSh6IEHf6Z9xZbOovsYbsdfo60PBj+Bw+oMJ1MHJ7pBt1TTcmPki1hSgg8mysgKy2hDiVdPm7XWSQ==} + peerDependencies: + '@types/react': '>= 16.8.0 < 19.0.0' + react: '>= 16.8.0 < 19.0.0' + react-dom: '>= 16.8.0 < 19.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + dependencies: + '@algolia/autocomplete-core': 1.7.4 + '@algolia/autocomplete-preset-algolia': 1.7.4_dk4ct527ug5whbfokpeal2wzha + '@docsearch/css': 3.3.2 + '@types/react': 18.0.27 + algoliasearch: 4.14.3 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - '@algolia/client-search' + dev: false + + /@emmetio/abbreviation/2.2.3: + resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} + dependencies: + '@emmetio/scanner': 1.0.0 + dev: false + + /@emmetio/css-abbreviation/2.1.4: + resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} + dependencies: + '@emmetio/scanner': 1.0.0 + dev: false + + /@emmetio/scanner/1.0.0: + resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} + dev: false + + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.16.17: + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.16.17: + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.16.17: + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.16.17: + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.16.17: + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.16.17: + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.16.17: + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.16.17: + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-loong64/0.16.17: + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.16.17: + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.16.17: + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.16.17: + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.16.17: + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.16.17: + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.16.17: + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.16.17: + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.16.17: + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.16.17: + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.16.17: + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.16.17: + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@gar/promisify/1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: true + + /@headlessui/react/1.7.8_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-zcwb0kd7L05hxmoAMIioEaOn235Dg0fUO+iGbLPgLVSjzl/l39V6DTpC2Df49PE5aG5/f5q0PZ9ZHZ78ENNV+A==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 + dependencies: + client-only: 0.0.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@heroicons/react/2.0.14_react@18.2.0: + resolution: {integrity: sha512-eFL4if6L7woL1fUvk/jjXx4z9NxVESHHrQnEd2qKVelTFTIr/3VLGWdPb0biia9ZVe26P0JSs/xmOlRNur3SrQ==} + peerDependencies: + react: '>= 16' + dependencies: + react: 18.2.0 + dev: false + + /@humanwhocodes/config-array/0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@hutson/parse-repository-url/3.0.2: + resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jsdoc/salty/0.2.3: + resolution: {integrity: sha512-bbtCxCkxcnWhi50I+4Lj6mdz9w3pOXOgEQrID8TCZ/DF51fW7M9GCQW2y45SpBDdHd1Eirm1X/Cf6CkAAe8HPg==} + engines: {node: '>=v12.0.0'} + dependencies: + lodash: 4.17.21 + dev: true + + /@lerna/add/4.0.0: + resolution: {integrity: sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/bootstrap': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/filter-options': 4.0.0 + '@lerna/npm-conf': 4.0.0 + '@lerna/validation-error': 4.0.0 + dedent: 0.7.0 + npm-package-arg: 8.1.5 + p-map: 4.0.0 + pacote: 11.3.5 + semver: 7.3.8 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@lerna/bootstrap/4.0.0: + resolution: {integrity: sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/command': 4.0.0 + '@lerna/filter-options': 4.0.0 + '@lerna/has-npm-version': 4.0.0 + '@lerna/npm-install': 4.0.0 + '@lerna/package-graph': 4.0.0 + '@lerna/pulse-till-done': 4.0.0 + '@lerna/rimraf-dir': 4.0.0 + '@lerna/run-lifecycle': 4.0.0 + '@lerna/run-topologically': 4.0.0 + '@lerna/symlink-binary': 4.0.0 + '@lerna/symlink-dependencies': 4.0.0 + '@lerna/validation-error': 4.0.0 + dedent: 0.7.0 + get-port: 5.1.1 + multimatch: 5.0.0 + npm-package-arg: 8.1.5 + npmlog: 4.1.2 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-waterfall: 2.1.1 + read-package-tree: 5.3.1 + semver: 7.3.8 + dev: true + + /@lerna/changed/4.0.0: + resolution: {integrity: sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/collect-updates': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/listable': 4.0.0 + '@lerna/output': 4.0.0 + dev: true + + /@lerna/check-working-tree/4.0.0: + resolution: {integrity: sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/collect-uncommitted': 4.0.0 + '@lerna/describe-ref': 4.0.0 + '@lerna/validation-error': 4.0.0 + dev: true + + /@lerna/child-process/4.0.0: + resolution: {integrity: sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q==} + engines: {node: '>= 10.18.0'} + dependencies: + chalk: 4.1.2 + execa: 5.1.1 + strong-log-transformer: 2.1.0 + dev: true + + /@lerna/clean/4.0.0: + resolution: {integrity: sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/command': 4.0.0 + '@lerna/filter-options': 4.0.0 + '@lerna/prompt': 4.0.0 + '@lerna/pulse-till-done': 4.0.0 + '@lerna/rimraf-dir': 4.0.0 + p-map: 4.0.0 + p-map-series: 2.1.0 + p-waterfall: 2.1.1 + dev: true + + /@lerna/cli/4.0.0: + resolution: {integrity: sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/global-options': 4.0.0 + dedent: 0.7.0 + npmlog: 4.1.2 + yargs: 16.2.0 + dev: true + + /@lerna/collect-uncommitted/4.0.0: + resolution: {integrity: sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + chalk: 4.1.2 + npmlog: 4.1.2 + dev: true + + /@lerna/collect-updates/4.0.0: + resolution: {integrity: sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/describe-ref': 4.0.0 + minimatch: 3.1.2 + npmlog: 4.1.2 + slash: 3.0.0 + dev: true + + /@lerna/command/4.0.0: + resolution: {integrity: sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/package-graph': 4.0.0 + '@lerna/project': 4.0.0 + '@lerna/validation-error': 4.0.0 + '@lerna/write-log-file': 4.0.0 + clone-deep: 4.0.1 + dedent: 0.7.0 + execa: 5.1.1 + is-ci: 2.0.0 + npmlog: 4.1.2 + dev: true + + /@lerna/conventional-commits/4.0.0: + resolution: {integrity: sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/validation-error': 4.0.0 + conventional-changelog-angular: 5.0.13 + conventional-changelog-core: 4.2.4 + conventional-recommended-bump: 6.1.0 + fs-extra: 9.1.0 + get-stream: 6.0.1 + lodash.template: 4.5.0 + npm-package-arg: 8.1.5 + npmlog: 4.1.2 + pify: 5.0.0 + semver: 7.3.8 + dev: true + + /@lerna/create-symlink/4.0.0: + resolution: {integrity: sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig==} + engines: {node: '>= 10.18.0'} + dependencies: + cmd-shim: 4.1.0 + fs-extra: 9.1.0 + npmlog: 4.1.2 + dev: true + + /@lerna/create/4.0.0: + resolution: {integrity: sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/npm-conf': 4.0.0 + '@lerna/validation-error': 4.0.0 + dedent: 0.7.0 + fs-extra: 9.1.0 + globby: 11.1.0 + init-package-json: 2.0.5 + npm-package-arg: 8.1.5 + p-reduce: 2.1.0 + pacote: 11.3.5 + pify: 5.0.0 + semver: 7.3.8 + slash: 3.0.0 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 3.0.0 + whatwg-url: 8.7.0 + yargs-parser: 20.2.4 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@lerna/describe-ref/4.0.0: + resolution: {integrity: sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + npmlog: 4.1.2 + dev: true + + /@lerna/diff/4.0.0: + resolution: {integrity: sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/validation-error': 4.0.0 + npmlog: 4.1.2 + dev: true + + /@lerna/exec/4.0.0: + resolution: {integrity: sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/filter-options': 4.0.0 + '@lerna/profiler': 4.0.0 + '@lerna/run-topologically': 4.0.0 + '@lerna/validation-error': 4.0.0 + p-map: 4.0.0 + dev: true + + /@lerna/filter-options/4.0.0: + resolution: {integrity: sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/collect-updates': 4.0.0 + '@lerna/filter-packages': 4.0.0 + dedent: 0.7.0 + npmlog: 4.1.2 + dev: true + + /@lerna/filter-packages/4.0.0: + resolution: {integrity: sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/validation-error': 4.0.0 + multimatch: 5.0.0 + npmlog: 4.1.2 + dev: true + + /@lerna/get-npm-exec-opts/4.0.0: + resolution: {integrity: sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ==} + engines: {node: '>= 10.18.0'} + dependencies: + npmlog: 4.1.2 + dev: true + + /@lerna/get-packed/4.0.0: + resolution: {integrity: sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w==} + engines: {node: '>= 10.18.0'} + dependencies: + fs-extra: 9.1.0 + ssri: 8.0.1 + tar: 6.1.13 + dev: true + + /@lerna/github-client/4.0.0: + resolution: {integrity: sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@octokit/plugin-enterprise-rest': 6.0.1 + '@octokit/rest': 18.12.0 + git-url-parse: 11.6.0 + npmlog: 4.1.2 + transitivePeerDependencies: + - encoding + dev: true + + /@lerna/gitlab-client/4.0.0: + resolution: {integrity: sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA==} + engines: {node: '>= 10.18.0'} + dependencies: + node-fetch: 2.6.8 + npmlog: 4.1.2 + whatwg-url: 8.7.0 + transitivePeerDependencies: + - encoding + dev: true + + /@lerna/global-options/4.0.0: + resolution: {integrity: sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ==} + engines: {node: '>= 10.18.0'} + dev: true + + /@lerna/has-npm-version/4.0.0: + resolution: {integrity: sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + semver: 7.3.8 + dev: true + + /@lerna/import/4.0.0: + resolution: {integrity: sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/prompt': 4.0.0 + '@lerna/pulse-till-done': 4.0.0 + '@lerna/validation-error': 4.0.0 + dedent: 0.7.0 + fs-extra: 9.1.0 + p-map-series: 2.1.0 + dev: true + + /@lerna/info/4.0.0: + resolution: {integrity: sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/command': 4.0.0 + '@lerna/output': 4.0.0 + envinfo: 7.8.1 + dev: true + + /@lerna/init/4.0.0: + resolution: {integrity: sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/command': 4.0.0 + fs-extra: 9.1.0 + p-map: 4.0.0 + write-json-file: 4.3.0 + dev: true + + /@lerna/link/4.0.0: + resolution: {integrity: sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/command': 4.0.0 + '@lerna/package-graph': 4.0.0 + '@lerna/symlink-dependencies': 4.0.0 + p-map: 4.0.0 + slash: 3.0.0 + dev: true + + /@lerna/list/4.0.0: + resolution: {integrity: sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/command': 4.0.0 + '@lerna/filter-options': 4.0.0 + '@lerna/listable': 4.0.0 + '@lerna/output': 4.0.0 + dev: true + + /@lerna/listable/4.0.0: + resolution: {integrity: sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/query-graph': 4.0.0 + chalk: 4.1.2 + columnify: 1.6.0 + dev: true + + /@lerna/log-packed/4.0.0: + resolution: {integrity: sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ==} + engines: {node: '>= 10.18.0'} + dependencies: + byte-size: 7.0.1 + columnify: 1.6.0 + has-unicode: 2.0.1 + npmlog: 4.1.2 + dev: true + + /@lerna/npm-conf/4.0.0: + resolution: {integrity: sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw==} + engines: {node: '>= 10.18.0'} + dependencies: + config-chain: 1.1.13 + pify: 5.0.0 + dev: true + + /@lerna/npm-dist-tag/4.0.0: + resolution: {integrity: sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/otplease': 4.0.0 + npm-package-arg: 8.1.5 + npm-registry-fetch: 9.0.0 + npmlog: 4.1.2 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@lerna/npm-install/4.0.0: + resolution: {integrity: sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/get-npm-exec-opts': 4.0.0 + fs-extra: 9.1.0 + npm-package-arg: 8.1.5 + npmlog: 4.1.2 + signal-exit: 3.0.7 + write-pkg: 4.0.0 + dev: true + + /@lerna/npm-publish/4.0.0: + resolution: {integrity: sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/otplease': 4.0.0 + '@lerna/run-lifecycle': 4.0.0 + fs-extra: 9.1.0 + libnpmpublish: 4.0.2 + npm-package-arg: 8.1.5 + npmlog: 4.1.2 + pify: 5.0.0 + read-package-json: 3.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@lerna/npm-run-script/4.0.0: + resolution: {integrity: sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + '@lerna/get-npm-exec-opts': 4.0.0 + npmlog: 4.1.2 + dev: true + + /@lerna/otplease/4.0.0: + resolution: {integrity: sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/prompt': 4.0.0 + dev: true + + /@lerna/output/4.0.0: + resolution: {integrity: sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w==} + engines: {node: '>= 10.18.0'} + dependencies: + npmlog: 4.1.2 + dev: true + + /@lerna/pack-directory/4.0.0: + resolution: {integrity: sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/get-packed': 4.0.0 + '@lerna/package': 4.0.0 + '@lerna/run-lifecycle': 4.0.0 + npm-packlist: 2.2.2 + npmlog: 4.1.2 + tar: 6.1.13 + temp-write: 4.0.0 + dev: true + + /@lerna/package-graph/4.0.0: + resolution: {integrity: sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/prerelease-id-from-version': 4.0.0 + '@lerna/validation-error': 4.0.0 + npm-package-arg: 8.1.5 + npmlog: 4.1.2 + semver: 7.3.8 + dev: true + + /@lerna/package/4.0.0: + resolution: {integrity: sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q==} + engines: {node: '>= 10.18.0'} + dependencies: + load-json-file: 6.2.0 + npm-package-arg: 8.1.5 + write-pkg: 4.0.0 + dev: true + + /@lerna/prerelease-id-from-version/4.0.0: + resolution: {integrity: sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg==} + engines: {node: '>= 10.18.0'} + dependencies: + semver: 7.3.8 + dev: true + + /@lerna/profiler/4.0.0: + resolution: {integrity: sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q==} + engines: {node: '>= 10.18.0'} + dependencies: + fs-extra: 9.1.0 + npmlog: 4.1.2 + upath: 2.0.1 + dev: true + + /@lerna/project/4.0.0: + resolution: {integrity: sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/package': 4.0.0 + '@lerna/validation-error': 4.0.0 + cosmiconfig: 7.1.0 + dedent: 0.7.0 + dot-prop: 6.0.1 + glob-parent: 5.1.2 + globby: 11.1.0 + load-json-file: 6.2.0 + npmlog: 4.1.2 + p-map: 4.0.0 + resolve-from: 5.0.0 + write-json-file: 4.3.0 + dev: true + + /@lerna/prompt/4.0.0: + resolution: {integrity: sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ==} + engines: {node: '>= 10.18.0'} + dependencies: + inquirer: 7.3.3 + npmlog: 4.1.2 + dev: true + + /@lerna/publish/4.0.0: + resolution: {integrity: sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/check-working-tree': 4.0.0 + '@lerna/child-process': 4.0.0 + '@lerna/collect-updates': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/describe-ref': 4.0.0 + '@lerna/log-packed': 4.0.0 + '@lerna/npm-conf': 4.0.0 + '@lerna/npm-dist-tag': 4.0.0 + '@lerna/npm-publish': 4.0.0 + '@lerna/otplease': 4.0.0 + '@lerna/output': 4.0.0 + '@lerna/pack-directory': 4.0.0 + '@lerna/prerelease-id-from-version': 4.0.0 + '@lerna/prompt': 4.0.0 + '@lerna/pulse-till-done': 4.0.0 + '@lerna/run-lifecycle': 4.0.0 + '@lerna/run-topologically': 4.0.0 + '@lerna/validation-error': 4.0.0 + '@lerna/version': 4.0.0 + fs-extra: 9.1.0 + libnpmaccess: 4.0.3 + npm-package-arg: 8.1.5 + npm-registry-fetch: 9.0.0 + npmlog: 4.1.2 + p-map: 4.0.0 + p-pipe: 3.1.0 + pacote: 11.3.5 + semver: 7.3.8 + transitivePeerDependencies: + - bluebird + - encoding + - supports-color + dev: true + + /@lerna/pulse-till-done/4.0.0: + resolution: {integrity: sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg==} + engines: {node: '>= 10.18.0'} + dependencies: + npmlog: 4.1.2 + dev: true + + /@lerna/query-graph/4.0.0: + resolution: {integrity: sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/package-graph': 4.0.0 + dev: true + + /@lerna/resolve-symlink/4.0.0: + resolution: {integrity: sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA==} + engines: {node: '>= 10.18.0'} + dependencies: + fs-extra: 9.1.0 + npmlog: 4.1.2 + read-cmd-shim: 2.0.0 + dev: true + + /@lerna/rimraf-dir/4.0.0: + resolution: {integrity: sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/child-process': 4.0.0 + npmlog: 4.1.2 + path-exists: 4.0.0 + rimraf: 3.0.2 + dev: true + + /@lerna/run-lifecycle/4.0.0: + resolution: {integrity: sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/npm-conf': 4.0.0 + npm-lifecycle: 3.1.5 + npmlog: 4.1.2 + dev: true + + /@lerna/run-topologically/4.0.0: + resolution: {integrity: sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/query-graph': 4.0.0 + p-queue: 6.6.2 + dev: true + + /@lerna/run/4.0.0: + resolution: {integrity: sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/command': 4.0.0 + '@lerna/filter-options': 4.0.0 + '@lerna/npm-run-script': 4.0.0 + '@lerna/output': 4.0.0 + '@lerna/profiler': 4.0.0 + '@lerna/run-topologically': 4.0.0 + '@lerna/timer': 4.0.0 + '@lerna/validation-error': 4.0.0 + p-map: 4.0.0 + dev: true + + /@lerna/symlink-binary/4.0.0: + resolution: {integrity: sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/create-symlink': 4.0.0 + '@lerna/package': 4.0.0 + fs-extra: 9.1.0 + p-map: 4.0.0 + dev: true + + /@lerna/symlink-dependencies/4.0.0: + resolution: {integrity: sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/create-symlink': 4.0.0 + '@lerna/resolve-symlink': 4.0.0 + '@lerna/symlink-binary': 4.0.0 + fs-extra: 9.1.0 + p-map: 4.0.0 + p-map-series: 2.1.0 + dev: true + + /@lerna/timer/4.0.0: + resolution: {integrity: sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg==} + engines: {node: '>= 10.18.0'} + dev: true + + /@lerna/validation-error/4.0.0: + resolution: {integrity: sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw==} + engines: {node: '>= 10.18.0'} + dependencies: + npmlog: 4.1.2 + dev: true + + /@lerna/version/4.0.0: + resolution: {integrity: sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA==} + engines: {node: '>= 10.18.0'} + dependencies: + '@lerna/check-working-tree': 4.0.0 + '@lerna/child-process': 4.0.0 + '@lerna/collect-updates': 4.0.0 + '@lerna/command': 4.0.0 + '@lerna/conventional-commits': 4.0.0 + '@lerna/github-client': 4.0.0 + '@lerna/gitlab-client': 4.0.0 + '@lerna/output': 4.0.0 + '@lerna/prerelease-id-from-version': 4.0.0 + '@lerna/prompt': 4.0.0 + '@lerna/run-lifecycle': 4.0.0 + '@lerna/run-topologically': 4.0.0 + '@lerna/validation-error': 4.0.0 + chalk: 4.1.2 + dedent: 0.7.0 + load-json-file: 6.2.0 + minimatch: 3.1.2 + npmlog: 4.1.2 + p-map: 4.0.0 + p-pipe: 3.1.0 + p-reduce: 2.1.0 + p-waterfall: 2.1.1 + semver: 7.3.8 + slash: 3.0.0 + temp-write: 4.0.0 + write-json-file: 4.3.0 + transitivePeerDependencies: + - encoding + dev: true + + /@lerna/write-log-file/4.0.0: + resolution: {integrity: sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg==} + engines: {node: '>= 10.18.0'} + dependencies: + npmlog: 4.1.2 + write-file-atomic: 3.0.3 + dev: true + + /@lezer/common/1.0.2: + resolution: {integrity: sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==} + dev: false + + /@lezer/highlight/1.1.3: + resolution: {integrity: sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==} + dependencies: + '@lezer/common': 1.0.2 + dev: false + + /@lezer/javascript/1.4.1: + resolution: {integrity: sha512-Hqx36DJeYhKtdpc7wBYPR0XF56ZzIp0IkMO/zNNj80xcaFOV4Oj/P7TQc/8k2TxNhzl7tV5tXS8ZOCPbT4L3nA==} + dependencies: + '@lezer/highlight': 1.1.3 + '@lezer/lr': 1.3.1 + dev: false + + /@lezer/lr/1.3.1: + resolution: {integrity: sha512-+GymJB/+3gThkk2zHwseaJTI5oa4AuOuj1I2LCslAVq1dFZLSX8SAe4ZlJq1TjezteDXtF/+d4qeWz9JvnrG9Q==} + dependencies: + '@lezer/common': 1.0.2 + dev: false + + /@ljharb/has-package-exports-patterns/0.0.2: + resolution: {integrity: sha512-4/RWEeXDO6bocPONheFe6gX/oQdP/bEpv0oL4HqjPP5DCenBSt0mHgahppY49N0CpsaqffdwPq+TlX9CYOq2Dw==} + dev: false + + /@mapbox/node-pre-gyp/1.0.10: + resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} + hasBin: true + dependencies: + detect-libc: 2.0.1 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.6.8 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.3.8 + tar: 6.1.13 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@mdx-js/mdx/2.2.1: + resolution: {integrity: sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/mdx': 2.0.3 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-util-to-js: 1.1.1 + estree-walker: 3.0.3 + hast-util-to-estree: 2.2.1 + markdown-extensions: 1.1.1 + periscopic: 3.1.0 + remark-mdx: 2.2.1 + remark-parse: 10.0.1 + remark-rehype: 10.1.0 + unified: 10.1.2 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@mdx-js/rollup/2.2.1: + resolution: {integrity: sha512-wpGeK9iO7gPEIyC/ZTiggLY/MkEWDj5IWSsjlpkefgjb5RbmUukXU6/D2rHA+VAopxigS3NlaIL2ctpYBi4fmg==} + peerDependencies: + rollup: '>=2' + dependencies: + '@mdx-js/mdx': 2.2.1 + '@rollup/pluginutils': 5.0.2 + source-map: 0.7.4 + vfile: 5.3.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@npmcli/ci-detect/1.4.0: + resolution: {integrity: sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==} + dev: true + + /@npmcli/fs/1.1.1: + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.3.8 + dev: true + + /@npmcli/git/2.1.0: + resolution: {integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==} + dependencies: + '@npmcli/promise-spawn': 1.3.2 + lru-cache: 6.0.0 + mkdirp: 1.0.4 + npm-pick-manifest: 6.1.1 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.3.8 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents/1.0.7: + resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: true + + /@npmcli/move-file/1.1.2: + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + dev: true + + /@npmcli/node-gyp/1.0.3: + resolution: {integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==} + dev: true + + /@npmcli/promise-spawn/1.3.2: + resolution: {integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==} + dependencies: + infer-owner: 1.0.4 + dev: true + + /@npmcli/run-script/1.8.6: + resolution: {integrity: sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==} + dependencies: + '@npmcli/node-gyp': 1.0.3 + '@npmcli/promise-spawn': 1.3.2 + node-gyp: 7.1.2 + read-package-json-fast: 2.0.3 + dev: true + + /@octokit/auth-token/2.5.0: + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + dependencies: + '@octokit/types': 6.41.0 + dev: true + + /@octokit/core/3.6.0: + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0 + '@octokit/request': 5.6.3 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/endpoint/6.0.12: + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.0 + dev: true + + /@octokit/graphql/4.8.0: + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + dependencies: + '@octokit/request': 5.6.3 + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/openapi-types/12.11.0: + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + dev: true + + /@octokit/plugin-enterprise-rest/6.0.1: + resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==} + dev: true + + /@octokit/plugin-paginate-rest/2.21.3_@octokit+core@3.6.0: + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + dev: true + + /@octokit/plugin-request-log/1.0.4_@octokit+core@3.6.0: + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + dev: true + + /@octokit/plugin-rest-endpoint-methods/5.16.2_@octokit+core@3.6.0: + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + dev: true + + /@octokit/request-error/2.1.0: + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request/5.6.3: + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.6.8 + universal-user-agent: 6.0.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/rest/18.12.0: + resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} + dependencies: + '@octokit/core': 3.6.0 + '@octokit/plugin-paginate-rest': 2.21.3_@octokit+core@3.6.0 + '@octokit/plugin-request-log': 1.0.4_@octokit+core@3.6.0 + '@octokit/plugin-rest-endpoint-methods': 5.16.2_@octokit+core@3.6.0 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/types/6.41.0: + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + dependencies: + '@octokit/openapi-types': 12.11.0 + dev: true + + /@pkgr/utils/2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.0 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.0 + dev: false + + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + + /@preact/signals-core/1.2.3: + resolution: {integrity: sha512-Kui4p7PMcEQevBgsTO0JBo3gyQ88Q3qzEvsVCuSp11t0JcN4DmGCTJcGRVSCq7Bn7lGxJBO+57jNSzDoDJ+QmA==} + dev: false + + /@preact/signals/1.1.3_preact@10.11.3: + resolution: {integrity: sha512-N09DuAVvc90bBZVRwD+aFhtGyHAmJLhS3IFoawO/bYJRcil4k83nBOchpCEoS0s5+BXBpahgp0Mjf+IOqP57Og==} + peerDependencies: + preact: 10.x + dependencies: + '@preact/signals-core': 1.2.3 + preact: 10.11.3 + dev: false + + /@proload/core/0.3.3: + resolution: {integrity: sha512-7dAFWsIK84C90AMl24+N/ProHKm4iw0akcnoKjRvbfHifJZBLhaDsDus1QJmhG12lXj4e/uB/8mB/0aduCW+NQ==} + dependencies: + deepmerge: 4.2.2 + escalade: 3.1.1 + dev: false + + /@proload/plugin-tsm/0.2.1_@proload+core@0.3.3: + resolution: {integrity: sha512-Ex1sL2BxU+g8MHdAdq9SZKz+pU34o8Zcl9PHWo2WaG9hrnlZme607PU6gnpoAYsDBpHX327+eu60wWUk+d/b+A==} + peerDependencies: + '@proload/core': ^0.3.2 + dependencies: + '@proload/core': 0.3.3 + tsm: 2.3.0 + dev: false + + /@rollup/pluginutils/5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.0 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: false + + /@supabase/functions-js/1.3.4: + resolution: {integrity: sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/gotrue-js/1.24.0: + resolution: {integrity: sha512-6PVv7mHCFOxLm6TSBfR7hsq/y3CMKpvzePVR+ZWtlFBTjJ2J87g2OYE9bgC61P5TNeZopUXKw93H92yz0MTALw==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/postgrest-js/0.37.4: + resolution: {integrity: sha512-x+c2rk1fz9s6f1PrGxCJ0QTUgXPDI0G3ngIqD5sSiXhhCyfl8Q5V92mXl2EYtlDhkiUkjFNrOZFhXVbXOHgvDw==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/realtime-js/1.7.5: + resolution: {integrity: sha512-nXuoxt7NE1NTI+G8WBim1K2gkUC8YE3e9evBUG+t6xwd9Sq+sSOrjcE0qJ8/Y631BCnLzlhX6yhFYQFh1oQDOg==} + dependencies: + '@types/phoenix': 1.5.4 + websocket: 1.0.34 + transitivePeerDependencies: + - supports-color + dev: false + + /@supabase/storage-js/1.7.3: + resolution: {integrity: sha512-jnIZWqOc9TGclOozgX9v/RWGFCgJAyW/yvmauexgRZhWknUXoA4b2i8tj7vfwE0WTvNRuA5JpXID98rfJeSG7Q==} + dependencies: + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false + + /@supabase/supabase-js/1.35.7: + resolution: {integrity: sha512-X+qCzmj5sH0dozagbLoK7LzysBaWoivO0gsAUAPPBQkQupQWuBfaOqG18gKhlfL0wp2PL888QzhQNScp/IwUfA==} + dependencies: + '@supabase/functions-js': 1.3.4 + '@supabase/gotrue-js': 1.24.0 + '@supabase/postgrest-js': 0.37.4 + '@supabase/realtime-js': 1.7.5 + '@supabase/storage-js': 1.7.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@tailwindcss/typography/0.5.9_tailwindcss@3.2.4: + resolution: {integrity: sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.2.4 + dev: false + + /@tonaljs/abc-notation/4.8.0: + resolution: {integrity: sha512-JggT/DW4rMxu+q1WkeACrg52is3acp9zaW4LJmCheFi3CmLa63sy7/6mgKnlScTOvcpAyTcSytu0VbQHRXyBDA==} + dependencies: + '@tonaljs/core': 4.10.0 + dev: false + + /@tonaljs/array/4.8.0: + resolution: {integrity: sha512-lWCUBRUVWtDV0kl/fjOgICRWzBYWZdJEk1h0vVzpuPaXW6Yz3JfjyKPtLbzYTkgSr1PqcjxVGNwxilz9c2NNkQ==} + dependencies: + '@tonaljs/core': 4.10.0 + dev: false + + /@tonaljs/chord-detect/4.8.0: + resolution: {integrity: sha512-rpBHS2FKitIIodWI32LszeUfpq0of+0zqnU3CBc2/2UiYoyO9PmSs8UjzupKTIX/mHxOxq0ncDheT/ItB7QdNg==} + dependencies: + '@tonaljs/chord-type': 4.8.0 + '@tonaljs/core': 4.10.0 + '@tonaljs/pcset': 4.8.1 + dev: false + + /@tonaljs/chord-type/4.8.0: + resolution: {integrity: sha512-NQYvTziV5HiY+fuNWHB85ZFJgKFge3iBcmcJSDI4kguxSHqDDscM1fE+tb6q4mi6RKERtw3oeGWjV5ScL1UKWQ==} + dependencies: + '@tonaljs/core': 4.10.0 + '@tonaljs/pcset': 4.8.1 + dev: false + + /@tonaljs/chord/4.10.0: + resolution: {integrity: sha512-PyR17WYtgk0Yi1KRPeK5dVKoCCBf+LA23pRndN9RFWUkQR/zuRgmTyXpS7JRfzNqDu4GLGVCzS37QUdHRD5FvA==} + dependencies: + '@tonaljs/chord-detect': 4.8.0 + '@tonaljs/chord-type': 4.8.0 + '@tonaljs/collection': 4.8.0 + '@tonaljs/core': 4.10.0 + '@tonaljs/pcset': 4.8.1 + '@tonaljs/scale-type': 4.8.1 + dev: false + + /@tonaljs/collection/4.8.0: + resolution: {integrity: sha512-NSnqUDqnCZajYGPH4+27y6UAflX+RrAZQdP9YNBuJoTFtdSDrqV3cJoPdr2DRpGCK3Nuzw1dU8DlGsyWwNwlmg==} + dev: false + + /@tonaljs/core/4.10.0: + resolution: {integrity: sha512-+AH7NP9iiAGil+X7NlKGlQvls/KByQmxR51d5O+y6IjHltOkVUXk74oZuxW7zF0IsKchFn8Okr0sxqFmgsQmpA==} + dev: false + + /@tonaljs/duration-value/4.8.0: + resolution: {integrity: sha512-ewWVKtYCzNkSNaFoEn6NqL5vCmHTqoN+qngoUG2Sy2ZvGCk1pwx3ckJVUkJmYrkxP4PbQASPgJi0y+0fjgVJug==} + dev: false + + /@tonaljs/interval/4.8.0: + resolution: {integrity: sha512-R+1OvqRS0lFqzmzorbL0cwqZLVRnDw2kmwNtgF17A2vqcZI9aDDH/XELPLLUcZ7ykeIu4X9t/v+yTwREj+nUrA==} + dependencies: + '@tonaljs/core': 4.10.0 + dev: false + + /@tonaljs/key/4.9.1: + resolution: {integrity: sha512-WL/8raLnrcv6qpBog0HNp16/ifleeapZjU2PVTnIJ2DhuVgqtI8ccCyZHAURFdMmwYmn1Gf1VnvUAmG7RmqHJg==} + dependencies: + '@tonaljs/core': 4.10.0 + '@tonaljs/note': 4.10.0 + '@tonaljs/roman-numeral': 4.8.0 + dev: false + + /@tonaljs/midi/4.9.0: + resolution: {integrity: sha512-zi6lK2OC2EA8E1Nl011erWAZgOSlrfstJMgnrbm4/nLDegotg5ALbMnfX/s+SIfSSFcXn/Og1d8xwPeAwoaUyg==} + dependencies: + '@tonaljs/core': 4.10.0 + dev: false + + /@tonaljs/mode/4.8.0: + resolution: {integrity: sha512-hyaj2RWcnA7h6+jzc074JzE8GFFYg2FaRxXJHLBIYXXlqrLnudnSHOAfHUNRySQKEMR6h4oIerf9LW6+z9sPjQ==} + dependencies: + '@tonaljs/collection': 4.8.0 + '@tonaljs/core': 4.10.0 + '@tonaljs/interval': 4.8.0 + '@tonaljs/pcset': 4.8.1 + '@tonaljs/scale-type': 4.8.1 + dev: false + + /@tonaljs/note/4.10.0: + resolution: {integrity: sha512-jWyxk9Dom+vsucj3dWG9z4j6WhZqbY7gkKsS14fHeo7g8qUZTVZFsr8ulpHyLPXN3EhLwHDU7CxIQ1klkPE33A==} + dependencies: + '@tonaljs/core': 4.10.0 + '@tonaljs/midi': 4.9.0 + dev: false + + /@tonaljs/pcset/4.8.1: + resolution: {integrity: sha512-Ir+xHQHBqhSlOEeIMsPwz6A9MRdeKYajKFFwhnGLzU42HcHfe0MKyttzVO+iSIenLtiYk5TyW9ADdo6y85sJeA==} + dependencies: + '@tonaljs/collection': 4.8.0 + '@tonaljs/core': 4.10.0 + dev: false + + /@tonaljs/progression/4.8.0: + resolution: {integrity: sha512-JS5xDox5pN3rRAIIC7ACumGmSwMpIRPvQpUePTmfQS0YMjFofzXeAjH/7WZN0328VK4vk8OAWu5N18pVxqJqQw==} + dependencies: + '@tonaljs/chord': 4.10.0 + '@tonaljs/core': 4.10.0 + '@tonaljs/roman-numeral': 4.8.0 + dev: false + + /@tonaljs/range/4.8.1: + resolution: {integrity: sha512-UAyHBPh1SfqOo2w/BA6Rji3Sl1V0z/ggoE9+gS5aig13qUaVM8B3p2eanEgrxsRTN+yARPSE83CiWWbVqLKzWA==} + dependencies: + '@tonaljs/collection': 4.8.0 + '@tonaljs/midi': 4.9.0 + dev: false + + /@tonaljs/roman-numeral/4.8.0: + resolution: {integrity: sha512-jktwfGXcs4qp5A0jy5pyWxgYkeGDcaldV9tiv7XnNR5yLwDm0D6S9rRlNlSo3n0wyDo3+Kh80hd3Mps+Gsf81w==} + dependencies: + '@tonaljs/core': 4.10.0 + dev: false + + /@tonaljs/scale-type/4.8.1: + resolution: {integrity: sha512-XlSCFnEmiv7olj8mQBnQOBP9l1CtKFju3BqIILvLCacc6nrWSfSOSi8Y08FujSdvnU6i2fJmK/AYqlqFNoR1rA==} + dependencies: + '@tonaljs/core': 4.10.0 + '@tonaljs/pcset': 4.8.1 + dev: false + + /@tonaljs/scale/4.12.0: + resolution: {integrity: sha512-1XxGoNqOFRgHWtpGH1Ery/AObnlnHp8+Yxe2FSE7J1BzUFej1XpJJyRvR4sOFVGr603xze+9IOXVgGTADcy/IQ==} + dependencies: + '@tonaljs/chord-type': 4.8.0 + '@tonaljs/collection': 4.8.0 + '@tonaljs/core': 4.10.0 + '@tonaljs/note': 4.10.0 + '@tonaljs/pcset': 4.8.1 + '@tonaljs/scale-type': 4.8.1 + dev: false + + /@tonaljs/time-signature/4.8.0: + resolution: {integrity: sha512-ES5WoBC3aA5qQcVxh3GUc/Z1XAlnul/PCdlYrmTNAAJ4hgv4H5WHu15fWk7xRcCC6LZz6chfQNbSIXl9sNRdZQ==} + dev: false + + /@tonaljs/tonal/4.10.0: + resolution: {integrity: sha512-F2T9Fiy+j0MVped89kCrX1XF68mQOLUnny4pDOHrIf+OkrjtLQOzzaSOrX1tx0o72WUwQm1knz6D1d57b9X1HA==} + dependencies: + '@tonaljs/abc-notation': 4.8.0 + '@tonaljs/array': 4.8.0 + '@tonaljs/chord': 4.10.0 + '@tonaljs/chord-type': 4.8.0 + '@tonaljs/collection': 4.8.0 + '@tonaljs/core': 4.10.0 + '@tonaljs/duration-value': 4.8.0 + '@tonaljs/interval': 4.8.0 + '@tonaljs/key': 4.9.1 + '@tonaljs/midi': 4.9.0 + '@tonaljs/mode': 4.8.0 + '@tonaljs/note': 4.10.0 + '@tonaljs/pcset': 4.8.1 + '@tonaljs/progression': 4.8.0 + '@tonaljs/range': 4.8.1 + '@tonaljs/roman-numeral': 4.8.0 + '@tonaljs/scale': 4.12.0 + '@tonaljs/scale-type': 4.8.1 + '@tonaljs/time-signature': 4.8.0 + dev: false + + /@tootallnate/once/1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + dev: true + + /@types/acorn/4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.0 + dev: false + + /@types/babel__core/7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} + dependencies: + '@babel/parser': 7.20.13 + '@babel/types': 7.20.7 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.3 + dev: false + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.20.7 + dev: false + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.20.13 + '@babel/types': 7.20.7 + dev: false + + /@types/babel__traverse/7.18.3: + resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + dependencies: + '@babel/types': 7.20.7 + dev: false + + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.4 + dev: true + + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + dev: true + + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + dependencies: + '@types/ms': 0.7.31 + dev: false + + /@types/estree-jsx/0.0.1: + resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} + dependencies: + '@types/estree': 1.0.0 + dev: false + + /@types/estree-jsx/1.0.0: + resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} + dependencies: + '@types/estree': 1.0.0 + dev: false + + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: false + + /@types/extend/3.0.1: + resolution: {integrity: sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==} + dev: false + + /@types/hast/2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/html-escaper/3.0.0: + resolution: {integrity: sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==} + dev: false + + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/json5/0.0.30: + resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} + dev: false + + /@types/linkify-it/3.0.2: + resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} + dev: true + + /@types/markdown-it/12.2.3: + resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + dependencies: + '@types/linkify-it': 3.0.2 + '@types/mdurl': 1.0.2 + dev: true + + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/mdurl/1.0.2: + resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + dev: true + + /@types/mdx/2.0.3: + resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} + dev: false + + /@types/minimatch/3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: false + + /@types/nlcst/1.0.0: + resolution: {integrity: sha512-3TGCfOcy8R8mMQ4CNSNOe3PG66HttvjcLzCoOpvXvDtfWOTi+uT/rxeOKm/qEwbM4SNe1O/PjdiBK2YcTjU4OQ==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/node/18.11.18: + resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: true + + /@types/parse5/6.0.3: + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: false + + /@types/phoenix/1.5.4: + resolution: {integrity: sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==} + dev: false + + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + /@types/react-dom/17.0.18: + resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} + dependencies: + '@types/react': 17.0.53 + dev: true + + /@types/react-dom/18.0.10: + resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + dependencies: + '@types/react': 18.0.27 + dev: false + + /@types/react/17.0.53: + resolution: {integrity: sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + dev: true + + /@types/react/18.0.27: + resolution: {integrity: sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + dev: false + + /@types/resolve/1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: false + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: false + + /@types/webmidi/2.0.6: + resolution: {integrity: sha512-sfS0A5IryqmBrUpcGPipEPeFdpqmZzP6b6lZFxHKgz5n2Vhzh4yJ5P2TvoDUhDjqJyv0Y25ng0Qodgo2Vu08ug==} + dev: false + + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: false + + /@typescript-eslint/types/5.49.0: + resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4: + resolution: {integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.49.0 + '@typescript-eslint/visitor-keys': 5.49.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/visitor-keys/5.49.0: + resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.49.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@uiw/codemirror-extensions-basic-setup/4.19.7_a4vbhepr4qhxm5cldqd4jpyase: + resolution: {integrity: sha512-pk0JTFJAZOGxouBB1pdBtb59qKibO9DW4hER4VSFGBGW3TBDeXUwL/gKujhRpySHG2MtG09cgt4a3XOFIWwXTw==} + peerDependencies: + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + dependencies: + '@codemirror/autocomplete': 6.4.0_a4vbhepr4qhxm5cldqd4jpyase + '@codemirror/commands': 6.2.0 + '@codemirror/language': 6.4.0 + '@codemirror/lint': 6.1.0 + '@codemirror/search': 6.2.3 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + dev: false + + /@uiw/codemirror-themes/4.19.7_a4vbhepr4qhxm5cldqd4jpyase: + resolution: {integrity: sha512-M/42RkPI60ItlssmNuEoZO2MQvlY6fRmdX7XRUAhKjxczZoaq8xS6HIvv1whGf2zGsTrwdVTPCm6ls0l17dvPA==} + peerDependencies: + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + dependencies: + '@codemirror/language': 6.4.0 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + dev: false + + /@uiw/react-codemirror/4.19.7_b6o5qp6ml4k7skggixohr5abde: + resolution: {integrity: sha512-IHvpYWVSdiaHX0Fk6oY6YyAJigDnyvSpWKNUTRzsMNxB+8/wqZ8lior4TprXH0zyLxW5F1+bTyifFFTeg+X3Sw==} + peerDependencies: + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@babel/runtime': 7.20.13 + '@codemirror/commands': 6.2.0 + '@codemirror/state': 6.2.0 + '@codemirror/theme-one-dark': 6.1.0 + '@codemirror/view': 6.7.3 + '@uiw/codemirror-extensions-basic-setup': 4.19.7_a4vbhepr4qhxm5cldqd4jpyase + codemirror: 6.0.1 + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /@vitejs/plugin-react/2.2.0_vite@3.2.5: + resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 + magic-string: 0.26.7 + react-refresh: 0.14.0 + vite: 3.2.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@vitest/ui/0.25.8: + resolution: {integrity: sha512-wfuhghldD5QHLYpS46GK8Ru8P3XcMrWvFjRQD21KNzc9Y/qtJsqoC8KmT6xWVkMNw4oHYixpo3a4ZySRJdserw==} + dependencies: + sirv: 2.0.2 + dev: true + + /@vscode/emmet-helper/2.8.6: + resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} + dependencies: + emmet: 2.3.6 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.2 + vscode-uri: 2.1.2 + dev: false + + /@vscode/l10n/0.0.11: + resolution: {integrity: sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==} + dev: false + + /JSONStream/1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + + /acorn-node/1.8.2: + resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + xtend: 4.0.2 + + /acorn-walk/7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + + /add-stream/1.0.0: + resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} + dev: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /agentkeepalive/4.2.1: + resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} + engines: {node: '>= 8.0.0'} + dependencies: + debug: 4.3.4 + depd: 1.1.2 + humanize-ms: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /algoliasearch/4.14.3: + resolution: {integrity: sha512-GZTEuxzfWbP/vr7ZJfGzIl8fOsoxN916Z6FY2Egc9q2TmZ6hvq5KfAxY89pPW01oW/2HDEKA8d30f9iAH9eXYg==} + dependencies: + '@algolia/cache-browser-local-storage': 4.14.3 + '@algolia/cache-common': 4.14.3 + '@algolia/cache-in-memory': 4.14.3 + '@algolia/client-account': 4.14.3 + '@algolia/client-analytics': 4.14.3 + '@algolia/client-common': 4.14.3 + '@algolia/client-personalization': 4.14.3 + '@algolia/client-search': 4.14.3 + '@algolia/logger-common': 4.14.3 + '@algolia/logger-console': 4.14.3 + '@algolia/requester-browser-xhr': 4.14.3 + '@algolia/requester-common': 4.14.3 + '@algolia/requester-node-http': 4.14.3 + '@algolia/transporter': 4.14.3 + dev: false + + /ansi-align/3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: false + + /ansi-escape-sequences/4.1.0: + resolution: {integrity: sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex/2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles/6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /app-module-path/2.2.0: + resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} + dev: true + + /aproba/1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: true + + /aproba/2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: true + + /are-we-there-yet/1.1.7: + resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} + dependencies: + delegates: 1.0.0 + readable-stream: 2.3.7 + dev: true + + /are-we-there-yet/2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.0 + dev: true + + /arg/5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: false + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-back/1.0.4: + resolution: {integrity: sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==} + engines: {node: '>=0.12.0'} + dependencies: + typical: 2.6.1 + dev: true + + /array-back/2.0.0: + resolution: {integrity: sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==} + engines: {node: '>=4'} + dependencies: + typical: 2.6.1 + dev: true + + /array-back/3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back/4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: true + + /array-back/5.0.0: + resolution: {integrity: sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==} + engines: {node: '>=10'} + dev: true + + /array-back/6.2.2: + resolution: {integrity: sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==} + engines: {node: '>=12.17'} + dev: true + + /array-differ/3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + dev: true + + /array-ify/1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-iterate/2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + dev: false + + /array-union/1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array-uniq/1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array.prototype.reduce/1.0.5: + resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /arrify/2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + dev: true + + /asap/2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + + /ast-module-types/3.0.0: + resolution: {integrity: sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==} + engines: {node: '>=6.0'} + dev: true + + /ast-types/0.14.2: + resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} + engines: {node: '>=4'} + dependencies: + tslib: 2.5.0 + dev: false + + /astring/1.8.4: + resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==} + hasBin: true + dev: false + + /astro/1.9.2_@types+node@18.11.18: + resolution: {integrity: sha512-L+Ma0eR0Aa6QZg7RF0lEs+106Ye1/zukvtq3KtsYIogAojltlwllwU9X5CwMBzFwA55NxpNp4gSRh5US/xb+8Q==} + engines: {node: ^14.18.0 || >=16.12.0, npm: '>=6.14.0'} + hasBin: true + dependencies: + '@astrojs/compiler': 0.31.4 + '@astrojs/language-server': 0.28.3 + '@astrojs/markdown-remark': 1.2.0 + '@astrojs/telemetry': 1.0.1 + '@astrojs/webapi': 1.1.1 + '@babel/core': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/parser': 7.20.13 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 + '@babel/traverse': 7.20.13 + '@babel/types': 7.20.7 + '@proload/core': 0.3.3 + '@proload/plugin-tsm': 0.2.1_@proload+core@0.3.3 + '@types/babel__core': 7.20.0 + '@types/html-escaper': 3.0.0 + '@types/yargs-parser': 21.0.0 + acorn: 8.8.2 + boxen: 6.2.1 + ci-info: 3.7.1 + common-ancestor-path: 1.0.1 + cookie: 0.5.0 + debug: 4.3.4 + deepmerge-ts: 4.2.2 + devalue: 4.2.2 + diff: 5.1.0 + es-module-lexer: 1.1.0 + estree-walker: 3.0.3 + execa: 6.1.0 + fast-glob: 3.2.12 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-entities: 2.3.3 + html-escaper: 3.0.3 + import-meta-resolve: 2.2.1 + kleur: 4.1.5 + magic-string: 0.27.0 + mime: 3.0.0 + ora: 6.1.2 + path-browserify: 1.0.1 + path-to-regexp: 6.2.1 + postcss: 8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + preferred-pm: 3.0.3 + prompts: 2.4.2 + recast: 0.20.5 + rehype: 12.0.1 + resolve: 1.22.1 + rollup: 2.79.1 + semver: 7.3.8 + shiki: 0.11.1 + sirv: 2.0.2 + slash: 4.0.0 + string-width: 5.1.2 + strip-ansi: 7.0.1 + supports-esm: 1.0.0 + tsconfig-resolver: 3.0.1 + typescript: 4.9.4 + unist-util-visit: 4.1.2 + vfile: 5.3.6 + vite: 3.2.5_@types+node@18.11.18 + vitefu: 0.2.4_vite@3.2.5 + yargs-parser: 21.1.1 + zod: 3.20.2 + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + - ts-node + dev: false + + /async/2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /automation-events/5.0.0: + resolution: {integrity: sha512-SkYa2YBwgRUJNsR5v6GxeJwP5IGnYtOMW37coplTOWMUpDYYrk5j8gGOhYa765rchRln/HssFzMAck/2P6zTFw==} + engines: {node: '>=14.15.4'} + dependencies: + '@babel/runtime': 7.20.13 + tslib: 2.5.0 + dev: false + + /autoprefixer/10.4.13_postcss@8.4.21: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001449 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /aws-sign2/0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4/1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + dev: true + + /babel-plugin-module-resolver/4.1.0: + resolution: {integrity: sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==} + engines: {node: '>= 8.0.0'} + dependencies: + find-babel-config: 1.2.0 + glob: 7.2.3 + pkg-up: 3.1.0 + reselect: 4.1.7 + resolve: 1.22.1 + dev: false + + /bail/2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /before-after-hook/2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /bl/5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: false + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /boolean/3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + dev: false + + /boxen/6.2.1: + resolution: {integrity: sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: false + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001449 + electron-to-chromium: 1.4.284 + node-releases: 2.0.8 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /buffer/6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /bufferutil/4.0.7: + resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + + /builtins/1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + dev: true + + /builtins/5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.3.8 + dev: false + + /byline/5.0.0: + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} + dev: true + + /byte-size/7.0.1: + resolution: {integrity: sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A==} + engines: {node: '>=10'} + dev: true + + /c8/7.12.0: + resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==} + engines: {node: '>=10.12.0'} + hasBin: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-report: 3.0.0 + istanbul-reports: 3.1.5 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 9.0.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + dev: true + + /cacache/15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.2.3 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.1.13 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + dev: true + + /cache-point/2.0.0: + resolution: {integrity: sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==} + engines: {node: '>=8'} + dependencies: + array-back: 4.0.2 + fs-then-native: 2.0.0 + mkdirp2: 1.0.5 + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-css/2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + /camelcase-keys/6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: false + + /caniuse-lite/1.0.30001449: + resolution: {integrity: sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==} + + /canvas/2.11.0: + resolution: {integrity: sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.10 + nan: 2.17.0 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /caseless/0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /catharsis/0.9.0: + resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} + engines: {node: '>= 10'} + dependencies: + lodash: 4.17.21 + dev: true + + /ccount/2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false + + /chai/4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chalk/5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false + + /character-entities-html4/2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false + + /character-entities-legacy/3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false + + /character-entities/2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false + + /character-reference-invalid/2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false + + /chardet/0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /check-error/1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + + /chord-voicings/0.0.1: + resolution: {integrity: sha512-SutgB/4ynkkuiK6qdQ/k3QvCFcH0Vj8Ch4t6LbRyRQbVzP/TOztiCk3kvXd516UZ6fqk7ijDRELEFcKN+6V8sA==} + dependencies: + '@tonaljs/tonal': 4.10.0 + dev: false + + /chownr/1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: true + + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /ci-info/2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /ci-info/3.7.1: + resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} + engines: {node: '>=8'} + dev: false + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-boxes/3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: false + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-cursor/4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: false + + /cli-spinners/2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} + dev: false + + /cli-width/3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /client-only/0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /cliui/7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-buffer/1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + dev: false + + /clone-deep/4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone-stats/1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + dev: false + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + /clone/2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: false + + /cloneable-readable/1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.7 + dev: false + + /cmd-shim/4.1.0: + resolution: {integrity: sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==} + engines: {node: '>=10'} + dependencies: + mkdirp-infer-owner: 2.0.0 + dev: true + + /code-point-at/1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + dev: true + + /codemirror/6.0.1: + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + dependencies: + '@codemirror/autocomplete': 6.4.0_a4vbhepr4qhxm5cldqd4jpyase + '@codemirror/commands': 6.2.0 + '@codemirror/language': 6.4.0 + '@codemirror/lint': 6.1.0 + '@codemirror/search': 6.2.3 + '@codemirror/state': 6.2.0 + '@codemirror/view': 6.7.3 + dev: false + + /collect-all/1.0.4: + resolution: {integrity: sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==} + engines: {node: '>=0.10.0'} + dependencies: + stream-connect: 1.0.2 + stream-via: 1.0.4 + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-support/1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: true + + /columnify/1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /comlink/4.3.1: + resolution: {integrity: sha512-+YbhUdNrpBZggBAHWcgQMLPLH1KDF3wJpeqrCKieWQ8RL7atmgsgTQko1XEBK6PsecfopWNntopJ+ByYG1lRaA==} + dev: false + + /comma-separated-tokens/2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false + + /command-line-args/5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-tool/0.8.0: + resolution: {integrity: sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==} + engines: {node: '>=4.0.0'} + dependencies: + ansi-escape-sequences: 4.1.0 + array-back: 2.0.0 + command-line-args: 5.2.1 + command-line-usage: 4.1.0 + typical: 2.6.1 + dev: true + + /command-line-usage/4.1.0: + resolution: {integrity: sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==} + engines: {node: '>=4.0.0'} + dependencies: + ansi-escape-sequences: 4.1.0 + array-back: 2.0.0 + table-layout: 0.4.5 + typical: 2.6.1 + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander/9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /common-ancestor-path/1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + dev: false + + /common-sequence/2.0.2: + resolution: {integrity: sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==} + engines: {node: '>=8'} + dev: true + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /compare-func/2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream/2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + typedarray: 0.0.6 + dev: true + + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: true + + /config-master/3.1.0: + resolution: {integrity: sha512-n7LBL1zBzYdTpF1mx5DNcZnZn05CWIdsdvtPL4MosvqbBUK3Rq6VWEtGUuF3Y0s9/CIhMejezqlSkP6TnCJ/9g==} + dependencies: + walk-back: 2.0.1 + dev: true + + /console-control-strings/1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: true + + /conventional-changelog-angular/5.0.13: + resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} + engines: {node: '>=10'} + dependencies: + compare-func: 2.0.0 + q: 1.5.1 + dev: true + + /conventional-changelog-core/4.2.4: + resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} + engines: {node: '>=10'} + dependencies: + add-stream: 1.0.0 + conventional-changelog-writer: 5.0.1 + conventional-commits-parser: 3.2.4 + dateformat: 3.0.3 + get-pkg-repo: 4.2.1 + git-raw-commits: 2.0.11 + git-remote-origin-url: 2.0.0 + git-semver-tags: 4.1.1 + lodash: 4.17.21 + normalize-package-data: 3.0.3 + q: 1.5.1 + read-pkg: 3.0.0 + read-pkg-up: 3.0.0 + through2: 4.0.2 + dev: true + + /conventional-changelog-preset-loader/2.3.4: + resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} + engines: {node: '>=10'} + dev: true + + /conventional-changelog-writer/5.0.1: + resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + conventional-commits-filter: 2.0.7 + dateformat: 3.0.3 + handlebars: 4.7.7 + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + meow: 8.1.2 + semver: 6.3.0 + split: 1.0.1 + through2: 4.0.2 + dev: true + + /conventional-commits-filter/2.0.7: + resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} + engines: {node: '>=10'} + dependencies: + lodash.ismatch: 4.4.0 + modify-values: 1.0.1 + dev: true + + /conventional-commits-parser/3.2.4: + resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} + engines: {node: '>=10'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /conventional-recommended-bump/6.1.0: + resolution: {integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + concat-stream: 2.0.0 + conventional-changelog-preset-loader: 2.3.4 + conventional-commits-filter: 2.0.7 + conventional-commits-parser: 3.2.4 + git-raw-commits: 2.0.11 + git-semver-tags: 4.1.1 + meow: 8.1.2 + q: 1.5.1 + dev: true + + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true + + /crelt/1.0.5: + resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} + dev: false + + /cross-fetch/3.1.5: + resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: false + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + + /d/1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + + /dargs/7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + dev: true + + /dashdash/1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + /dateformat/3.0.3: + resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /debuglog/1.0.1: + resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} + dev: true + + /decamelize-keys/1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decode-named-character-reference/1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false + + /decode-uri-component/0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /decompress-response/4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + dependencies: + mimic-response: 2.1.0 + dev: true + + /dedent/0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + + /deep-extend/0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge-ts/4.2.2: + resolution: {integrity: sha512-Ka3Kb21tiWjvQvS9U+1Dx+aqFAHsdTnMdYptLTmC2VAmDFMugWMY1e15aTODstipmCun8iNuqeSfcx6rsUUk0Q==} + engines: {node: '>=12.4.0'} + dev: false + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: false + + /defaults/1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + + /defined/1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /delegates/1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: true + + /depd/1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /dependency-tree/9.0.0: + resolution: {integrity: sha512-osYHZJ1fBSon3lNLw70amAXsQ+RGzXsPvk9HbBgTLbp/bQBmpH5mOmsUvqXU+YEWVU0ZLewsmzOET/8jWswjDQ==} + engines: {node: ^10.13 || ^12 || >=14} + hasBin: true + dependencies: + commander: 2.20.3 + debug: 4.3.4 + filing-cabinet: 3.3.0 + precinct: 9.0.1 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /deprecation/2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true + + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + + /detect-indent/5.0.0: + resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} + engines: {node: '>=4'} + dev: true + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detect-libc/1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /detect-libc/2.0.1: + resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} + engines: {node: '>=8'} + dev: true + + /detect-node/2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: false + + /detective-amd/4.0.1: + resolution: {integrity: sha512-bDo22IYbJ8yzALB0Ow5CQLtyhU1BpDksLB9dsWHI9Eh0N3OQR6aQqhjPsNDd69ncYwRfL1sTo7OA9T3VRVSe2Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + ast-module-types: 3.0.0 + escodegen: 2.0.0 + get-amd-module-type: 4.0.0 + node-source-walk: 5.0.0 + dev: true + + /detective-cjs/4.0.0: + resolution: {integrity: sha512-VsD6Yo1+1xgxJWoeDRyut7eqZ8EWaJI70C5eanSAPcBHzenHZx0uhjxaaEfIm0cHII7dBiwU98Orh44bwXN2jg==} + engines: {node: '>=12'} + dependencies: + ast-module-types: 3.0.0 + node-source-walk: 5.0.0 + dev: true + + /detective-es6/3.0.0: + resolution: {integrity: sha512-Uv2b5Uih7vorYlqGzCX+nTPUb4CMzUAn3VPHTV5p5lBkAN4cAApLGgUz4mZE2sXlBfv4/LMmeP7qzxHV/ZcfWA==} + engines: {node: '>=12'} + dependencies: + node-source-walk: 5.0.0 + dev: true + + /detective-less/1.0.2: + resolution: {integrity: sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==} + engines: {node: '>= 6.0'} + dependencies: + debug: 4.3.4 + gonzales-pe: 4.3.0 + node-source-walk: 4.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /detective-postcss/6.1.0: + resolution: {integrity: sha512-ZFZnEmUrL2XHAC0j/4D1fdwZbo/anAcK84soJh7qc7xfx2Kc8gFO5Bk5I9jU7NLC/OAF1Yho1GLxEDnmQnRH2A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + is-url: 1.2.4 + postcss: 8.4.21 + postcss-values-parser: 6.0.2_postcss@8.4.21 + dev: true + + /detective-sass/4.0.1: + resolution: {integrity: sha512-80zfpxux1krOrkxCHbtwvIs2gNHUBScnSqlGl0FvUuHVz8HD6vD2ov66OroMctyvzhM67fxhuEeVjIk18s6yTQ==} + engines: {node: '>=12'} + dependencies: + gonzales-pe: 4.3.0 + node-source-walk: 5.0.0 + dev: true + + /detective-scss/3.0.0: + resolution: {integrity: sha512-37MB/mhJyS45ngqfzd6eTbuLMoDgdZnH03ZOMW2m9WqJ/Rlbuc8kZAr0Ypovaf1DJiTRzy5mmxzOTja85jbzlA==} + engines: {node: '>=12'} + dependencies: + gonzales-pe: 4.3.0 + node-source-walk: 5.0.0 + dev: true + + /detective-stylus/2.0.1: + resolution: {integrity: sha512-/Tvs1pWLg8eYwwV6kZQY5IslGaYqc/GACxjcaGudiNtN5nKCH6o2WnJK3j0gA3huCnoQcbv8X7oz/c1lnvE3zQ==} + engines: {node: '>=6.0'} + dev: true + + /detective-typescript/9.0.0: + resolution: {integrity: sha512-lR78AugfUSBojwlSRZBeEqQ1l8LI7rbxOl1qTUnGLcjZQDjZmrZCb7R46rK8U8B5WzFvJrxa7fEBA8FoD/n5fA==} + engines: {node: ^12.20.0 || ^14.14.0 || >=16.0.0} + dependencies: + '@typescript-eslint/typescript-estree': 5.49.0_typescript@4.9.4 + ast-module-types: 3.0.0 + node-source-walk: 5.0.0 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /detective/5.2.1: + resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + acorn-node: 1.8.2 + defined: 1.0.1 + minimist: 1.2.7 + + /devalue/4.2.2: + resolution: {integrity: sha512-Pkwd8qrI9O20VJ14fBNHu+on99toTNZFbgWRpZbC0zbDXpnE2WHYcrC1fHhMsF/3Ee+2yaW7vEujAT7fCYgqrA==} + dev: false + + /dezalgo/1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + dev: true + + /didyoumean/1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + /diff/5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: false + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /djipevents/2.0.7: + resolution: {integrity: sha512-KNFYaU85imxOCKOUsIR70Iz9E19r96/X7LSH+u0tSoZdpWcBdzoqtTsU+wuLhc6GMpSFob+KInkZAbfKi01Bjg==} + dependencies: + '@babel/runtime': 7.20.13 + dev: false + + /dlv/1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + /dmd/6.2.0: + resolution: {integrity: sha512-uXWxLF1H7TkUAuoHK59/h/ts5cKavm2LnhrIgJWisip4BVzPoXavlwyoprFFn2CzcahKYgvkfaebS6oxzgflkg==} + engines: {node: '>=12'} + dependencies: + array-back: 6.2.2 + cache-point: 2.0.0 + common-sequence: 2.0.2 + file-set: 4.0.2 + handlebars: 4.7.7 + marked: 4.2.12 + object-get: 2.1.1 + reduce-flatten: 3.0.1 + reduce-unique: 2.0.1 + reduce-without: 1.0.1 + test-value: 3.0.0 + walk-back: 5.1.0 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dot-prop/5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dot-prop/6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dset/3.1.2: + resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} + engines: {node: '>=4'} + dev: false + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true + + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /electron-to-chromium/1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + + /email-addresses/3.1.0: + resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} + dev: true + + /emmet/2.3.6: + resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} + dependencies: + '@emmetio/abbreviation': 2.2.3 + '@emmetio/css-abbreviation': 2.1.4 + dev: false + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /encoding/0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /entities/2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + dev: true + + /env-paths/2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /envinfo/7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /err-code/2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract/1.21.1: + resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.4 + is-array-buffer: 3.0.1 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: true + + /es-array-method-boxes-properly/1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + + /es-module-lexer/0.10.5: + resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} + dev: false + + /es-module-lexer/1.1.0: + resolution: {integrity: sha512-fJg+1tiyEeS8figV+fPcPpm8WqJEflG3yPU0NOm5xMvrNkuiy7HzX/Ljng4Y0hAoiw4/3hQTCFYw+ub8+a2pRA==} + dev: false + + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es5-ext/0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-error/4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: false + + /es6-iterator/2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol/3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + + /esbuild-android-64/0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /esbuild-android-arm64/0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /esbuild-darwin-64/0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /esbuild-darwin-arm64/0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /esbuild-freebsd-64/0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /esbuild-freebsd-arm64/0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /esbuild-linux-32/0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-64/0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-arm/0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-arm64/0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-mips64le/0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-ppc64le/0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-riscv64/0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-linux-s390x/0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /esbuild-netbsd-64/0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /esbuild-openbsd-64/0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + /esbuild-sunos-64/0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + /esbuild-windows-32/0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /esbuild-windows-64/0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /esbuild-windows-arm64/0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /esbuild/0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + + /esbuild/0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp/5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + /eslint-plugin-es/4.1.0: + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: false + + /eslint-plugin-n/15.6.1: + resolution: {integrity: sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + builtins: 5.0.1 + eslint-plugin-es: 4.1.0 + eslint-utils: 3.0.0 + ignore: 5.2.4 + is-core-module: 2.11.0 + minimatch: 3.1.2 + resolve: 1.22.1 + semver: 7.3.8 + dev: false + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: false + + /eslint-utils/3.0.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint-visitor-keys: 2.1.0 + dev: false + + /eslint-utils/3.0.0_eslint@8.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: false + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.32.0: + resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.32.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.3.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.3.0 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.2.0: + resolution: {integrity: sha512-VHvyaGnJy+FuGfcfaM7W7OZw4mQiKW73jPHwQXx2VnMSUBajYmytOT5sKEfsBvNPtGX6YDwcrGDz2eocoHg0JA==} + engines: {node: '>=0.10.0'} + dev: false + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-util-attach-comments/2.1.1: + resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} + dependencies: + '@types/estree': 1.0.0 + dev: false + + /estree-util-build-jsx/2.2.2: + resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} + dependencies: + '@types/estree-jsx': 1.0.0 + estree-util-is-identifier-name: 2.1.0 + estree-walker: 3.0.3 + dev: false + + /estree-util-is-identifier-name/2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} + dev: false + + /estree-util-to-js/1.1.1: + resolution: {integrity: sha512-tW/ADSJON4o+T8rSmSX1ZXdat4n6bVOu0iTUFY9ZFF2dD/1/Hug8Lc/HYuJRA4Mop9zDZHQMo1m4lIxxJHkTjQ==} + dependencies: + '@types/estree-jsx': 1.0.0 + astring: 1.8.4 + source-map: 0.7.4 + dev: false + + /estree-util-visit/1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/unist': 2.0.6 + dev: false + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false + + /estree-walker/3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.0 + dev: false + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /eventemitter3/4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa/6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: false + + /expand-template/2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + dev: true + + /ext/1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + + /extend-shallow/2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + /external-editor/3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /fault/2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + dependencies: + format: 0.2.2 + dev: false + + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + + /figures/3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /file-set/4.0.2: + resolution: {integrity: sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==} + engines: {node: '>=10'} + dependencies: + array-back: 5.0.0 + glob: 7.2.3 + dev: true + + /filename-reserved-regex/2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + dev: true + + /filenamify/4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + dev: true + + /filing-cabinet/3.3.0: + resolution: {integrity: sha512-Tnbpbme1ONaHXV5DGcw0OFpcfP3p2itRf5VXO1bguBXdIewDbK6ZFBK//DGKM0BuCzaQLQNY4f5gljzxY1VCUw==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + app-module-path: 2.2.0 + commander: 2.20.3 + debug: 4.3.4 + enhanced-resolve: 5.12.0 + is-relative-path: 1.0.2 + module-definition: 3.4.0 + module-lookup-amd: 7.0.1 + resolve: 1.22.1 + resolve-dependency-path: 2.0.0 + sass-lookup: 3.0.0 + stylus-lookup: 3.0.2 + tsconfig-paths: 3.14.1 + typescript: 3.9.10 + transitivePeerDependencies: + - supports-color + dev: true + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /filter-obj/1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: true + + /find-babel-config/1.2.0: + resolution: {integrity: sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==} + engines: {node: '>=4.0.0'} + dependencies: + json5: 0.5.1 + path-exists: 3.0.0 + dev: false + + /find-cache-dir/3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-replace/3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /find-up/2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + dependencies: + locate-path: 2.0.0 + dev: true + + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /find-yarn-workspace-root2/1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + dependencies: + micromatch: 4.0.5 + pkg-dir: 4.2.0 + dev: false + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child/2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 3.0.7 + dev: true + + /forever-agent/0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /format/0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + dev: false + + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + + /from2/2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /fs-constants/1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true + + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-minipass/1.2.7: + resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + dependencies: + minipass: 2.9.0 + dev: true + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs-then-native/2.0.0: + resolution: {integrity: sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==} + engines: {node: '>=4.0.0'} + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gauge/2.7.4: + resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} + dependencies: + aproba: 1.2.0 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 1.0.2 + strip-ansi: 3.0.1 + wide-align: 1.1.5 + dev: true + + /gauge/3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: true + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-amd-module-type/4.0.0: + resolution: {integrity: sha512-GbBawUCuA2tY8ztiMiVo3e3P95gc2TVrfYFfpUHdHQA8WyxMCckK29bQsVKhYX8SUf+w6JLhL2LG8tSC0ANt9Q==} + engines: {node: '>=12'} + dependencies: + ast-module-types: 3.0.0 + node-source-walk: 5.0.0 + dev: true + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-func-name/2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + dev: true + + /get-intrinsic/1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + + /get-own-enumerable-property-symbols/3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: true + + /get-pkg-repo/4.2.1: + resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} + engines: {node: '>=6.9.0'} + hasBin: true + dependencies: + '@hutson/parse-repository-url': 3.0.2 + hosted-git-info: 4.1.0 + through2: 2.0.5 + yargs: 16.2.0 + dev: true + + /get-port/5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /gh-pages/4.0.0: + resolution: {integrity: sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 2.6.4 + commander: 2.20.3 + email-addresses: 3.1.0 + filenamify: 4.3.0 + find-cache-dir: 3.3.2 + fs-extra: 8.1.0 + globby: 6.1.0 + dev: true + + /git-raw-commits/2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /git-remote-origin-url/2.0.0: + resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} + engines: {node: '>=4'} + dependencies: + gitconfiglocal: 1.0.0 + pify: 2.3.0 + dev: true + + /git-semver-tags/4.1.1: + resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + meow: 8.1.2 + semver: 6.3.0 + dev: true + + /git-up/4.0.5: + resolution: {integrity: sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==} + dependencies: + is-ssh: 1.4.0 + parse-url: 6.0.5 + dev: true + + /git-url-parse/11.6.0: + resolution: {integrity: sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==} + dependencies: + git-up: 4.0.5 + dev: true + + /gitconfiglocal/1.0.0: + resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} + dependencies: + ini: 1.3.8 + dev: true + + /github-from-package/0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + dev: true + + /github-slugger/1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + dev: false + + /github-slugger/2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + dev: false + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /global-agent/3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.3.8 + serialize-error: 7.0.1 + dev: false + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals/13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.4 + + /globalyzer/0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby/6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globrex/0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false + + /gonzales-pe/4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /google-closure-compiler-java/20221102.0.1: + resolution: {integrity: sha512-rMKLEma3uSe/6MGHtivDezTv4u5iaDEyxoy9No+1WruPSZ5h1gBZLONcfCA8JaoGojFPdHZI1qbwT0EveEWnAg==} + dev: false + + /google-closure-compiler-linux/20221102.0.1: + resolution: {integrity: sha512-rj1E1whT4j/giidQ44v4RoO8GcvU81VU9YB5RlRM0hWDvCGWjQasDABGnF/YLWLl5PXAAfJpa/hy8ckv5/r97g==} + cpu: [x32, x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /google-closure-compiler-osx/20221102.0.1: + resolution: {integrity: sha512-Cv993yr9a2DLFgYnsv4m6dNUk5jousd6W6la12x2fDbhxTLewYrw7CrCaVEVw1SU3XErVmdHOZQjFsVMhcZjCw==} + cpu: [x32, x64, arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /google-closure-compiler-windows/20221102.0.1: + resolution: {integrity: sha512-jRwHGekG/oDihHdKAEiYN5z0cBF+brL0bYtuEOXx4fAmq5tHe4OxKtSEEprCnVZZL0aG/boGprACPvsDRsXT7Q==} + cpu: [x32, x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /google-closure-compiler/20221102.0.1: + resolution: {integrity: sha512-edAlsyJEsy2I983xWBlBfdSme16uyY007HM2OwPOoWPEFgmR100ggUabJbIegXZgbSLH51kyeJMQKuWhiHgzcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + chalk: 4.1.2 + google-closure-compiler-java: 20221102.0.1 + minimist: 1.2.7 + vinyl: 2.2.1 + vinyl-sourcemaps-apply: 0.2.1 + optionalDependencies: + google-closure-compiler-linux: 20221102.0.1 + google-closure-compiler-osx: 20221102.0.1 + google-closure-compiler-windows: 20221102.0.1 + dev: false + + /google-closure-library/20221102.0.0: + resolution: {integrity: sha512-M5+LWPS99tMB9dOGpZjLT9CdIYpnwBZiwB+dCmZFOOvwJiOWytntzJ/a/hoNF6zxD15l3GWwRJiEkL636D6DRQ==} + dev: false + + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /gray-matter/4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + dev: false + + /handlebars/4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.7 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.17.4 + dev: true + + /har-schema/2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator/5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /hard-rejection/2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-package-exports/1.3.0: + resolution: {integrity: sha512-e9OeXPQnmPhYoJ63lXC4wWe34TxEGZDZ3OQX9XRqp2VwsfLl3bQBy7VehLnd34g3ef8CmYlBLGqEMKXuz8YazQ==} + dependencies: + '@ljharb/has-package-exports-patterns': 0.0.2 + dev: false + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has-unicode/2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hast-util-from-parse5/7.1.1: + resolution: {integrity: sha512-R6PoNcUs89ZxLJmMWsVbwSWuz95/9OriyQZ3e2ybwqGsRXzhA6gv49rgGmQvLbZuSNDv9fCg7vV7gXUsvtUFaA==} + dependencies: + '@types/hast': 2.3.4 + '@types/unist': 2.0.6 + hastscript: 7.2.0 + property-information: 6.2.0 + vfile: 5.3.6 + vfile-location: 4.0.1 + web-namespaces: 2.0.1 + dev: false + + /hast-util-has-property/2.0.1: + resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} + dev: false + + /hast-util-heading-rank/2.1.1: + resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} + dependencies: + '@types/hast': 2.3.4 + dev: false + + /hast-util-is-element/2.1.3: + resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + dependencies: + '@types/hast': 2.3.4 + '@types/unist': 2.0.6 + dev: false + + /hast-util-parse-selector/3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + dependencies: + '@types/hast': 2.3.4 + dev: false + + /hast-util-raw/7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + dependencies: + '@types/hast': 2.3.4 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.1 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.6 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-estree/2.2.1: + resolution: {integrity: sha512-kiGD9WIW3gRKK8Gao3n1f+ahUeTMeJUJILnIT2QNrPigDNdH7rJxzhEbh81UajGeAdAHFecT1a+fLVOCTq9B4Q==} + dependencies: + '@types/estree': 1.0.0 + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/unist': 2.0.6 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.1 + mdast-util-mdxjs-esm: 1.3.0 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.1 + unist-util-position: 4.0.4 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-html/8.0.4: + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + dependencies: + '@types/hast': 2.3.4 + '@types/unist': 2.0.6 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 + html-void-elements: 2.0.1 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.3 + zwitch: 2.0.4 + dev: false + + /hast-util-to-parse5/7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + dependencies: + '@types/hast': 2.3.4 + comma-separated-tokens: 2.0.3 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-string/2.0.0: + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + dependencies: + '@types/hast': 2.3.4 + dev: false + + /hast-util-whitespace/2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + dev: false + + /hastscript/7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + dependencies: + '@types/hast': 2.3.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 + dev: false + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info/4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /html-entities/2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: false + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /html-escaper/3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + /html-void-elements/2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + dev: false + + /http-cache-semantics/4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-proxy-agent/4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-signature/1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.17.0 + dev: true + + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals/3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} + dev: false + + /humanize-ms/1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + dependencies: + ms: 2.1.3 + dev: true + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + optional: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /ignore-walk/3.0.4: + resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} + dependencies: + minimatch: 3.1.2 + dev: true + + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /import-meta-resolve/2.2.1: + resolution: {integrity: sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==} + dev: false + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /infer-owner/1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /init-package-json/2.0.5: + resolution: {integrity: sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==} + engines: {node: '>=10'} + dependencies: + npm-package-arg: 8.1.5 + promzard: 0.3.0 + read: 1.0.7 + read-package-json: 4.1.2 + semver: 7.3.8 + validate-npm-package-license: 3.0.4 + validate-npm-package-name: 3.0.0 + dev: true + + /inline-style-parser/0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: false + + /inquirer/7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true + + /internal-slot/1.0.4: + resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /into-stream/6.0.0: + resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} + engines: {node: '>=10'} + dependencies: + from2: 2.3.0 + p-is-promise: 3.0.0 + dev: true + + /ip/2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: true + + /is-alphabetical/2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: false + + /is-alphanumerical/2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /is-array-buffer/3.0.1: + resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-ci/2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + dependencies: + ci-info: 2.0.0 + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} + dependencies: + has: 1.0.3 + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal/2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: false + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-docker/3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: false + + /is-extendable/0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point/1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + dependencies: + number-is-nan: 1.0.1 + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal/2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: false + + /is-interactive/2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + dev: false + + /is-lambda/1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj/1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj/4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-reference/3.0.1: + resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + dependencies: + '@types/estree': 1.0.0 + dev: false + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-regexp/1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-relative-path/1.0.2: + resolution: {integrity: sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA==} + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-ssh/1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + dependencies: + protocols: 2.0.1 + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream/3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-text-path/1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + dependencies: + text-extensions: 1.9.0 + dev: true + + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + /is-unicode-supported/1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + dev: false + + /is-url-superb/4.0.0: + resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} + engines: {node: '>=10'} + dev: true + + /is-url/1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject/3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isstream/0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /jazz-midi/1.7.9: + resolution: {integrity: sha512-c8c4BBgwxdsIr1iVm53nadCrtH7BUlnX3V95ciK/gbvXN/ndE5+POskBalXgqlc/r9p2XUbdLTrgrC6fou5p9w==} + engines: {node: '>=10.0.0'} + dev: false + + /js-sdsl/4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /js2xmlparser/4.0.2: + resolution: {integrity: sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==} + dependencies: + xmlcreate: 2.0.4 + dev: true + + /jsbn/0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsdoc-api/7.2.0: + resolution: {integrity: sha512-93YDnlm/OYTlLOFeNs4qAv0RBCJ0kGj67xQaWy8wrbk97Rw1EySitoOTHsTHXPEs3uyx2IStPKGrbE7LTnZXbA==} + engines: {node: '>=12.17'} + dependencies: + array-back: 6.2.2 + cache-point: 2.0.0 + collect-all: 1.0.4 + file-set: 4.0.2 + fs-then-native: 2.0.0 + jsdoc: 4.0.0 + object-to-spawn-args: 2.0.1 + temp-path: 1.0.0 + walk-back: 5.1.0 + dev: true + + /jsdoc-json/2.0.2: + resolution: {integrity: sha512-n0vVkWvBMHFNUsW6HUhMrVCk+nJZwW3kpd9/JiCgdYvjjZV3NcP5fV3+lTgOkOA/bTKJxbCKT8Au92FHII3pnA==} + dev: true + + /jsdoc-parse/6.2.0: + resolution: {integrity: sha512-Afu1fQBEb7QHt6QWX/6eUWvYHJofB90Fjx7FuJYF7mnG9z5BkAIpms1wsnvYLytfmqpEENHs/fax9p8gvMj7dw==} + engines: {node: '>=12'} + dependencies: + array-back: 6.2.2 + lodash.omit: 4.5.0 + lodash.pick: 4.4.0 + reduce-extract: 1.0.0 + sort-array: 4.1.5 + test-value: 3.0.0 + dev: true + + /jsdoc-to-markdown/7.1.1: + resolution: {integrity: sha512-CI86d63xAVNO+ENumWwmJ034lYe5iGU5GwjtTA11EuphP9tpnoi4hrKgR/J8uME0D+o4KUpVfwX1fjZhc8dEtg==} + engines: {node: '>=12.17'} + hasBin: true + dependencies: + array-back: 6.2.2 + command-line-tool: 0.8.0 + config-master: 3.1.0 + dmd: 6.2.0 + jsdoc-api: 7.2.0 + jsdoc-parse: 6.2.0 + walk-back: 5.1.0 + dev: true + + /jsdoc/3.6.11: + resolution: {integrity: sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@babel/parser': 7.20.13 + '@types/markdown-it': 12.2.3 + bluebird: 3.7.2 + catharsis: 0.9.0 + escape-string-regexp: 2.0.0 + js2xmlparser: 4.0.2 + klaw: 3.0.0 + markdown-it: 12.3.2 + markdown-it-anchor: 8.6.6_2zb4u3vubltivolgu556vv4aom + marked: 4.2.12 + mkdirp: 1.0.4 + requizzle: 0.2.4 + strip-json-comments: 3.1.1 + taffydb: 2.6.2 + underscore: 1.13.6 + dev: true + + /jsdoc/4.0.0: + resolution: {integrity: sha512-tzTgkklbWKrlaQL2+e3NNgLcZu3NaK2vsHRx7tyHQ+H5jcB9Gx0txSd2eJWlMC/xU1+7LQu4s58Ry0RkuaEQVg==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + '@babel/parser': 7.20.13 + '@jsdoc/salty': 0.2.3 + '@types/markdown-it': 12.2.3 + bluebird: 3.7.2 + catharsis: 0.9.0 + escape-string-regexp: 2.0.0 + js2xmlparser: 4.0.2 + klaw: 3.0.0 + markdown-it: 12.3.2 + markdown-it-anchor: 8.6.6_2zb4u3vubltivolgu556vv4aom + marked: 4.2.12 + mkdirp: 1.0.4 + requizzle: 0.2.4 + strip-json-comments: 3.1.1 + underscore: 1.13.6 + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-parse-better-errors/1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema/0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + /json5/0.5.1: + resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} + hasBin: true + dev: false + + /json5/1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonc-parser/2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + dev: false + + /jsonc-parser/3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: false + + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonparse/1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /jsprim/1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jzz/1.5.9: + resolution: {integrity: sha512-cqH+tSBtuFGrYinQnhdqn4zzGSLMkuLcX4ahGigH9vONAzCM1hoPmvwDJaM50BJFh5ok49cHfFlfvAGZtUIRQw==} + dependencies: + '@types/webmidi': 2.0.6 + jazz-midi: 1.7.9 + dev: false + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /klaw/3.0.0: + resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} + dependencies: + graceful-fs: 4.2.10 + dev: true + + /kleur/3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: false + + /kleur/4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: false + + /lerna/4.0.0: + resolution: {integrity: sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg==} + engines: {node: '>= 10.18.0'} + hasBin: true + dependencies: + '@lerna/add': 4.0.0 + '@lerna/bootstrap': 4.0.0 + '@lerna/changed': 4.0.0 + '@lerna/clean': 4.0.0 + '@lerna/cli': 4.0.0 + '@lerna/create': 4.0.0 + '@lerna/diff': 4.0.0 + '@lerna/exec': 4.0.0 + '@lerna/import': 4.0.0 + '@lerna/info': 4.0.0 + '@lerna/init': 4.0.0 + '@lerna/link': 4.0.0 + '@lerna/list': 4.0.0 + '@lerna/publish': 4.0.0 + '@lerna/run': 4.0.0 + '@lerna/version': 4.0.0 + import-local: 3.1.0 + npmlog: 4.1.2 + transitivePeerDependencies: + - bluebird + - encoding + - supports-color + dev: true + + /levn/0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /libnpmaccess/4.0.3: + resolution: {integrity: sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + minipass: 3.3.6 + npm-package-arg: 8.1.5 + npm-registry-fetch: 11.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /libnpmpublish/4.0.2: + resolution: {integrity: sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==} + engines: {node: '>=10'} + dependencies: + normalize-package-data: 3.0.3 + npm-package-arg: 8.1.5 + npm-registry-fetch: 11.0.0 + semver: 7.3.8 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} + engines: {node: '>=10'} + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /linkify-it/3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + dependencies: + uc.micro: 1.0.6 + dev: true + + /load-json-file/4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + dependencies: + graceful-fs: 4.2.10 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + dev: true + + /load-json-file/6.2.0: + resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.10 + parse-json: 5.2.0 + strip-bom: 4.0.0 + type-fest: 0.6.0 + dev: true + + /load-yaml-file/0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.10 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: false + + /local-pkg/0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + + /locate-path/2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + dev: true + + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: false + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash._reinterpolate/3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} + dev: true + + /lodash.camelcase/4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.castarray/4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: false + + /lodash.ismatch/4.4.0: + resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} + dev: true + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.omit/4.5.0: + resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==} + dev: true + + /lodash.padend/4.6.1: + resolution: {integrity: sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==} + dev: true + + /lodash.pick/4.4.0: + resolution: {integrity: sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==} + dev: true + + /lodash.template/4.5.0: + resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + dev: true + + /lodash.templatesettings/4.2.0: + resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} + dependencies: + lodash._reinterpolate: 3.0.0 + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols/5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + dependencies: + chalk: 5.2.0 + is-unicode-supported: 1.3.0 + dev: false + + /longest-streak/3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + dependencies: + get-func-name: 2.0.0 + dev: true + + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /magic-string/0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /magic-string/0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 + dev: false + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-fetch-happen/8.0.14: + resolution: {integrity: sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==} + engines: {node: '>= 10'} + dependencies: + agentkeepalive: 4.2.1 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + promise-retry: 2.0.1 + socks-proxy-agent: 5.0.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /make-fetch-happen/9.1.0: + resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} + engines: {node: '>= 10'} + dependencies: + agentkeepalive: 4.2.1 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + socks-proxy-agent: 6.2.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /map-obj/1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj/4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /markdown-extensions/1.1.1: + resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} + engines: {node: '>=0.10.0'} + dev: false + + /markdown-it-anchor/8.6.6_2zb4u3vubltivolgu556vv4aom: + resolution: {integrity: sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA==} + peerDependencies: + '@types/markdown-it': '*' + markdown-it: '*' + dependencies: + '@types/markdown-it': 12.2.3 + markdown-it: 12.3.2 + dev: true + + /markdown-it/12.3.2: + resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + hasBin: true + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: true + + /markdown-table/3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + + /marked/4.2.12: + resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} + engines: {node: '>= 12'} + hasBin: true + dev: true + + /matcher/3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 4.0.0 + dev: false + + /mdast-util-definitions/5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-find-and-replace/2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + dependencies: + '@types/mdast': 3.0.10 + escape-string-regexp: 5.0.0 + unist-util-is: 5.2.0 + unist-util-visit-parents: 5.1.3 + dev: false + + /mdast-util-from-markdown/1.3.0: + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.1.1 + micromark: 3.1.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-decode-string: 1.0.2 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-frontmatter/1.0.1: + resolution: {integrity: sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + micromark-extension-frontmatter: 1.0.0 + dev: false + + /mdast-util-gfm-autolink-literal/1.0.2: + resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} + dependencies: + '@types/mdast': 3.0.10 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.2.2 + micromark-util-character: 1.1.0 + dev: false + + /mdast-util-gfm-footnote/1.0.2: + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + micromark-util-normalize-identifier: 1.0.0 + dev: false + + /mdast-util-gfm-strikethrough/1.0.2: + resolution: {integrity: sha512-T/4DVHXcujH6jx1yqpcAYYwd+z5lAYMw4Ls6yhTfbMMtCt0PHY4gEfhW9+lKsLBtyhUGKRIzcUA2FATVqnvPDA==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + dev: false + + /mdast-util-gfm-table/1.0.6: + resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} + dependencies: + '@types/mdast': 3.0.10 + markdown-table: 3.0.3 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item/1.0.2: + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + dev: false + + /mdast-util-gfm/2.0.1: + resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} + dependencies: + mdast-util-from-markdown: 1.3.0 + mdast-util-gfm-autolink-literal: 1.0.2 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.2 + mdast-util-gfm-table: 1.0.6 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-expression/1.3.1: + resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-jsx/1.2.0: + resolution: {integrity: sha512-5+ot/kfxYd3ChgEMwsMUO71oAfYjyRI3pADEK4I7xTmWLGQ8Y7ghm1CG36zUoUvDPxMlIYwQV/9DYHAUWdG4dA==} + dependencies: + '@types/estree-jsx': 0.0.1 + '@types/mdast': 3.0.10 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.0 + stringify-entities: 4.0.3 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.3 + dev: false + + /mdast-util-mdx-jsx/2.1.0: + resolution: {integrity: sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + ccount: 2.0.1 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.0 + stringify-entities: 4.0.3 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.3 + dev: false + + /mdast-util-mdx/2.0.0: + resolution: {integrity: sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==} + dependencies: + mdast-util-mdx-expression: 1.3.1 + mdast-util-mdx-jsx: 2.1.0 + mdast-util-mdxjs-esm: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm/1.3.0: + resolution: {integrity: sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==} + dependencies: + '@types/estree-jsx': 1.0.0 + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing/3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + dependencies: + '@types/mdast': 3.0.10 + unist-util-is: 5.2.0 + dev: false + + /mdast-util-to-hast/12.2.6: + resolution: {integrity: sha512-Kfo1JNUsi6r6CI7ZOJ6yt/IEKMjMK4nNjQ8C+yc8YBbIlDSp9dmj0zY90ryiu6Vy4CVGv0zi1H4ZoIaYVV8cwA==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.1.0 + trim-lines: 3.0.1 + unist-builder: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + dev: false + + /mdast-util-to-markdown/1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + dependencies: + '@types/mdast': 3.0.10 + '@types/unist': 2.0.6 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.1.1 + micromark-util-decode-string: 1.0.2 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string/3.1.1: + resolution: {integrity: sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==} + dependencies: + '@types/mdast': 3.0.10 + dev: false + + /mdast-util-toc/6.1.1: + resolution: {integrity: sha512-Er21728Kow8hehecK2GZtb7Ny3omcoPUVrmObiSUwmoRYVZaXLR751QROEFjR8W/vAQdHMLj49Lz20J55XaNpw==} + dependencies: + '@types/extend': 3.0.1 + '@types/mdast': 3.0.10 + extend: 3.0.2 + github-slugger: 2.0.0 + mdast-util-to-string: 3.1.1 + unist-util-is: 5.2.0 + unist-util-visit: 4.1.2 + dev: false + + /mdurl/1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: true + + /meow/8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromark-core-commonmark/1.0.6: + resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.0.0 + micromark-factory-label: 1.0.2 + micromark-factory-space: 1.0.0 + micromark-factory-title: 1.0.2 + micromark-factory-whitespace: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-chunked: 1.0.0 + micromark-util-classify-character: 1.0.0 + micromark-util-html-tag-name: 1.1.0 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-subtokenize: 1.0.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-frontmatter/1.0.0: + resolution: {integrity: sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==} + dependencies: + fault: 2.0.1 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-extension-gfm-autolink-literal/1.0.3: + resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-sanitize-uri: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-footnote/1.0.4: + resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} + dependencies: + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-sanitize-uri: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-strikethrough/1.0.4: + resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-classify-character: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-table/1.0.5: + resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm-tagfilter/1.0.1: + resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-extension-gfm-task-list-item/1.0.3: + resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-gfm/2.0.1: + resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.3 + micromark-extension-gfm-footnote: 1.0.4 + micromark-extension-gfm-strikethrough: 1.0.4 + micromark-extension-gfm-table: 1.0.5 + micromark-extension-gfm-tagfilter: 1.0.1 + micromark-extension-gfm-task-list-item: 1.0.3 + micromark-util-combine-extensions: 1.0.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-extension-mdx-expression/1.0.4: + resolution: {integrity: sha512-TCgLxqW6ReQ3AJgtj1P0P+8ZThBTloLbeb7jNaqr6mCOLDpxUiBFE/9STgooMZttEwOQu5iEcCCa3ZSDhY9FGw==} + dependencies: + micromark-factory-mdx-expression: 1.0.7 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-events-to-acorn: 1.2.1 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-extension-mdx-jsx/1.0.3: + resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} + dependencies: + '@types/acorn': 4.0.6 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.7 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + vfile-message: 3.1.3 + dev: false + + /micromark-extension-mdx-md/1.0.0: + resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-extension-mdxjs-esm/1.0.3: + resolution: {integrity: sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==} + dependencies: + micromark-core-commonmark: 1.0.6 + micromark-util-character: 1.1.0 + micromark-util-events-to-acorn: 1.2.1 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.3 + dev: false + + /micromark-extension-mdxjs/1.0.0: + resolution: {integrity: sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + micromark-extension-mdx-expression: 1.0.4 + micromark-extension-mdx-jsx: 1.0.3 + micromark-extension-mdx-md: 1.0.0 + micromark-extension-mdxjs-esm: 1.0.3 + micromark-util-combine-extensions: 1.0.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-destination/1.0.0: + resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-label/1.0.2: + resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-factory-mdx-expression/1.0.7: + resolution: {integrity: sha512-QAdFbkQagTZ/eKb8zDGqmjvgevgJH3+aQpvvKrXWxNJp3o8/l2cAbbrBd0E04r0Gx6nssPpqWIjnbHFvZu5qsQ==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-events-to-acorn: 1.2.1 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + unist-util-position-from-estree: 1.1.2 + uvu: 0.5.6 + vfile-message: 3.1.3 + dev: false + + /micromark-factory-space/1.0.0: + resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-factory-title/1.0.2: + resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-factory-whitespace/1.0.0: + resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} + dependencies: + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-character/1.1.0: + resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} + dependencies: + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-chunked/1.0.0: + resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-classify-character/1.0.0: + resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-combine-extensions/1.0.0: + resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-decode-numeric-character-reference/1.0.0: + resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-decode-string/1.0.2: + resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-encode/1.0.1: + resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} + dev: false + + /micromark-util-events-to-acorn/1.2.1: + resolution: {integrity: sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.0 + estree-util-visit: 1.2.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + vfile-location: 4.0.1 + vfile-message: 3.1.3 + dev: false + + /micromark-util-html-tag-name/1.1.0: + resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} + dev: false + + /micromark-util-normalize-identifier/1.0.0: + resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} + dependencies: + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-resolve-all/1.0.0: + resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} + dependencies: + micromark-util-types: 1.0.2 + dev: false + + /micromark-util-sanitize-uri/1.1.0: + resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} + dependencies: + micromark-util-character: 1.1.0 + micromark-util-encode: 1.0.1 + micromark-util-symbol: 1.0.1 + dev: false + + /micromark-util-subtokenize/1.0.2: + resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} + dependencies: + micromark-util-chunked: 1.0.0 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + dev: false + + /micromark-util-symbol/1.0.1: + resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} + dev: false + + /micromark-util-types/1.0.2: + resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} + dev: false + + /micromark/3.1.0: + resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} + dependencies: + '@types/debug': 4.1.7 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.0.6 + micromark-factory-space: 1.0.0 + micromark-util-character: 1.1.0 + micromark-util-chunked: 1.0.0 + micromark-util-combine-extensions: 1.0.0 + micromark-util-decode-numeric-character-reference: 1.0.0 + micromark-util-encode: 1.0.1 + micromark-util-normalize-identifier: 1.0.0 + micromark-util-resolve-all: 1.0.0 + micromark-util-sanitize-uri: 1.1.0 + micromark-util-subtokenize: 1.0.2 + micromark-util-symbol: 1.0.1 + micromark-util-types: 1.0.2 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime/3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /mimic-fn/4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: false + + /mimic-response/2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + dev: true + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimist-options/4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + /minipass-collect/1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-fetch/1.4.1: + resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush/1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-json-stream/1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: true + + /minipass-pipeline/1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized/1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass/2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + dependencies: + safe-buffer: 5.2.1 + yallist: 3.1.1 + dev: true + + /minipass/3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass/4.0.0: + resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minizlib/1.3.3: + resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + dependencies: + minipass: 2.9.0 + dev: true + + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /mkdirp-classic/0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + dev: true + + /mkdirp-infer-owner/2.0.0: + resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + infer-owner: 1.0.4 + mkdirp: 1.0.4 + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mkdirp2/1.0.5: + resolution: {integrity: sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==} + dev: true + + /modify-values/1.0.1: + resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} + engines: {node: '>=0.10.0'} + dev: true + + /module-definition/3.4.0: + resolution: {integrity: sha512-XxJ88R1v458pifaSkPNLUTdSPNVGMP2SXVncVmApGO+gAfrLANiYe6JofymCzVceGOMwQE2xogxBSc8uB7XegA==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + ast-module-types: 3.0.0 + node-source-walk: 4.3.0 + dev: true + + /module-definition/4.0.0: + resolution: {integrity: sha512-wntiAHV4lDn24BQn2kX6LKq0y85phHLHiv3aOPDF+lIs06kVjEMTe/ZTdrbVLnQV5FQsjik21taknvMhKY1Cug==} + engines: {node: '>=12'} + hasBin: true + dependencies: + ast-module-types: 3.0.0 + node-source-walk: 5.0.0 + dev: true + + /module-lookup-amd/7.0.1: + resolution: {integrity: sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + commander: 2.20.3 + debug: 4.3.4 + glob: 7.2.3 + requirejs: 2.3.6 + requirejs-config-file: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /mri/1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: false + + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /multimap/1.1.0: + resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} + dev: false + + /multimatch/5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + dev: true + + /multistream/4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + dependencies: + once: 1.4.0 + readable-stream: 3.6.0 + dev: true + + /mute-stream/0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /nan/2.17.0: + resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanoid/4.0.0: + resolution: {integrity: sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + dev: false + + /napi-build-utils/1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + dev: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /next-tick/1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + + /nlcst-to-string/3.1.1: + resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==} + dependencies: + '@types/nlcst': 1.0.0 + dev: false + + /node-abi/2.30.1: + resolution: {integrity: sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==} + dependencies: + semver: 5.7.1 + dev: true + + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-fetch/2.6.8: + resolution: {integrity: sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + /node-gyp-build/4.6.0: + resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + hasBin: true + dev: false + + /node-gyp/5.1.1: + resolution: {integrity: sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==} + engines: {node: '>= 6.0.0'} + hasBin: true + dependencies: + env-paths: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + mkdirp: 0.5.6 + nopt: 4.0.3 + npmlog: 4.1.2 + request: 2.88.2 + rimraf: 2.7.1 + semver: 5.7.1 + tar: 4.4.19 + which: 1.3.1 + dev: true + + /node-gyp/7.1.2: + resolution: {integrity: sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==} + engines: {node: '>= 10.12.0'} + hasBin: true + dependencies: + env-paths: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + nopt: 5.0.0 + npmlog: 4.1.2 + request: 2.88.2 + rimraf: 3.0.2 + semver: 7.3.8 + tar: 6.1.13 + which: 2.0.2 + dev: true + + /node-releases/2.0.8: + resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + + /node-source-walk/4.3.0: + resolution: {integrity: sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==} + engines: {node: '>=6.0'} + dependencies: + '@babel/parser': 7.20.13 + dev: true + + /node-source-walk/5.0.0: + resolution: {integrity: sha512-58APXoMXpmmU+oVBJFajhTCoD8d/OGtngnVAWzIo2A8yn0IXwBzvIVIsTzoie/SrA37u+1hnpNz2HMWx/VIqlw==} + engines: {node: '>=12'} + dependencies: + '@babel/parser': 7.20.13 + dev: true + + /nopt/4.0.3: + resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + osenv: 0.1.5 + dev: true + + /nopt/5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.11.0 + semver: 7.3.8 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-bundled/1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + dependencies: + npm-normalize-package-bin: 1.0.1 + dev: true + + /npm-install-checks/4.0.0: + resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} + engines: {node: '>=10'} + dependencies: + semver: 7.3.8 + dev: true + + /npm-lifecycle/3.1.5: + resolution: {integrity: sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==} + dependencies: + byline: 5.0.0 + graceful-fs: 4.2.10 + node-gyp: 5.1.1 + resolve-from: 4.0.0 + slide: 1.1.6 + uid-number: 0.0.6 + umask: 1.1.0 + which: 1.3.1 + dev: true + + /npm-normalize-package-bin/1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + dev: true + + /npm-package-arg/8.1.5: + resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + semver: 7.3.8 + validate-npm-package-name: 3.0.0 + dev: true + + /npm-packlist/2.2.2: + resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + glob: 7.2.3 + ignore-walk: 3.0.4 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: true + + /npm-pick-manifest/6.1.1: + resolution: {integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==} + dependencies: + npm-install-checks: 4.0.0 + npm-normalize-package-bin: 1.0.1 + npm-package-arg: 8.1.5 + semver: 7.3.8 + dev: true + + /npm-registry-fetch/11.0.0: + resolution: {integrity: sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==} + engines: {node: '>=10'} + dependencies: + make-fetch-happen: 9.1.0 + minipass: 3.3.6 + minipass-fetch: 1.4.1 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 8.1.5 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /npm-registry-fetch/9.0.0: + resolution: {integrity: sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==} + engines: {node: '>=10'} + dependencies: + '@npmcli/ci-detect': 1.4.0 + lru-cache: 6.0.0 + make-fetch-happen: 8.0.14 + minipass: 3.3.6 + minipass-fetch: 1.4.1 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 8.1.5 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path/5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: false + + /npmlog/4.1.2: + resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} + dependencies: + are-we-there-yet: 1.1.7 + console-control-strings: 1.1.0 + gauge: 2.7.4 + set-blocking: 2.0.0 + dev: true + + /npmlog/5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: true + + /number-is-nan/1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + dev: true + + /oauth-sign/0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-get/2.1.1: + resolution: {integrity: sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==} + dev: true + + /object-hash/3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + /object-inspect/1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object-to-spawn-args/2.0.1: + resolution: {integrity: sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==} + engines: {node: '>=8.0.0'} + dev: true + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.getownpropertydescriptors/2.1.5: + resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} + engines: {node: '>= 0.8'} + dependencies: + array.prototype.reduce: 1.0.5 + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + + /onetime/6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: false + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /ora/6.1.2: + resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + bl: 5.1.0 + chalk: 5.2.0 + cli-cursor: 4.0.0 + cli-spinners: 2.7.0 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + strip-ansi: 7.0.1 + wcwidth: 1.0.1 + dev: false + + /os-homedir/1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + + /os-tmpdir/1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /osc-js/2.4.0: + resolution: {integrity: sha512-9cvB8m6zt/iCsmeDdFJaD4mjC8preB1Gio+NVmjT0S3qxiejTfJ8vGudyTQciL9yqQHEuINNYS5Kb94+Ceqekg==} + dependencies: + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /osenv/0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: true + + /p-finally/1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true + + /p-is-promise/3.0.0: + resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} + engines: {node: '>=8'} + dev: true + + /p-limit/1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + dependencies: + p-try: 1.0.0 + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate/2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + dependencies: + p-limit: 1.3.0 + dev: true + + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-map-series/2.1.0: + resolution: {integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==} + engines: {node: '>=8'} + dev: true + + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-pipe/3.1.0: + resolution: {integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==} + engines: {node: '>=8'} + dev: true + + /p-queue/6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + dev: true + + /p-reduce/2.1.0: + resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} + engines: {node: '>=8'} + dev: true + + /p-timeout/3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + dependencies: + p-finally: 1.0.0 + dev: true + + /p-try/1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /p-waterfall/2.1.1: + resolution: {integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==} + engines: {node: '>=8'} + dependencies: + p-reduce: 2.1.0 + dev: true + + /pacote/11.3.5: + resolution: {integrity: sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@npmcli/git': 2.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/promise-spawn': 1.3.2 + '@npmcli/run-script': 1.8.6 + cacache: 15.3.0 + chownr: 2.0.0 + fs-minipass: 2.1.0 + infer-owner: 1.0.4 + minipass: 3.3.6 + mkdirp: 1.0.4 + npm-package-arg: 8.1.5 + npm-packlist: 2.2.2 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 11.0.0 + promise-retry: 2.0.1 + read-package-json-fast: 2.0.3 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.1.13 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-entities/4.0.0: + resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} + dependencies: + '@types/unist': 2.0.6 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: false + + /parse-json/4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-latin/5.0.1: + resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==} + dependencies: + nlcst-to-string: 3.1.1 + unist-util-modify-children: 3.1.1 + unist-util-visit-children: 2.0.2 + dev: false + + /parse-path/4.0.4: + resolution: {integrity: sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==} + dependencies: + is-ssh: 1.4.0 + protocols: 1.4.8 + qs: 6.11.0 + query-string: 6.14.1 + dev: true + + /parse-url/6.0.5: + resolution: {integrity: sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==} + dependencies: + is-ssh: 1.4.0 + normalize-url: 6.1.0 + parse-path: 4.0.4 + protocols: 1.4.8 + dev: true + + /parse5/6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false + + /path-browserify/1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: false + + /path-exists/3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key/4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: false + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-to-regexp/6.2.1: + resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} + dev: false + + /path-type/3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: true + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /peggy/2.0.1: + resolution: {integrity: sha512-mBqfmdUAOVn7RILpXTbcRBhLfTR4Go0SresSnivGDdRylBOyVFJncFiVyCNNpPWq8HmgeRleXHs/Go4o8kQVXA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + commander: 9.5.0 + source-map-generator: 0.8.0 + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /periscopic/3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.0 + estree-walker: 3.0.3 + is-reference: 3.0.1 + dev: false + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + /pify/3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + /pify/5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: true + + /pinkie-promise/2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + + /pkg-fetch/3.4.2: + resolution: {integrity: sha512-0+uijmzYcnhC0hStDjm/cl2VYdrmVVBpe7Q8k9YBojxmR5tG8mvR9/nooQq3QSXiQqORDVOTY3XqMEqJVIzkHA==} + hasBin: true + dependencies: + chalk: 4.1.2 + fs-extra: 9.1.0 + https-proxy-agent: 5.0.1 + node-fetch: 2.6.8 + progress: 2.0.3 + semver: 7.3.8 + tar-fs: 2.1.1 + yargs: 16.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /pkg-up/3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false + + /pkg/5.8.0: + resolution: {integrity: sha512-8h9PUDYFi+LOMLbIyGRdP21g08mAtHidSpofSrf8LWhxUWGHymaRzcopEGiynB5EhQmZUKM6PQ9kCImV2TpdjQ==} + hasBin: true + peerDependencies: + node-notifier: '>=9.0.1' + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@babel/generator': 7.18.2 + '@babel/parser': 7.18.4 + '@babel/types': 7.18.4 + chalk: 4.1.2 + fs-extra: 9.1.0 + globby: 11.1.0 + into-stream: 6.0.0 + is-core-module: 2.9.0 + minimist: 1.2.7 + multistream: 4.1.0 + pkg-fetch: 3.4.2 + prebuild-install: 6.1.4 + resolve: 1.22.1 + stream-meter: 1.0.4 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /postcss-import/14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + + /postcss-import/14.1.0_postcss@8.4.21: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: true + + /postcss-js/4.0.0: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + dev: false + + /postcss-js/4.0.0_postcss@8.4.21: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.21 + dev: true + + /postcss-load-config/3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + yaml: 1.10.2 + dev: false + + /postcss-load-config/3.1.4_postcss@8.4.21: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + postcss: 8.4.21 + yaml: 1.10.2 + + /postcss-nested/6.0.0: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-nested/6.0.0_postcss@8.4.21: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-selector-parser/6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss-values-parser/6.0.2_postcss@8.4.21: + resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==} + engines: {node: '>=10'} + peerDependencies: + postcss: ^8.2.9 + dependencies: + color-name: 1.1.4 + is-url-superb: 4.0.0 + postcss: 8.4.21 + quote-unquote: 1.0.0 + dev: true + + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /preact-render-to-string/5.2.6_preact@10.11.3: + resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.11.3 + pretty-format: 3.8.0 + dev: false + + /preact/10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + dev: false + + /prebuild-install/6.1.4: + resolution: {integrity: sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + detect-libc: 1.0.3 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.7 + mkdirp-classic: 0.5.3 + napi-build-utils: 1.0.2 + node-abi: 2.30.1 + npmlog: 4.1.2 + pump: 3.0.0 + rc: 1.2.8 + simple-get: 3.1.1 + tar-fs: 2.1.1 + tunnel-agent: 0.6.0 + dev: true + + /precinct/9.0.1: + resolution: {integrity: sha512-hVNS6JvfvlZ64B3ezKeGAcVhIuOvuAiSVzagHX/+KjVPkYWoCNkfyMgCl1bjDtAFQSlzi95NcS9ykUWrl1L1vA==} + engines: {node: ^12.20.0 || ^14.14.0 || >=16.0.0} + hasBin: true + dependencies: + commander: 9.5.0 + detective-amd: 4.0.1 + detective-cjs: 4.0.0 + detective-es6: 3.0.0 + detective-less: 1.0.2 + detective-postcss: 6.1.0 + detective-sass: 4.0.1 + detective-scss: 3.0.0 + detective-stylus: 2.0.1 + detective-typescript: 9.0.0 + module-definition: 4.0.0 + node-source-walk: 5.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /preferred-pm/3.0.3: + resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + dev: false + + /prelude-ls/1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-plugin-astro/0.7.2: + resolution: {integrity: sha512-mmifnkG160BtC727gqoimoxnZT/dwr8ASxpoGGl6EHevhfblSOeu+pwH1LAm5Qu1MynizktztFujHHaijLCkww==} + engines: {node: ^14.15.0 || >=16.0.0, pnpm: '>=7.14.0'} + dependencies: + '@astrojs/compiler': 0.31.4 + prettier: 2.8.3 + sass-formatter: 0.7.5 + synckit: 0.8.5 + dev: false + + /prettier/2.8.3: + resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} + engines: {node: '>=10.13.0'} + hasBin: true + + /pretty-format/3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + dev: false + + /prismjs/1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /promise-inflight/1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-retry/2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: false + + /promzard/0.3.0: + resolution: {integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==} + dependencies: + read: 1.0.7 + dev: true + + /property-information/6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} + dev: false + + /proto-list/1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true + + /protocols/1.4.8: + resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==} + dev: true + + /protocols/2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + dev: true + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /q/1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + + /qs/6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /query-string/6.14.1: + resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-lru/4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + /quote-unquote/1.0.0: + resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} + dev: true + + /rambda/7.4.0: + resolution: {integrity: sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==} + dev: false + + /rc/1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.7 + strip-json-comments: 2.0.1 + dev: true + + /react-dom/17.0.2_react@17.0.2: + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-hook-inview/4.5.0_sfoxds7t5ydpegc3knd667wn6m: + resolution: {integrity: sha512-Hm61BK32/K2Cc3bjBe2bQkndHbQP6NhHvWVX7zYitaitB6T28uUV+wlgxbXU9twxUt7+17HyHq6aezpMUCijQQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 17.0.2 + react-dom: 17.0.2_react@17.0.2 + dev: false + + /react-refresh/0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react/17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache/1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + + /read-cmd-shim/2.0.0: + resolution: {integrity: sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==} + dev: true + + /read-package-json-fast/2.0.3: + resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} + engines: {node: '>=10'} + dependencies: + json-parse-even-better-errors: 2.3.1 + npm-normalize-package-bin: 1.0.1 + dev: true + + /read-package-json/2.1.2: + resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==} + dependencies: + glob: 7.2.3 + json-parse-even-better-errors: 2.3.1 + normalize-package-data: 2.5.0 + npm-normalize-package-bin: 1.0.1 + dev: true + + /read-package-json/3.0.1: + resolution: {integrity: sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng==} + engines: {node: '>=10'} + dependencies: + glob: 7.2.3 + json-parse-even-better-errors: 2.3.1 + normalize-package-data: 3.0.3 + npm-normalize-package-bin: 1.0.1 + dev: true + + /read-package-json/4.1.2: + resolution: {integrity: sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ==} + engines: {node: '>=10'} + dependencies: + glob: 7.2.3 + json-parse-even-better-errors: 2.3.1 + normalize-package-data: 3.0.3 + npm-normalize-package-bin: 1.0.1 + dev: true + + /read-package-tree/5.3.1: + resolution: {integrity: sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==} + deprecated: The functionality that this package provided is now in @npmcli/arborist + dependencies: + read-package-json: 2.1.2 + readdir-scoped-modules: 1.1.0 + util-promisify: 2.1.0 + dev: true + + /read-pkg-up/3.0.0: + resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} + engines: {node: '>=4'} + dependencies: + find-up: 2.1.0 + read-pkg: 3.0.0 + dev: true + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /read/1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + dependencies: + mute-stream: 0.0.8 + dev: true + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /readdir-scoped-modules/1.1.0: + resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + debuglog: 1.0.1 + dezalgo: 1.0.4 + graceful-fs: 4.2.10 + once: 1.4.0 + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /recast/0.20.5: + resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.14.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.5.0 + dev: false + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /reduce-extract/1.0.0: + resolution: {integrity: sha512-QF8vjWx3wnRSL5uFMyCjDeDc5EBMiryoT9tz94VvgjKfzecHAVnqmXAwQDcr7X4JmLc2cjkjFGCVzhMqDjgR9g==} + engines: {node: '>=0.10.0'} + dependencies: + test-value: 1.1.0 + dev: true + + /reduce-flatten/1.0.1: + resolution: {integrity: sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==} + engines: {node: '>=0.10.0'} + dev: true + + /reduce-flatten/3.0.1: + resolution: {integrity: sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==} + engines: {node: '>=8'} + dev: true + + /reduce-unique/2.0.1: + resolution: {integrity: sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==} + engines: {node: '>=6'} + dev: true + + /reduce-without/1.0.1: + resolution: {integrity: sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==} + engines: {node: '>=0.10.0'} + dependencies: + test-value: 2.1.0 + dev: true + + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + /rehype-autolink-headings/6.1.1: + resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} + dependencies: + '@types/hast': 2.3.4 + extend: 3.0.2 + hast-util-has-property: 2.0.1 + hast-util-heading-rank: 2.1.1 + hast-util-is-element: 2.1.3 + unified: 10.1.2 + unist-util-visit: 4.1.2 + dev: false + + /rehype-parse/8.0.4: + resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} + dependencies: + '@types/hast': 2.3.4 + hast-util-from-parse5: 7.1.1 + parse5: 6.0.1 + unified: 10.1.2 + dev: false + + /rehype-raw/6.1.1: + resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} + dependencies: + '@types/hast': 2.3.4 + hast-util-raw: 7.2.3 + unified: 10.1.2 + dev: false + + /rehype-slug/5.1.0: + resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==} + dependencies: + '@types/hast': 2.3.4 + github-slugger: 2.0.0 + hast-util-has-property: 2.0.1 + hast-util-heading-rank: 2.1.1 + hast-util-to-string: 2.0.0 + unified: 10.1.2 + unist-util-visit: 4.1.2 + dev: false + + /rehype-stringify/9.0.3: + resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==} + dependencies: + '@types/hast': 2.3.4 + hast-util-to-html: 8.0.4 + unified: 10.1.2 + dev: false + + /rehype/12.0.1: + resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} + dependencies: + '@types/hast': 2.3.4 + rehype-parse: 8.0.4 + rehype-stringify: 9.0.3 + unified: 10.1.2 + dev: false + + /remark-frontmatter/4.0.1: + resolution: {integrity: sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-frontmatter: 1.0.1 + micromark-extension-frontmatter: 1.0.0 + unified: 10.1.2 + dev: false + + /remark-gfm/3.0.1: + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-gfm: 2.0.1 + micromark-extension-gfm: 2.0.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-mdx/2.2.1: + resolution: {integrity: sha512-R9wcN+/THRXTKyRBp6Npo/mcbGA2iT3N4G8qUqLA5pOEg7kBidHv8K2hHidCMYZ6DXmwK18umu0K4cicgA2PPQ==} + dependencies: + mdast-util-mdx: 2.0.0 + micromark-extension-mdxjs: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse/10.0.1: + resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-from-markdown: 1.3.0 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype/10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + dependencies: + '@types/hast': 2.3.4 + '@types/mdast': 3.0.10 + mdast-util-to-hast: 12.2.6 + unified: 10.1.2 + dev: false + + /remark-smartypants/2.0.0: + resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + retext: 8.1.0 + retext-smartypants: 5.2.0 + unist-util-visit: 4.1.2 + dev: false + + /remark-toc/8.0.1: + resolution: {integrity: sha512-7he2VOm/cy13zilnOTZcyAoyoolV26ULlon6XyCFU+vG54Z/LWJnwphj/xKIDLOt66QmJUgTyUvLVHi2aAElyg==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-toc: 6.1.1 + unified: 10.1.2 + dev: false + + /remove-trailing-separator/1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: false + + /replace-ext/1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + dev: false + + /request/2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /requirejs-config-file/4.0.0: + resolution: {integrity: sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==} + engines: {node: '>=10.13.0'} + dependencies: + esprima: 4.0.1 + stringify-object: 3.3.0 + dev: true + + /requirejs/2.3.6: + resolution: {integrity: sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /requizzle/0.2.4: + resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} + dependencies: + lodash: 4.17.21 + dev: true + + /reselect/4.1.7: + resolution: {integrity: sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==} + dev: false + + /resolve-cwd/3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-dependency-path/2.0.0: + resolution: {integrity: sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w==} + engines: {node: '>=6.0.0'} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /restore-cursor/4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: false + + /retext-latin/3.1.0: + resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==} + dependencies: + '@types/nlcst': 1.0.0 + parse-latin: 5.0.1 + unherit: 3.0.1 + unified: 10.1.2 + dev: false + + /retext-smartypants/5.2.0: + resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==} + dependencies: + '@types/nlcst': 1.0.0 + nlcst-to-string: 3.1.1 + unified: 10.1.2 + unist-util-visit: 4.1.2 + dev: false + + /retext-stringify/3.1.0: + resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==} + dependencies: + '@types/nlcst': 1.0.0 + nlcst-to-string: 3.1.1 + unified: 10.1.2 + dev: false + + /retext/8.1.0: + resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==} + dependencies: + '@types/nlcst': 1.0.0 + retext-latin: 3.1.0 + retext-stringify: 3.1.0 + unified: 10.1.2 + dev: false + + /retry/0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /roarr/2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.3 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.2 + dev: false + + /rollup-plugin-visualizer/5.9.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.0 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.6.2 + dev: true + + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + + /rollup/3.12.0: + resolution: {integrity: sha512-4MZ8kA2HNYahIjz63rzrMMRvDqQDeS9LoriJvMuV0V6zIGysP36e9t4yObUfwdT9h/szXoHQideICftcdZklWg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-async/2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rxjs/6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /s.color/0.0.15: + resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} + dev: false + + /sade/1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: false + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sass-formatter/0.7.5: + resolution: {integrity: sha512-NKFP8ddjhUYi6A/iD1cEtzkEs91U61kzqe3lY9SVNuvX7LGc88xnEN0mmsWL7Ol//YTi2GL/ol7b9XZ2+hgXuA==} + dependencies: + suf-log: 2.5.3 + dev: false + + /sass-lookup/3.0.0: + resolution: {integrity: sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + commander: 2.20.3 + dev: true + + /scheduler/0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /section-matter/1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + dev: false + + /semver-compare/1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: false + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /serialize-error/7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.13.1 + dev: false + + /set-blocking/2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /sfumato/0.1.2: + resolution: {integrity: sha512-j2s5BLUS5VUNtaK1l+v+yal3XjjV7JXCQIwE5Xs4yiQ3HJ+2Fc/dd3IkkrVHn0AJO2epShSWVoP3GnE0TvPdMg==} + dependencies: + soundfont2: 0.4.0 + dev: false + + /shallow-clone/3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shift-ast/7.0.0: + resolution: {integrity: sha512-O0INwsZa1XH/lMSf52udGnjNOxKBLxFiZHt0Ys3i6bqtwuGEA3eDR4+e0qJELIsCy8+BiTtlTgQzP76K1ehipQ==} + dev: false + + /shift-codegen/8.1.0: + resolution: {integrity: sha512-hV48SiFM0pgTLCueh0iwqbvqElXPtZL69nb+3eXOU3iZZnLP+AlBQSLKKvHSPr/Onmk0lcUEkAM7RA6V6Wj1GQ==} + dependencies: + esutils: 2.0.3 + object-assign: 4.1.1 + shift-reducer: 7.0.0 + dev: false + + /shift-parser/8.0.0: + resolution: {integrity: sha512-IShW1wGhvA5e+SPNVQ+Dwi/Be6651F2jZc6wwYHbYW7PiswAYfvR/v3Q+CjjxsVCna5L6J5OtR6y+tkkCzvCfw==} + dependencies: + multimap: 1.1.0 + shift-ast: 7.0.0 + shift-reducer: 7.0.0 + shift-regexp-acceptor: 3.0.0 + dev: false + + /shift-reducer/7.0.0: + resolution: {integrity: sha512-9igIDMHzp1+CkQZITGHM1sAd9jqMPV0vhqHuh8jlYumHSMIwsYcrDeo1tlpzNRUnfbEq1nLyh8Bf1YU8HGUE7g==} + dependencies: + shift-ast: 7.0.0 + dev: false + + /shift-regexp-acceptor/3.0.0: + resolution: {integrity: sha512-98UKizBjHY6SjjLUr51YYw4rtR+vxjGFm8znqNsoahesAI8Y9+WVAyiBCxxkov1KSDhW0Wz8FwwUqHnlFnjdUg==} + dependencies: + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.0.2 + unicode-property-aliases-ecmascript: 1.0.4 + dev: false + + /shift-spec/2018.0.0: + resolution: {integrity: sha512-/aiPOkj7dbe+CV2VZhIMTHQToZmgniofpRG7Yr7x2/0sO6CSVC++py1Wzf+s+rWSTDHKcLvziVAxjRRV4i4EoQ==} + dev: false + + /shift-spec/2019.0.0: + resolution: {integrity: sha512-vYfKl+afWPUj/wfr5T/+mdYvWx0nn8LY6hVdfZmFENdGEBpAfQyOTo4/5i+rs8mj+Jz4+0MnsP4vXagjEoHfEw==} + dev: false + + /shift-traverser/1.0.0: + resolution: {integrity: sha512-DMY3512wJbdC+IC+nhLH3/Stgr2BbxbNcg7qyZ6+e5qNnNs8TBQJWdMsRgHlX1JXwF4C0ONKS8VUxsPT0Tf7aw==} + dependencies: + estraverse: 4.2.0 + shift-spec: 2018.0.0 + dev: false + + /shiki/0.11.1: + resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + dependencies: + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 6.0.0 + dev: false + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /simple-concat/1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: true + + /simple-get/3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + dev: true + + /sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 + + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false + + /slide/1.1.6: + resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} + dev: true + + /smart-buffer/4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /socks-proxy-agent/5.0.1: + resolution: {integrity: sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks-proxy-agent/6.2.1: + resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks/2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: true + + /sort-array/4.1.5: + resolution: {integrity: sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==} + engines: {node: '>=10'} + dependencies: + array-back: 5.0.0 + typical: 6.0.1 + dev: true + + /sort-keys/2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /sort-keys/4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} + dependencies: + is-plain-obj: 2.1.0 + dev: true + + /soundfont2/0.4.0: + resolution: {integrity: sha512-537WiurDBRbDLVhJMxXLE06D6yWxJCidfPClnibZ0f8dKMDpv+0fIfwCQ8pELE0JqKX05SOJosNJgKzQobaAEA==} + dev: false + + /source-map-generator/0.8.0: + resolution: {integrity: sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==} + engines: {node: '>= 10'} + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map/0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true + + /space-separated-tokens/2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-license-ids/3.0.12: + resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + dev: true + + /split-on-first/1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: true + + /split/1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + dependencies: + through: 2.3.8 + dev: true + + /split2/3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.0 + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false + + /sprintf-js/1.1.2: + resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + dev: false + + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /ssri/8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /standardized-audio-context/25.3.37: + resolution: {integrity: sha512-lr0+RH/IJXYMts95oYKIJ+orTmstOZN3GXWVGmlkbMj8OLahREkRh7DhNGLYgBGDkBkhhc4ev5pYGSFN3gltHw==} + dependencies: + '@babel/runtime': 7.20.13 + automation-events: 5.0.0 + tslib: 2.5.0 + dev: false + + /stream-connect/1.0.2: + resolution: {integrity: sha512-68Kl+79cE0RGKemKkhxTSg8+6AGrqBt+cbZAXevg2iJ6Y3zX4JhA/sZeGzLpxW9cXhmqAcE7KnJCisUmIUfnFQ==} + engines: {node: '>=0.10.0'} + dependencies: + array-back: 1.0.4 + dev: true + + /stream-meter/1.0.4: + resolution: {integrity: sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==} + dependencies: + readable-stream: 2.3.7 + dev: true + + /stream-via/1.0.4: + resolution: {integrity: sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strict-uri-encode/2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: true + + /string-width/1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width/5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + dev: false + + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: true + + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: true + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /stringify-entities/4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false + + /stringify-object/3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi/3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-bom-string/1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + dev: false + + /strip-bom/3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline/3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: false + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal/1.0.0: + resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} + dependencies: + acorn: 8.8.2 + dev: true + + /strip-outer/1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /strong-log-transformer/2.1.0: + resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} + engines: {node: '>=4'} + hasBin: true + dependencies: + duplexer: 0.1.2 + minimist: 1.2.7 + through: 2.3.8 + dev: true + + /style-mod/4.0.0: + resolution: {integrity: sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==} + dev: false + + /style-to-object/0.4.1: + resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} + dependencies: + inline-style-parser: 0.1.1 + dev: false + + /stylus-lookup/3.0.2: + resolution: {integrity: sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + commander: 2.20.3 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /suf-log/2.5.3: + resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} + dependencies: + s.color: 0.0.15 + dev: false + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-esm/1.0.0: + resolution: {integrity: sha512-96Am8CDqUaC0I2+C/swJ0yEvM8ZnGn4unoers/LSdE4umhX7mELzqyLzx3HnZAluq5PXIsGMKqa7NkqaeHMPcg==} + dependencies: + has-package-exports: 1.3.0 + dev: false + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /synckit/0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.0 + dev: false + + /table-layout/0.4.5: + resolution: {integrity: sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 2.0.0 + deep-extend: 0.6.0 + lodash.padend: 4.6.1 + typical: 2.6.1 + wordwrapjs: 3.0.0 + dev: true + + /taffydb/2.6.2: + resolution: {integrity: sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==} + dev: true + + /tailwindcss/3.2.4: + resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0 + postcss-js: 4.0.0 + postcss-load-config: 3.1.4 + postcss-nested: 6.0.0 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: false + + /tailwindcss/3.2.4_postcss@8.4.21: + resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + detective: 5.2.1 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.0_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + transitivePeerDependencies: + - ts-node + dev: true + + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar-fs/2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 2.2.0 + dev: true + + /tar-stream/2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /tar/4.4.19: + resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} + engines: {node: '>=4.5'} + dependencies: + chownr: 1.1.4 + fs-minipass: 1.2.7 + minipass: 2.9.0 + minizlib: 1.3.3 + mkdirp: 0.5.6 + safe-buffer: 5.2.1 + yallist: 3.1.1 + dev: true + + /tar/6.1.13: + resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 4.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /temp-dir/1.0.0: + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} + dev: true + + /temp-path/1.0.0: + resolution: {integrity: sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==} + dev: true + + /temp-write/4.0.0: + resolution: {integrity: sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.10 + is-stream: 2.0.1 + make-dir: 3.1.0 + temp-dir: 1.0.0 + uuid: 3.4.0 + dev: true + + /test-exclude/6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /test-value/1.1.0: + resolution: {integrity: sha512-wrsbRo7qP+2Je8x8DsK8ovCGyxe3sYfQwOraIY/09A2gFXU9DYKiTF14W4ki/01AEh56kMzAmlj9CaHGDDUBJA==} + engines: {node: '>=0.10.0'} + dependencies: + array-back: 1.0.4 + typical: 2.6.1 + dev: true + + /test-value/2.1.0: + resolution: {integrity: sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==} + engines: {node: '>=0.10.0'} + dependencies: + array-back: 1.0.4 + typical: 2.6.1 + dev: true + + /test-value/3.0.0: + resolution: {integrity: sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 2.0.0 + typical: 2.6.1 + dev: true + + /text-encoding-shim/1.0.5: + resolution: {integrity: sha512-H7yYW+jRn4yhu60ygZ2f/eMhXPITRt4QSUTKzLm+eCaDsdX8avmgWpmtmHAzesjBVUTAypz9odu5RKUjX5HNYA==} + dev: false + + /text-extensions/1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /through2/2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.7 + xtend: 4.0.2 + dev: true + + /through2/4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.0 + dev: true + + /tiny-glob/0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: false + + /tinybench/2.3.1: + resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} + dev: true + + /tinypool/0.3.1: + resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/1.0.2: + resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} + engines: {node: '>=14.0.0'} + dev: true + + /tmp/0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /tone/14.7.77: + resolution: {integrity: sha512-tCfK73IkLHyzoKUvGq47gyDyxiKLFvKiVCOobynGgBB9Dl0NkxTM2p+eRJXyCYrjJwy9Y0XCMqD3uOYsYt2Fdg==} + dependencies: + standardized-audio-context: 25.3.37 + tslib: 2.5.0 + dev: false + + /totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + engines: {node: '>=6'} + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + dev: true + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tr46/2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.3.0 + dev: true + + /trim-lines/3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false + + /trim-newlines/3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /trim-repeated/1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /trough/2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: false + + /tsconfig-paths/3.14.1: + resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.7 + strip-bom: 3.0.0 + dev: true + + /tsconfig-resolver/3.0.1: + resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} + dependencies: + '@types/json5': 0.0.30 + '@types/resolve': 1.20.2 + json5: 2.2.3 + resolve: 1.22.1 + strip-bom: 4.0.0 + type-fest: 0.13.1 + dev: false + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + dev: false + + /tsm/2.3.0: + resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + esbuild: 0.15.18 + dev: false + + /tsutils/3.21.0_typescript@4.9.4: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.4 + dev: true + + /tunnel-agent/0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest/0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + dev: false + + /type-fest/0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.4.1: + resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==} + engines: {node: '>=6'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-fest/2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + + /type/1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type/2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: true + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + + /typescript/3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /typescript/4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + engines: {node: '>=4.2.0'} + hasBin: true + + /typical/2.6.1: + resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} + dev: true + + /typical/4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /typical/6.0.1: + resolution: {integrity: sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==} + engines: {node: '>=10'} + dev: true + + /uc.micro/1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: true + + /uglify-js/3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /uid-number/0.0.6: + resolution: {integrity: sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==} + dev: true + + /umask/1.1.0: + resolution: {integrity: sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==} + dev: true + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /underscore/1.13.6: + resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} + dev: true + + /unherit/3.0.1: + resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} + dev: false + + /unicode-canonical-property-names-ecmascript/1.0.4: + resolution: {integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==} + engines: {node: '>=4'} + dev: false + + /unicode-match-property-ecmascript/1.0.4: + resolution: {integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.0.4 + dev: false + + /unicode-match-property-value-ecmascript/1.0.2: + resolution: {integrity: sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript/1.0.4: + resolution: {integrity: sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==} + engines: {node: '>=4'} + dev: false + + /unified/10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + dependencies: + '@types/unist': 2.0.6 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.6 + dev: false + + /unique-filename/1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + dependencies: + unique-slug: 2.0.2 + dev: true + + /unique-slug/2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /unist-builder/3.0.1: + resolution: {integrity: sha512-gnpOw7DIpCA0vpr6NqdPvTWnlPTApCTRzr+38E6hCWx3rz/cjo83SsKIlS1Z+L5ttScQ2AwutNnb8+tAvpb6qQ==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-generated/2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + dev: false + + /unist-util-is/5.2.0: + resolution: {integrity: sha512-Glt17jWwZeyqrFqOK0pF1Ded5U3yzJnFr8CG1GMjCWTp9zDo2p+cmD6pWbZU8AgM5WU3IzRv6+rBwhzsGh6hBQ==} + dev: false + + /unist-util-map/3.1.3: + resolution: {integrity: sha512-4/mDauoxqZ6geK97lJ6n2kDk6JK88Vh+hWMSJqyaaP/7eqN1dDhjcjnNxKNm3YU6Sw7PVJtcFMUbnmHvYzb6Vg==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-modify-children/3.1.1: + resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} + dependencies: + '@types/unist': 2.0.6 + array-iterate: 2.0.1 + dev: false + + /unist-util-position-from-estree/1.1.2: + resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-position/4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-remove-position/4.0.2: + resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} + dependencies: + '@types/unist': 2.0.6 + unist-util-visit: 4.1.2 + dev: false + + /unist-util-stringify-position/3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-visit-children/2.0.2: + resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /unist-util-visit-parents/5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.2.0 + dev: false + + /unist-util-visit/4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 5.2.0 + unist-util-visit-parents: 5.1.3 + dev: false + + /universal-user-agent/6.0.0: + resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} + dev: true + + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /unmute-ios-audio/3.3.0: + resolution: {integrity: sha512-MmoCOrsS2gn3wLT2tT+hF56Q4V4kksIKn2LHrwAtX6umzQwQHDWSh1slMzH+0WuxTZ62s3w8/wsfIII1FQ7ACg==} + dev: false + + /upath/2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + dev: true + + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /utf-8-validate/5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.6.0 + dev: false + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util-promisify/2.1.0: + resolution: {integrity: sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==} + dependencies: + object.getownpropertydescriptors: 2.1.5 + dev: true + + /uuid/3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /uvu/0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: false + + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name/3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + dependencies: + builtins: 1.0.3 + dev: true + + /verror/1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vfile-location/4.0.1: + resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} + dependencies: + '@types/unist': 2.0.6 + vfile: 5.3.6 + dev: false + + /vfile-message/3.1.3: + resolution: {integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 3.0.3 + dev: false + + /vfile/5.3.6: + resolution: {integrity: sha512-ADBsmerdGBs2WYckrLBEmuETSPyTD4TuLxTrw0DvjirxW1ra4ZwkbzG8ndsv3Q57smvHxo677MHaQrY9yxH8cA==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.3 + dev: false + + /vinyl-sourcemaps-apply/0.2.1: + resolution: {integrity: sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==} + dependencies: + source-map: 0.5.7 + dev: false + + /vinyl/2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + dev: false + + /vite/3.2.5: + resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.15.18 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vite/3.2.5_@types+node@18.11.18: + resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.11.18 + esbuild: 0.15.18 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /vite/4.0.4_@types+node@18.11.18: + resolution: {integrity: sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.11.18 + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.12.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitefu/0.2.4_vite@3.2.5: + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 3.2.5_@types+node@18.11.18 + dev: false + + /vitest/0.25.8_@vitest+ui@0.25.8: + resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.11.18 + '@vitest/ui': 0.25.8 + acorn: 8.8.2 + acorn-walk: 8.2.0 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.3 + source-map: 0.6.1 + strip-literal: 1.0.0 + tinybench: 2.3.1 + tinypool: 0.3.1 + tinyspy: 1.0.2 + vite: 4.0.4_@types+node@18.11.18 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vscode-css-languageservice/6.2.3: + resolution: {integrity: sha512-EAyhyIVHpEaf+GjtI+tVe7SekdoANfG0aubnspsQwak3Qkimn/97FpAufNyXk636ngW05pjNKAR9zyTCzo6avQ==} + dependencies: + '@vscode/l10n': 0.0.11 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.2 + vscode-uri: 3.0.7 + dev: false + + /vscode-html-languageservice/5.0.4: + resolution: {integrity: sha512-tvrySfpglu4B2rQgWGVO/IL+skvU7kBkQotRlxA7ocSyRXOZUd6GA13XHkxo8LPe07KWjeoBlN1aVGqdfTK4xA==} + dependencies: + '@vscode/l10n': 0.0.11 + vscode-languageserver-textdocument: 1.0.8 + vscode-languageserver-types: 3.17.2 + vscode-uri: 3.0.7 + dev: false + + /vscode-jsonrpc/8.0.2: + resolution: {integrity: sha512-RY7HwI/ydoC1Wwg4gJ3y6LpU9FJRZAUnTYMXthqhFXXu77ErDd/xkREpGuk4MyYkk4a+XDWAMqe0S3KkelYQEQ==} + engines: {node: '>=14.0.0'} + dev: false + + /vscode-languageserver-protocol/3.17.2: + resolution: {integrity: sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==} + dependencies: + vscode-jsonrpc: 8.0.2 + vscode-languageserver-types: 3.17.2 + dev: false + + /vscode-languageserver-textdocument/1.0.8: + resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} + dev: false + + /vscode-languageserver-types/3.17.2: + resolution: {integrity: sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==} + dev: false + + /vscode-languageserver/8.0.2: + resolution: {integrity: sha512-bpEt2ggPxKzsAOZlXmCJ50bV7VrxwCS5BI4+egUmure/oI/t4OlFzi/YNtVvY24A2UDOZAgwFGgnZPwqSJubkA==} + hasBin: true + dependencies: + vscode-languageserver-protocol: 3.17.2 + dev: false + + /vscode-oniguruma/1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: false + + /vscode-textmate/6.0.0: + resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + dev: false + + /vscode-uri/2.1.2: + resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} + dev: false + + /vscode-uri/3.0.7: + resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} + dev: false + + /w3c-keyname/2.2.6: + resolution: {integrity: sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==} + dev: false + + /walk-back/2.0.1: + resolution: {integrity: sha512-Nb6GvBR8UWX1D+Le+xUq0+Q1kFmRBIWVrfLnQAOmcpEzA9oAxwJ9gIr36t9TWYfzvWRvuMtjHiVsJYEkXWaTAQ==} + engines: {node: '>=0.10.0'} + dev: true + + /walk-back/5.1.0: + resolution: {integrity: sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==} + engines: {node: '>=12.17'} + dev: true + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + + /web-midi-api/2.2.2: + resolution: {integrity: sha512-lQFqcdmzoxLx1833DOC4bavfk9Cp5bjkC5SlZAceqsuUoc2j+fYSbqv45XwJqeECkCUXzB9UQ8wyWr40ppINhw==} + dependencies: + jzz: 1.5.9 + dev: false + + /web-namespaces/2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false + + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /webidl-conversions/6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + dev: true + + /webmidi/3.1.2: + resolution: {integrity: sha512-PSt1aEh6fkbGe2alybuix042bFnK1Q878Kydzgi10hcEvJ4wPauOQTt+GG3oKePgLio9FomyCR84/ikbqHbHAQ==} + engines: {node: '>=8.5'} + dependencies: + djipevents: 2.0.7 + optionalDependencies: + jzz: 1.5.9 + dev: false + + /websocket/1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.7 + debug: 2.6.9 + es5-ext: 0.10.62 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + /whatwg-url/8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-pm-runs/1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + dev: false + + /which-pm/2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: false + + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wide-align/1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 1.0.2 + dev: true + + /widest-line/4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: false + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /wordwrap/1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true + + /wordwrapjs/3.0.0: + resolution: {integrity: sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==} + engines: {node: '>=4.0.0'} + dependencies: + reduce-flatten: 1.0.1 + typical: 2.6.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.0.1 + dev: false + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic/2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.10 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-json-file/3.2.0: + resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==} + engines: {node: '>=6'} + dependencies: + detect-indent: 5.0.0 + graceful-fs: 4.2.10 + make-dir: 2.1.0 + pify: 4.0.1 + sort-keys: 2.0.0 + write-file-atomic: 2.4.3 + dev: true + + /write-json-file/4.3.0: + resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==} + engines: {node: '>=8.3'} + dependencies: + detect-indent: 6.1.0 + graceful-fs: 4.2.10 + is-plain-obj: 2.1.0 + make-dir: 3.1.0 + sort-keys: 4.2.0 + write-file-atomic: 3.0.3 + dev: true + + /write-pkg/4.0.0: + resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==} + engines: {node: '>=8'} + dependencies: + sort-keys: 2.0.0 + type-fest: 0.4.1 + write-json-file: 3.2.0 + dev: true + + /ws/8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /xmlcreate/2.0.4: + resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} + dev: true + + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yaeti/0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: false + + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + /yargs-parser/20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + /yargs/16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zod/3.20.2: + resolution: {integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==} + dev: false + + /zwitch/2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false + + github.com/dktr0/WebDirt/8bdd7478ae05f74cbd5003936da23ce9bc6fc7c7: + resolution: {tarball: https://codeload.github.com/dktr0/WebDirt/tar.gz/8bdd7478ae05f74cbd5003936da23ce9bc6fc7c7} + name: webdirt + version: 1.0.1 + dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..fd397ad59 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + # all packages in direct subdirs of packages/ + - "packages/*" + - "website/" \ No newline at end of file diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 9dca58df5..ccc169dc4 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -32,6 +32,12 @@ export default defineConfig({ ], site: `https://strudel.tidalcycles.org`, base: '/', + vite: { + ssr: { + // Example: Force a broken package to skip SSR processing, if needed + external: ['fraction.js'], // https://github.com/infusion/Fraction.js/issues/51 + }, + }, }); /* diff --git a/website/package.json b/website/package.json index 2101c41a2..83b311d76 100644 --- a/website/package.json +++ b/website/package.json @@ -21,6 +21,18 @@ "@docsearch/react": "^3.1.0", "@headlessui/react": "^1.7.7", "@heroicons/react": "^2.0.13", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/csound": "workspace:*", + "@strudel.cycles/midi": "workspace:*", + "@strudel.cycles/mini": "workspace:*", + "@strudel.cycles/osc": "workspace:*", + "@strudel.cycles/react": "workspace:*", + "@strudel.cycles/serial": "workspace:*", + "@strudel.cycles/soundfonts": "workspace:*", + "@strudel.cycles/tonal": "workspace:*", + "@strudel.cycles/transpiler": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", + "@strudel.cycles/xen": "workspace:*", "@supabase/supabase-js": "^1.35.3", "@tailwindcss/typography": "^0.5.8", "@types/node": "^18.0.0", diff --git a/website/src/repl/Repl.jsx b/website/src/repl/Repl.jsx index 8c94d1572..5c3623bdc 100644 --- a/website/src/repl/Repl.jsx +++ b/website/src/repl/Repl.jsx @@ -16,7 +16,6 @@ import { import { createClient } from '@supabase/supabase-js'; import { nanoid } from 'nanoid'; import React, { createContext, useCallback, useEffect, useState } from 'react'; -import * as WebDirt from 'WebDirt'; import './Repl.css'; import { Footer } from './Footer'; import { Header } from './Header'; @@ -47,7 +46,6 @@ const modules = [ evalScope( controls, // sadly, this cannot be exported from core direclty - { WebDirt }, ...modules, ); From b319754dc377d68f6697b1e4733d3c2a7f419a56 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 20:31:23 +0100 Subject: [PATCH 09/52] fix website build --- packages/core/fraction.mjs | 2 +- packages/core/test/pattern.test.mjs | 2 +- pnpm-lock.yaml | 60 +++-------------------------- website/package.json | 1 + 4 files changed, 9 insertions(+), 56 deletions(-) diff --git a/packages/core/fraction.mjs b/packages/core/fraction.mjs index 92ba51569..3af73e0ee 100644 --- a/packages/core/fraction.mjs +++ b/packages/core/fraction.mjs @@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see . */ -import { Fraction } from 'fraction.js'; +import Fraction from 'fraction.js'; import { TimeSpan } from './timespan.mjs'; // Returns the start of the cycle. diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index 93dba47dd..31b080b68 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -4,7 +4,7 @@ Copyright (C) 2022 Strudel contributors - see . */ -import { Fraction } from 'fraction.js'; +import Fraction from 'fraction.js'; import { describe, it, expect } from 'vitest'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e36c33f0f..9fbc35d7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -271,6 +271,7 @@ importers: '@types/react': ^18.0.26 '@types/react-dom': ^18.0.9 astro: ^1.7.2 + fraction.js: ^4.2.0 html-escaper: ^3.0.3 nanoid: ^4.0.0 preact: ^10.7.3 @@ -308,6 +309,7 @@ importers: '@types/react': 18.0.27 '@types/react-dom': 18.0.10 astro: 1.9.2_@types+node@18.11.18 + fraction.js: 4.2.0 nanoid: 4.0.0 preact: 10.11.3 react: 18.2.0 @@ -8834,17 +8836,6 @@ packages: - supports-color dev: true - /postcss-import/14.1.0: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.1 - dev: false - /postcss-import/14.1.0_postcss@8.4.21: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} @@ -8855,16 +8846,6 @@ packages: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 - dev: true - - /postcss-js/4.0.0: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.3.3 - dependencies: - camelcase-css: 2.0.1 - dev: false /postcss-js/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} @@ -8874,23 +8855,6 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.21 - dev: true - - /postcss-load-config/3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.0.6 - yaml: 1.10.2 - dev: false /postcss-load-config/3.1.4_postcss@8.4.21: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -8908,15 +8872,6 @@ packages: postcss: 8.4.21 yaml: 1.10.2 - /postcss-nested/6.0.0: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss-selector-parser: 6.0.11 - dev: false - /postcss-nested/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} @@ -8925,7 +8880,6 @@ packages: dependencies: postcss: 8.4.21 postcss-selector-parser: 6.0.11 - dev: true /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -10431,8 +10385,6 @@ packages: resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} hasBin: true - peerDependencies: - postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -10449,10 +10401,10 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0 - postcss-js: 4.0.0 - postcss-load-config: 3.1.4 - postcss-nested: 6.0.0 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.0_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 diff --git a/website/package.json b/website/package.json index 83b311d76..b0ba7cd89 100644 --- a/website/package.json +++ b/website/package.json @@ -39,6 +39,7 @@ "@types/react": "^18.0.26", "@types/react-dom": "^18.0.9", "astro": "^1.7.2", + "fraction.js": "^4.2.0", "nanoid": "^4.0.0", "preact": "^10.7.3", "react": "^18.2.0", From ea2d8b2773c343ff1f8b451cf9cb17e12d3afc11 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 20:37:56 +0100 Subject: [PATCH 10/52] use workspace protocol everywhere --- packages/midi/package.json | 2 - packages/mini/package.json | 6 +-- packages/react/package.json | 7 ++- packages/react/src/App.jsx | 1 - packages/soundfonts/package.json | 4 +- packages/tonal/package.json | 2 +- packages/tone/package.json | 2 +- packages/transpiler/package.json | 2 +- packages/webaudio/package.json | 2 +- packages/webdirt/package.json | 2 +- packages/xen/package.json | 2 +- pnpm-lock.yaml | 92 +++++++++++++++++++++++--------- test/runtime.mjs | 1 - website/src/docs/MiniRepl.jsx | 1 - 14 files changed, 82 insertions(+), 44 deletions(-) diff --git a/packages/midi/package.json b/packages/midi/package.json index 0ce2e088c..856bf0fd3 100644 --- a/packages/midi/package.json +++ b/packages/midi/package.json @@ -23,8 +23,6 @@ "dependencies": { "@strudel.cycles/core": "workspace:*", "@strudel.cycles/webaudio": "workspace:*", - "@strudel.cycles/tone": "workspace:*", - "tone": "^14.7.77", "webmidi": "^3.0.21" } } diff --git a/packages/mini/package.json b/packages/mini/package.json index 342116deb..24caaff8c 100644 --- a/packages/mini/package.json +++ b/packages/mini/package.json @@ -26,9 +26,9 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", - "@strudel.cycles/eval": "^0.5.0", - "@strudel.cycles/tone": "^0.5.0" + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/eval": "workspace:*", + "@strudel.cycles/tone": "workspace:*" }, "devDependencies": { "peggy": "^2.0.1" diff --git a/packages/react/package.json b/packages/react/package.json index 96acd908c..66e5d80f8 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -42,10 +42,9 @@ "@codemirror/state": "^6.2.0", "@codemirror/view": "^6.7.3", "@lezer/highlight": "^1.1.3", - "@strudel.cycles/core": "^0.5.0", - "@strudel.cycles/tone": "^0.5.0", - "@strudel.cycles/transpiler": "^0.5.0", - "@strudel.cycles/webaudio": "^0.5.0", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/transpiler": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", "@uiw/codemirror-themes": "^4.12.4", "@uiw/react-codemirror": "^4.12.4", "react-hook-inview": "^4.5.0" diff --git a/packages/react/src/App.jsx b/packages/react/src/App.jsx index 911fca0ba..5dd470709 100644 --- a/packages/react/src/App.jsx +++ b/packages/react/src/App.jsx @@ -6,7 +6,6 @@ import { controls, evalScope } from '@strudel.cycles/core'; evalScope( controls, import('@strudel.cycles/core'), - // import('@strudel.cycles/tone'), import('@strudel.cycles/tonal'), import('@strudel.cycles/mini'), import('@strudel.cycles/midi'), diff --git a/packages/soundfonts/package.json b/packages/soundfonts/package.json index 6892b99af..fe30a5b5a 100644 --- a/packages/soundfonts/package.json +++ b/packages/soundfonts/package.json @@ -22,8 +22,8 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", - "@strudel.cycles/webaudio": "^0.5.0", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", "sfumato": "^0.1.2", "soundfont2": "^0.4.0" }, diff --git a/packages/tonal/package.json b/packages/tonal/package.json index 4281533ba..1e078a123 100644 --- a/packages/tonal/package.json +++ b/packages/tonal/package.json @@ -25,7 +25,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", + "@strudel.cycles/core": "workspace:*", "@tonaljs/tonal": "^4.7.2", "chord-voicings": "^0.0.1", "webmidi": "^3.0.21" diff --git a/packages/tone/package.json b/packages/tone/package.json index 24a17e432..a54242783 100644 --- a/packages/tone/package.json +++ b/packages/tone/package.json @@ -22,7 +22,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", + "@strudel.cycles/core": "workspace:*", "tone": "^14.7.77" } } diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json index 7fb2e63f2..e6c39f58d 100644 --- a/packages/transpiler/package.json +++ b/packages/transpiler/package.json @@ -24,7 +24,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", + "@strudel.cycles/core": "workspace:*", "acorn": "^8.8.1", "escodegen": "^2.0.0", "estree-walker": "^3.0.1" diff --git a/packages/webaudio/package.json b/packages/webaudio/package.json index af70efb72..dacca26ad 100644 --- a/packages/webaudio/package.json +++ b/packages/webaudio/package.json @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0" + "@strudel.cycles/core": "workspace:*" } } diff --git a/packages/webdirt/package.json b/packages/webdirt/package.json index 9c940b3fb..f0bfa40fc 100644 --- a/packages/webdirt/package.json +++ b/packages/webdirt/package.json @@ -22,7 +22,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", + "@strudel.cycles/core": "workspace:*", "WebDirt": "github:dktr0/WebDirt" } } diff --git a/packages/xen/package.json b/packages/xen/package.json index 726b09bb2..b517ae90e 100644 --- a/packages/xen/package.json +++ b/packages/xen/package.json @@ -24,6 +24,6 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0" + "@strudel.cycles/core": "workspace:*" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9fbc35d7d..543843fb9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -89,22 +89,18 @@ importers: packages/midi: specifiers: '@strudel.cycles/core': workspace:* - '@strudel.cycles/tone': workspace:* '@strudel.cycles/webaudio': workspace:* - tone: ^14.7.77 webmidi: ^3.0.21 dependencies: '@strudel.cycles/core': link:../core - '@strudel.cycles/tone': link:../tone '@strudel.cycles/webaudio': link:../webaudio - tone: 14.7.77 webmidi: 3.1.2 packages/mini: specifiers: - '@strudel.cycles/core': ^0.5.0 - '@strudel.cycles/eval': ^0.5.0 - '@strudel.cycles/tone': ^0.5.0 + '@strudel.cycles/core': workspace:* + '@strudel.cycles/eval': workspace:* + '@strudel.cycles/tone': workspace:* peggy: ^2.0.1 dependencies: '@strudel.cycles/core': link:../core @@ -130,10 +126,9 @@ importers: '@codemirror/state': ^6.2.0 '@codemirror/view': ^6.7.3 '@lezer/highlight': ^1.1.3 - '@strudel.cycles/core': ^0.5.0 - '@strudel.cycles/tone': ^0.5.0 - '@strudel.cycles/transpiler': ^0.5.0 - '@strudel.cycles/webaudio': ^0.5.0 + '@strudel.cycles/core': workspace:* + '@strudel.cycles/transpiler': workspace:* + '@strudel.cycles/webaudio': workspace:* '@types/react': ^17.0.2 '@types/react-dom': ^17.0.2 '@uiw/codemirror-themes': ^4.12.4 @@ -152,7 +147,6 @@ importers: '@codemirror/view': 6.7.3 '@lezer/highlight': 1.1.3 '@strudel.cycles/core': link:../core - '@strudel.cycles/tone': link:../tone '@strudel.cycles/transpiler': link:../transpiler '@strudel.cycles/webaudio': link:../webaudio '@uiw/codemirror-themes': 4.19.7_a4vbhepr4qhxm5cldqd4jpyase @@ -177,8 +171,8 @@ importers: packages/soundfonts: specifiers: - '@strudel.cycles/core': ^0.5.0 - '@strudel.cycles/webaudio': ^0.5.0 + '@strudel.cycles/core': workspace:* + '@strudel.cycles/webaudio': workspace:* node-fetch: ^3.2.6 sfumato: ^0.1.2 soundfont2: ^0.4.0 @@ -192,7 +186,7 @@ importers: packages/tonal: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* '@tonaljs/tonal': ^4.7.2 chord-voicings: ^0.0.1 webmidi: ^3.0.21 @@ -204,7 +198,7 @@ importers: packages/tone: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* tone: ^14.7.77 dependencies: '@strudel.cycles/core': link:../core @@ -212,7 +206,7 @@ importers: packages/transpiler: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* acorn: ^8.8.1 escodegen: ^2.0.0 estree-walker: ^3.0.1 @@ -224,13 +218,13 @@ importers: packages/webaudio: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* dependencies: '@strudel.cycles/core': link:../core packages/webdirt: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* WebDirt: github:dktr0/WebDirt dependencies: '@strudel.cycles/core': link:../core @@ -238,7 +232,7 @@ importers: packages/xen: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* dependencies: '@strudel.cycles/core': link:../core @@ -8836,6 +8830,17 @@ packages: - supports-color dev: true + /postcss-import/14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + /postcss-import/14.1.0_postcss@8.4.21: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} @@ -8846,6 +8851,16 @@ packages: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 + dev: true + + /postcss-js/4.0.0: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + dev: false /postcss-js/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} @@ -8855,6 +8870,23 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.21 + dev: true + + /postcss-load-config/3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + yaml: 1.10.2 + dev: false /postcss-load-config/3.1.4_postcss@8.4.21: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -8872,6 +8904,15 @@ packages: postcss: 8.4.21 yaml: 1.10.2 + /postcss-nested/6.0.0: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss-selector-parser: 6.0.11 + dev: false + /postcss-nested/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} @@ -8880,6 +8921,7 @@ packages: dependencies: postcss: 8.4.21 postcss-selector-parser: 6.0.11 + dev: true /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -10385,6 +10427,8 @@ packages: resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} hasBin: true + peerDependencies: + postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -10401,10 +10445,10 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0_postcss@8.4.21 - postcss-js: 4.0.0_postcss@8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 6.0.0_postcss@8.4.21 + postcss-import: 14.1.0 + postcss-js: 4.0.0 + postcss-load-config: 3.1.4 + postcss-nested: 6.0.0 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 diff --git a/test/runtime.mjs b/test/runtime.mjs index 25fd2ec79..17e92954c 100644 --- a/test/runtime.mjs +++ b/test/runtime.mjs @@ -11,7 +11,6 @@ import * as webaudio from '@strudel.cycles/webaudio'; import controls from '@strudel.cycles/core/controls.mjs'; // import gist from '@strudel.cycles/core/gist.js'; import { mini } from '@strudel.cycles/mini/mini.mjs'; -// import { Tone } from '@strudel.cycles/tone'; // import * as toneHelpers from '@strudel.cycles/tone/tone.mjs'; // import * as voicingHelpers from '@strudel.cycles/tonal/voicings.mjs'; // import * as uiHelpers from '@strudel.cycles/tone/ui.mjs'; diff --git a/website/src/docs/MiniRepl.jsx b/website/src/docs/MiniRepl.jsx index 0fba71d5a..e80a3d805 100644 --- a/website/src/docs/MiniRepl.jsx +++ b/website/src/docs/MiniRepl.jsx @@ -8,7 +8,6 @@ if (typeof window !== 'undefined') { modules = evalScope( controls, import('@strudel.cycles/core'), - // import('@strudel.cycles/tone'), import('@strudel.cycles/tonal'), import('@strudel.cycles/mini'), import('@strudel.cycles/midi'), From 902f722d4c0c160f841a4a17d20af3d3db04eca8 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 21:00:42 +0100 Subject: [PATCH 11/52] add import linting + fix checks --- .eslintrc.json | 5 +- .prettierignore | 4 +- package.json | 21 +- .../examples/vite-vanilla-repl/package.json | 6 + packages/core/package.json | 5 +- packages/core/ui.mjs | 2 +- packages/eval/package.json | 3 +- packages/mini/package.json | 3 +- packages/tonal/package.json | 3 + packages/tone/package.json | 3 + packages/transpiler/package.json | 3 + packages/webdirt/package.json | 4 + packages/xen/package.json | 3 + pnpm-lock.yaml | 418 +++++++++++------- website/package.json | 3 +- website/src/config.ts | 2 +- website/src/languages.ts | 2 +- 17 files changed, 317 insertions(+), 173 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index ba929b55c..712511416 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -9,8 +9,9 @@ "ecmaVersion": "latest", "sourceType": "module" }, - "plugins": [], + "plugins": ["import"], "rules": { - "no-unused-vars": ["warn", { "destructuredArrayIgnorePattern": ".", "ignoreRestSiblings": false }] + "no-unused-vars": ["warn", { "destructuredArrayIgnorePattern": ".", "ignoreRestSiblings": false }], + "import/no-extraneous-dependencies": ["error", {"devDependencies": true}] } } diff --git a/.prettierignore b/.prettierignore index 788d0e25a..1b1066966 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,4 +6,6 @@ **/dist packages/mini/krill-parser.js packages/xen/tunejs.js -paper \ No newline at end of file +paper +pnpm-lock.yaml +pnpm-workspace.yaml \ No newline at end of file diff --git a/package.json b/package.json index d385d82f0..f053e9805 100644 --- a/package.json +++ b/package.json @@ -46,12 +46,22 @@ "url": "https://github.com/tidalcycles/strudel/issues" }, "homepage": "https://strudel.tidalcycles.org", + "dependencies": { + "dependency-tree": "^9.0.0", + "vitest": "^0.25.7", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/mini": "workspace:*", + "@strudel.cycles/tonal": "workspace:*", + "@strudel.cycles/transpiler": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", + "@strudel.cycles/xen": "workspace:*" + }, "devDependencies": { "@vitest/ui": "^0.25.7", "c8": "^7.12.0", "canvas": "^2.11.0", - "dependency-tree": "^9.0.0", "eslint": "^8.28.0", + "eslint-plugin-import": "^2.27.5", "events": "^3.3.0", "gh-pages": "^4.0.0", "jsdoc": "^3.6.10", @@ -59,13 +69,6 @@ "jsdoc-to-markdown": "^7.1.1", "lerna": "^4.0.0", "prettier": "^2.8.1", - "rollup-plugin-visualizer": "^5.8.1", - "vitest": "^0.25.7", - "@strudel.cycles/core": "workspace:*", - "@strudel.cycles/transpiler": "workspace:*", - "@strudel.cycles/webaudio": "workspace:*", - "@strudel.cycles/mini": "workspace:*", - "@strudel.cycles/tonal": "workspace:*", - "@strudel.cycles/xen": "workspace:*" + "rollup-plugin-visualizer": "^5.8.1" } } diff --git a/packages/core/examples/vite-vanilla-repl/package.json b/packages/core/examples/vite-vanilla-repl/package.json index b1a5f0f6b..854e112b5 100644 --- a/packages/core/examples/vite-vanilla-repl/package.json +++ b/packages/core/examples/vite-vanilla-repl/package.json @@ -11,5 +11,11 @@ }, "devDependencies": { "vite": "^3.2.0" + }, + "dependencies": { + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/mini": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", + "@strudel.cycles/tonal": "workspace:*" } } diff --git a/packages/core/package.json b/packages/core/package.json index 06117a94c..376a39403 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,5 +27,8 @@ "dependencies": { "fraction.js": "^4.2.0" }, - "gitHead": "0e26d4e741500f5bae35b023608f062a794905c2" + "gitHead": "0e26d4e741500f5bae35b023608f062a794905c2", + "devDependencies": { + "vitest": "^0.25.7" + } } diff --git a/packages/core/ui.mjs b/packages/core/ui.mjs index 68a4a6cb5..df8230ece 100644 --- a/packages/core/ui.mjs +++ b/packages/core/ui.mjs @@ -26,7 +26,7 @@ export const backgroundImage = function (src, animateOptions = {}) { ({ style: () => (container.style = bg + ';' + value), className: () => (container.className = value + ' ' + initialClassName), - }[option]()); + })[option](); }; const funcOptions = Object.entries(animateOptions).filter(([_, v]) => typeof v === 'function'); const stringOptions = Object.entries(animateOptions).filter(([_, v]) => typeof v === 'string'); diff --git a/packages/eval/package.json b/packages/eval/package.json index e837b7826..950e37e16 100644 --- a/packages/eval/package.json +++ b/packages/eval/package.json @@ -37,6 +37,7 @@ "shift-traverser": "^1.0.0" }, "devDependencies": { - "@strudel.cycles/mini": "workspace:*" + "@strudel.cycles/mini": "workspace:*", + "vitest": "^0.25.7" } } diff --git a/packages/mini/package.json b/packages/mini/package.json index 24caaff8c..9f666f8c2 100644 --- a/packages/mini/package.json +++ b/packages/mini/package.json @@ -31,6 +31,7 @@ "@strudel.cycles/tone": "workspace:*" }, "devDependencies": { - "peggy": "^2.0.1" + "peggy": "^2.0.1", + "vitest": "^0.25.7" } } diff --git a/packages/tonal/package.json b/packages/tonal/package.json index 1e078a123..db2ebe4b4 100644 --- a/packages/tonal/package.json +++ b/packages/tonal/package.json @@ -29,5 +29,8 @@ "@tonaljs/tonal": "^4.7.2", "chord-voicings": "^0.0.1", "webmidi": "^3.0.21" + }, + "devDependencies": { + "vitest": "^0.25.7" } } diff --git a/packages/tone/package.json b/packages/tone/package.json index a54242783..08b775491 100644 --- a/packages/tone/package.json +++ b/packages/tone/package.json @@ -24,5 +24,8 @@ "dependencies": { "@strudel.cycles/core": "workspace:*", "tone": "^14.7.77" + }, + "devDependencies": { + "vitest": "^0.25.7" } } diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json index e6c39f58d..16023ff72 100644 --- a/packages/transpiler/package.json +++ b/packages/transpiler/package.json @@ -28,5 +28,8 @@ "acorn": "^8.8.1", "escodegen": "^2.0.0", "estree-walker": "^3.0.1" + }, + "devDependencies": { + "vitest": "^0.25.8" } } diff --git a/packages/webdirt/package.json b/packages/webdirt/package.json index f0bfa40fc..4c66ccd63 100644 --- a/packages/webdirt/package.json +++ b/packages/webdirt/package.json @@ -23,6 +23,10 @@ "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", "WebDirt": "github:dktr0/WebDirt" + }, + "devDependencies": { + "vitest": "^0.25.7" } } diff --git a/packages/xen/package.json b/packages/xen/package.json index b517ae90e..75b2885c9 100644 --- a/packages/xen/package.json +++ b/packages/xen/package.json @@ -25,5 +25,8 @@ "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { "@strudel.cycles/core": "workspace:*" + }, + "devDependencies": { + "vitest": "^0.25.7" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 543843fb9..d2dfb9403 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,6 +15,7 @@ importers: canvas: ^2.11.0 dependency-tree: ^9.0.0 eslint: ^8.28.0 + eslint-plugin-import: ^2.27.5 events: ^3.3.0 gh-pages: ^4.0.0 jsdoc: ^3.6.10 @@ -24,18 +25,21 @@ importers: prettier: ^2.8.1 rollup-plugin-visualizer: ^5.8.1 vitest: ^0.25.7 - devDependencies: + dependencies: '@strudel.cycles/core': link:packages/core '@strudel.cycles/mini': link:packages/mini '@strudel.cycles/tonal': link:packages/tonal '@strudel.cycles/transpiler': link:packages/transpiler '@strudel.cycles/webaudio': link:packages/webaudio '@strudel.cycles/xen': link:packages/xen + dependency-tree: 9.0.0 + vitest: 0.25.8_@vitest+ui@0.25.8 + devDependencies: '@vitest/ui': 0.25.8 c8: 7.12.0 canvas: 2.11.0 - dependency-tree: 9.0.0 eslint: 8.32.0 + eslint-plugin-import: 2.27.5_eslint@8.32.0 events: 3.3.0 gh-pages: 4.0.0 jsdoc: 3.6.11 @@ -44,13 +48,15 @@ importers: lerna: 4.0.0 prettier: 2.8.3 rollup-plugin-visualizer: 5.9.0 - vitest: 0.25.8_@vitest+ui@0.25.8 packages/core: specifiers: fraction.js: ^4.2.0 + vitest: ^0.25.7 dependencies: fraction.js: 4.2.0 + devDependencies: + vitest: 0.25.8 packages/csound: specifiers: @@ -75,6 +81,7 @@ importers: shift-parser: ^8.0.0 shift-spec: ^2019.0.0 shift-traverser: ^1.0.0 + vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core estraverse: 5.3.0 @@ -85,6 +92,7 @@ importers: shift-traverser: 1.0.0 devDependencies: '@strudel.cycles/mini': link:../mini + vitest: 0.25.8 packages/midi: specifiers: @@ -102,12 +110,14 @@ importers: '@strudel.cycles/eval': workspace:* '@strudel.cycles/tone': workspace:* peggy: ^2.0.1 + vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core '@strudel.cycles/eval': link:../eval '@strudel.cycles/tone': link:../tone devDependencies: peggy: 2.0.1 + vitest: 0.25.8 packages/osc: specifiers: @@ -189,20 +199,26 @@ importers: '@strudel.cycles/core': workspace:* '@tonaljs/tonal': ^4.7.2 chord-voicings: ^0.0.1 + vitest: ^0.25.7 webmidi: ^3.0.21 dependencies: '@strudel.cycles/core': link:../core '@tonaljs/tonal': 4.10.0 chord-voicings: 0.0.1 webmidi: 3.1.2 + devDependencies: + vitest: 0.25.8 packages/tone: specifiers: '@strudel.cycles/core': workspace:* tone: ^14.7.77 + vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core tone: 14.7.77 + devDependencies: + vitest: 0.25.8 packages/transpiler: specifiers: @@ -210,11 +226,14 @@ importers: acorn: ^8.8.1 escodegen: ^2.0.0 estree-walker: ^3.0.1 + vitest: ^0.25.8 dependencies: '@strudel.cycles/core': link:../core acorn: 8.8.2 escodegen: 2.0.0 estree-walker: 3.0.3 + devDependencies: + vitest: 0.25.8 packages/webaudio: specifiers: @@ -226,15 +245,21 @@ importers: specifiers: '@strudel.cycles/core': workspace:* WebDirt: github:dktr0/WebDirt + vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core WebDirt: github.com/dktr0/WebDirt/8bdd7478ae05f74cbd5003936da23ce9bc6fc7c7 + devDependencies: + vitest: 0.25.8 packages/xen: specifiers: '@strudel.cycles/core': workspace:* + vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core + devDependencies: + vitest: 0.25.8 website: specifiers: @@ -265,6 +290,7 @@ importers: '@types/react': ^18.0.26 '@types/react-dom': ^18.0.9 astro: ^1.7.2 + canvas: ^2.11.0 fraction.js: ^4.2.0 html-escaper: ^3.0.3 nanoid: ^4.0.0 @@ -313,6 +339,7 @@ importers: remark-toc: 8.0.1 tailwindcss: 3.2.4 devDependencies: + canvas: 2.11.0 html-escaper: 3.0.3 packages: @@ -1033,7 +1060,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-arm64/0.16.17: @@ -1042,7 +1068,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-x64/0.16.17: @@ -1051,7 +1076,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/darwin-arm64/0.16.17: @@ -1060,7 +1084,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/darwin-x64/0.16.17: @@ -1069,7 +1092,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-arm64/0.16.17: @@ -1078,7 +1100,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-x64/0.16.17: @@ -1087,7 +1108,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm/0.16.17: @@ -1096,7 +1116,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm64/0.16.17: @@ -1105,7 +1124,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ia32/0.16.17: @@ -1114,7 +1132,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64/0.15.18: @@ -1131,7 +1148,6 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-mips64el/0.16.17: @@ -1140,7 +1156,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ppc64/0.16.17: @@ -1149,7 +1164,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-riscv64/0.16.17: @@ -1158,7 +1172,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-s390x/0.16.17: @@ -1167,7 +1180,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-x64/0.16.17: @@ -1176,7 +1188,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/netbsd-x64/0.16.17: @@ -1185,7 +1196,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /@esbuild/openbsd-x64/0.16.17: @@ -1194,7 +1204,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /@esbuild/sunos-x64/0.16.17: @@ -1203,7 +1212,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /@esbuild/win32-arm64/0.16.17: @@ -1212,7 +1220,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-ia32/0.16.17: @@ -1221,7 +1228,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-x64/0.16.17: @@ -1230,7 +1236,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint/eslintrc/1.4.1: @@ -2639,11 +2644,9 @@ packages: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.4 - dev: true /@types/chai/4.3.4: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} - dev: true /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} @@ -2687,7 +2690,6 @@ packages: /@types/json5/0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true /@types/json5/0.0.30: resolution: {integrity: sha512-sqm9g7mHlPY/43fcSNrCYfOeX9zkTTK+euO5E6+CVijSMm5tTjkVdwdqRkY3ljjIAf8679vps5jKUoJBCLsMDA==} @@ -2808,7 +2810,7 @@ packages: /@typescript-eslint/types/5.49.0: resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + dev: false /@typescript-eslint/typescript-estree/5.49.0_typescript@4.9.4: resolution: {integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==} @@ -2829,7 +2831,7 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/visitor-keys/5.49.0: resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==} @@ -2837,7 +2839,7 @@ packages: dependencies: '@typescript-eslint/types': 5.49.0 eslint-visitor-keys: 3.3.0 - dev: true + dev: false /@uiw/codemirror-extensions-basic-setup/4.19.7_a4vbhepr4qhxm5cldqd4jpyase: resolution: {integrity: sha512-pk0JTFJAZOGxouBB1pdBtb59qKibO9DW4hER4VSFGBGW3TBDeXUwL/gKujhRpySHG2MtG09cgt4a3XOFIWwXTw==} @@ -2906,7 +2908,6 @@ packages: resolution: {integrity: sha512-wfuhghldD5QHLYpS46GK8Ru8P3XcMrWvFjRQD21KNzc9Y/qtJsqoC8KmT6xWVkMNw4oHYixpo3a4ZySRJdserw==} dependencies: sirv: 2.0.2 - dev: true /@vscode/emmet-helper/2.8.6: resolution: {integrity: sha512-IIB8jbiKy37zN8bAIHx59YmnIelY78CGHtThnibD/d3tQOKRY83bYVi9blwmZVUZh6l9nfkYH3tvReaiNxY9EQ==} @@ -2955,7 +2956,6 @@ packages: /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} @@ -3087,7 +3087,7 @@ packages: /app-module-path/2.2.0: resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==} - dev: true + dev: false /aproba/1.2.0: resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} @@ -3168,6 +3168,17 @@ packages: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} dev: true + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: true + /array-iterate/2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} dev: false @@ -3182,13 +3193,32 @@ packages: /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true /array-uniq/1.0.3: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} dev: true + /array.prototype.flat/1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.flatmap/1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + dev: true + /array.prototype.reduce/1.0.5: resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} engines: {node: '>= 0.4'} @@ -3227,12 +3257,11 @@ packages: /assertion-error/1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true /ast-module-types/3.0.0: resolution: {integrity: sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==} engines: {node: '>=6.0'} - dev: true + dev: false /ast-types/0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} @@ -3648,7 +3677,6 @@ packages: loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 - dev: true /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -3692,7 +3720,6 @@ packages: /check-error/1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: true /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -3932,12 +3959,10 @@ packages: /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true /commander/9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - dev: true /common-ancestor-path/1.0.1: resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} @@ -4166,6 +4191,17 @@ packages: ms: 2.0.0 dev: false + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -4221,7 +4257,6 @@ packages: engines: {node: '>=6'} dependencies: type-detect: 4.0.8 - dev: true /deep-extend/0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -4286,7 +4321,7 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true + dev: false /deprecation/2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} @@ -4331,7 +4366,7 @@ packages: escodegen: 2.0.0 get-amd-module-type: 4.0.0 node-source-walk: 5.0.0 - dev: true + dev: false /detective-cjs/4.0.0: resolution: {integrity: sha512-VsD6Yo1+1xgxJWoeDRyut7eqZ8EWaJI70C5eanSAPcBHzenHZx0uhjxaaEfIm0cHII7dBiwU98Orh44bwXN2jg==} @@ -4339,14 +4374,14 @@ packages: dependencies: ast-module-types: 3.0.0 node-source-walk: 5.0.0 - dev: true + dev: false /detective-es6/3.0.0: resolution: {integrity: sha512-Uv2b5Uih7vorYlqGzCX+nTPUb4CMzUAn3VPHTV5p5lBkAN4cAApLGgUz4mZE2sXlBfv4/LMmeP7qzxHV/ZcfWA==} engines: {node: '>=12'} dependencies: node-source-walk: 5.0.0 - dev: true + dev: false /detective-less/1.0.2: resolution: {integrity: sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==} @@ -4357,7 +4392,7 @@ packages: node-source-walk: 4.3.0 transitivePeerDependencies: - supports-color - dev: true + dev: false /detective-postcss/6.1.0: resolution: {integrity: sha512-ZFZnEmUrL2XHAC0j/4D1fdwZbo/anAcK84soJh7qc7xfx2Kc8gFO5Bk5I9jU7NLC/OAF1Yho1GLxEDnmQnRH2A==} @@ -4366,7 +4401,7 @@ packages: is-url: 1.2.4 postcss: 8.4.21 postcss-values-parser: 6.0.2_postcss@8.4.21 - dev: true + dev: false /detective-sass/4.0.1: resolution: {integrity: sha512-80zfpxux1krOrkxCHbtwvIs2gNHUBScnSqlGl0FvUuHVz8HD6vD2ov66OroMctyvzhM67fxhuEeVjIk18s6yTQ==} @@ -4374,7 +4409,7 @@ packages: dependencies: gonzales-pe: 4.3.0 node-source-walk: 5.0.0 - dev: true + dev: false /detective-scss/3.0.0: resolution: {integrity: sha512-37MB/mhJyS45ngqfzd6eTbuLMoDgdZnH03ZOMW2m9WqJ/Rlbuc8kZAr0Ypovaf1DJiTRzy5mmxzOTja85jbzlA==} @@ -4382,12 +4417,12 @@ packages: dependencies: gonzales-pe: 4.3.0 node-source-walk: 5.0.0 - dev: true + dev: false /detective-stylus/2.0.1: resolution: {integrity: sha512-/Tvs1pWLg8eYwwV6kZQY5IslGaYqc/GACxjcaGudiNtN5nKCH6o2WnJK3j0gA3huCnoQcbv8X7oz/c1lnvE3zQ==} engines: {node: '>=6.0'} - dev: true + dev: false /detective-typescript/9.0.0: resolution: {integrity: sha512-lR78AugfUSBojwlSRZBeEqQ1l8LI7rbxOl1qTUnGLcjZQDjZmrZCb7R46rK8U8B5WzFvJrxa7fEBA8FoD/n5fA==} @@ -4399,7 +4434,7 @@ packages: typescript: 4.9.4 transitivePeerDependencies: - supports-color - dev: true + dev: false /detective/5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} @@ -4434,7 +4469,6 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /djipevents/2.0.7: resolution: {integrity: sha512-KNFYaU85imxOCKOUsIR70Iz9E19r96/X7LSH+u0tSoZdpWcBdzoqtTsU+wuLhc6GMpSFob+KInkZAbfKi01Bjg==} @@ -4463,6 +4497,13 @@ packages: walk-back: 5.1.0 dev: true + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -4545,7 +4586,7 @@ packages: dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 - dev: true + dev: false /entities/2.1.0: resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} @@ -4632,6 +4673,12 @@ packages: has-tostringtag: 1.0.0 dev: true + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -4887,7 +4934,6 @@ packages: '@esbuild/win32-arm64': 0.16.17 '@esbuild/win32-ia32': 0.16.17 '@esbuild/win32-x64': 0.16.17 - dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -4922,6 +4968,45 @@ packages: optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 + dev: false + + /eslint-import-resolver-node/0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.11.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils/2.7.4_tdm2zecdp3gdwhfxnfmevnwugq: + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + debug: 3.2.7 + eslint: 8.32.0 + eslint-import-resolver-node: 0.3.7 + transitivePeerDependencies: + - supports-color + dev: true /eslint-plugin-es/4.1.0: resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} @@ -4933,6 +5018,38 @@ packages: regexpp: 3.2.0 dev: false + /eslint-plugin-import/2.27.5_eslint@8.32.0: + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.32.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4_tdm2zecdp3gdwhfxnfmevnwugq + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-n/15.6.1: resolution: {integrity: sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==} engines: {node: '>=12.22.0'} @@ -4995,7 +5112,6 @@ packages: /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /eslint/8.32.0: resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==} @@ -5058,6 +5174,7 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + dev: false /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} @@ -5296,7 +5413,7 @@ packages: typescript: 3.9.10 transitivePeerDependencies: - supports-color - dev: true + dev: false /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -5534,7 +5651,7 @@ packages: dependencies: ast-module-types: 3.0.0 node-source-walk: 5.0.0 - dev: true + dev: false /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -5543,7 +5660,6 @@ packages: /get-func-name/2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: true /get-intrinsic/1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} @@ -5554,7 +5670,7 @@ packages: /get-own-enumerable-property-symbols/3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: true + dev: false /get-pkg-repo/4.2.1: resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} @@ -5729,7 +5845,6 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true /globby/6.1.0: resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} @@ -5752,7 +5867,7 @@ packages: hasBin: true dependencies: minimist: 1.2.7 - dev: true + dev: false /google-closure-compiler-java/20221102.0.1: resolution: {integrity: sha512-rMKLEma3uSe/6MGHtivDezTv4u5iaDEyxoy9No+1WruPSZ5h1gBZLONcfCA8JaoGojFPdHZI1qbwT0EveEWnAg==} @@ -6385,7 +6500,7 @@ packages: /is-obj/1.0.1: resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} engines: {node: '>=0.10.0'} - dev: true + dev: false /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} @@ -6441,11 +6556,11 @@ packages: /is-regexp/1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} - dev: true + dev: false /is-relative-path/1.0.2: resolution: {integrity: sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA==} - dev: true + dev: false /is-shared-array-buffer/1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} @@ -6512,11 +6627,11 @@ packages: /is-url-superb/4.0.0: resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==} engines: {node: '>=10'} - dev: true + dev: false /is-url/1.2.4: resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - dev: true + dev: false /is-weakref/1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} @@ -6731,7 +6846,6 @@ packages: hasBin: true dependencies: minimist: 1.2.7 - dev: true /json5/2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -6777,6 +6891,7 @@ packages: /jzz/1.5.9: resolution: {integrity: sha512-cqH+tSBtuFGrYinQnhdqn4zzGSLMkuLcX4ahGigH9vONAzCM1hoPmvwDJaM50BJFh5ok49cHfFlfvAGZtUIRQw==} + requiresBuild: true dependencies: '@types/webmidi': 2.0.6 jazz-midi: 1.7.9 @@ -6837,6 +6952,7 @@ packages: dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 + dev: false /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -6920,7 +7036,6 @@ packages: /local-pkg/0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} - dev: true /locate-path/2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} @@ -7024,7 +7139,6 @@ packages: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 - dev: true /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -7934,7 +8048,7 @@ packages: dependencies: ast-module-types: 3.0.0 node-source-walk: 4.3.0 - dev: true + dev: false /module-definition/4.0.0: resolution: {integrity: sha512-wntiAHV4lDn24BQn2kX6LKq0y85phHLHiv3aOPDF+lIs06kVjEMTe/ZTdrbVLnQV5FQsjik21taknvMhKY1Cug==} @@ -7943,7 +8057,7 @@ packages: dependencies: ast-module-types: 3.0.0 node-source-walk: 5.0.0 - dev: true + dev: false /module-lookup-amd/7.0.1: resolution: {integrity: sha512-w9mCNlj0S8qviuHzpakaLVc+/7q50jl9a/kmJ/n8bmXQZgDPkQHnPBb8MUOYh3WpAYkXuNc2c+khsozhIp/amQ==} @@ -7957,7 +8071,7 @@ packages: requirejs-config-file: 4.0.0 transitivePeerDependencies: - supports-color - dev: true + dev: false /mri/1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -8137,14 +8251,14 @@ packages: engines: {node: '>=6.0'} dependencies: '@babel/parser': 7.20.13 - dev: true + dev: false /node-source-walk/5.0.0: resolution: {integrity: sha512-58APXoMXpmmU+oVBJFajhTCoD8d/OGtngnVAWzIo2A8yn0IXwBzvIVIsTzoie/SrA37u+1hnpNz2HMWx/VIqlw==} engines: {node: '>=12'} dependencies: '@babel/parser': 7.20.13 - dev: true + dev: false /nopt/4.0.3: resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} @@ -8371,6 +8485,15 @@ packages: es-abstract: 1.21.1 dev: true + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: true + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -8407,6 +8530,7 @@ packages: prelude-ls: 1.1.2 type-check: 0.3.2 word-wrap: 1.2.3 + dev: false /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} @@ -8708,11 +8832,9 @@ packages: /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true /peggy/2.0.1: resolution: {integrity: sha512-mBqfmdUAOVn7RILpXTbcRBhLfTR4Go0SresSnivGDdRylBOyVFJncFiVyCNNpPWq8HmgeRleXHs/Go4o8kQVXA==} @@ -8830,17 +8952,6 @@ packages: - supports-color dev: true - /postcss-import/14.1.0: - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.1 - dev: false - /postcss-import/14.1.0_postcss@8.4.21: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} @@ -8851,16 +8962,6 @@ packages: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 - dev: true - - /postcss-js/4.0.0: - resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.3.3 - dependencies: - camelcase-css: 2.0.1 - dev: false /postcss-js/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} @@ -8870,23 +8971,6 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.21 - dev: true - - /postcss-load-config/3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 2.0.6 - yaml: 1.10.2 - dev: false /postcss-load-config/3.1.4_postcss@8.4.21: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -8904,15 +8988,6 @@ packages: postcss: 8.4.21 yaml: 1.10.2 - /postcss-nested/6.0.0: - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss-selector-parser: 6.0.11 - dev: false - /postcss-nested/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} @@ -8921,7 +8996,6 @@ packages: dependencies: postcss: 8.4.21 postcss-selector-parser: 6.0.11 - dev: true /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -8951,7 +9025,7 @@ packages: is-url-superb: 4.0.0 postcss: 8.4.21 quote-unquote: 1.0.0 - dev: true + dev: false /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} @@ -9013,7 +9087,7 @@ packages: node-source-walk: 5.0.0 transitivePeerDependencies: - supports-color - dev: true + dev: false /preferred-pm/3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} @@ -9028,6 +9102,7 @@ packages: /prelude-ls/1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} + dev: false /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -9170,7 +9245,7 @@ packages: /quote-unquote/1.0.0: resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==} - dev: true + dev: false /rambda/7.4.0: resolution: {integrity: sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==} @@ -9602,13 +9677,13 @@ packages: dependencies: esprima: 4.0.1 stringify-object: 3.3.0 - dev: true + dev: false /requirejs/2.3.6: resolution: {integrity: sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true + dev: false /requizzle/0.2.4: resolution: {integrity: sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==} @@ -9630,7 +9705,7 @@ packages: /resolve-dependency-path/2.0.0: resolution: {integrity: sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w==} engines: {node: '>=6.0.0'} - dev: true + dev: false /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -9764,7 +9839,6 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: true /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -9824,7 +9898,7 @@ packages: hasBin: true dependencies: commander: 2.20.3 - dev: true + dev: false /scheduler/0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} @@ -9996,7 +10070,6 @@ packages: /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true /slash/4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} @@ -10266,7 +10339,7 @@ packages: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 - dev: true + dev: false /strip-ansi/3.0.1: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} @@ -10332,7 +10405,6 @@ packages: resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} dependencies: acorn: 8.8.2 - dev: true /strip-outer/1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} @@ -10370,7 +10442,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true + dev: false /suf-log/2.5.3: resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} @@ -10427,8 +10499,6 @@ packages: resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} hasBin: true - peerDependencies: - postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -10445,10 +10515,10 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0 - postcss-js: 4.0.0 - postcss-load-config: 3.1.4 - postcss-nested: 6.0.0 + postcss-import: 14.1.0_postcss@8.4.21 + postcss-js: 4.0.0_postcss@8.4.21 + postcss-load-config: 3.1.4_postcss@8.4.21 + postcss-nested: 6.0.0_postcss@8.4.21 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -10494,7 +10564,7 @@ packages: /tapable/2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - dev: true + dev: false /tar-fs/2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -10633,17 +10703,14 @@ packages: /tinybench/2.3.1: resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} - dev: true /tinypool/0.3.1: resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} engines: {node: '>=14.0.0'} - dev: true /tinyspy/1.0.2: resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} engines: {node: '>=14.0.0'} - dev: true /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -10718,7 +10785,6 @@ packages: json5: 1.0.2 minimist: 1.2.7 strip-bom: 3.0.0 - dev: true /tsconfig-resolver/3.0.1: resolution: {integrity: sha512-ZHqlstlQF449v8glscGRXzL6l2dZvASPCdXJRWG4gHEZlUVx2Jtmr+a2zeVG4LCsKhDXKRj5R3h0C/98UcVAQg==} @@ -10733,7 +10799,6 @@ packages: /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} @@ -10755,7 +10820,7 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.4 - dev: true + dev: false /tunnel-agent/0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -10772,6 +10837,7 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 + dev: false /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -10783,7 +10849,6 @@ packages: /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - dev: true /type-fest/0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} @@ -10854,12 +10919,13 @@ packages: resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} engines: {node: '>=4.2.0'} hasBin: true - dev: true + dev: false /typescript/4.9.4: resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true + dev: false /typical/2.6.1: resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} @@ -11276,7 +11342,6 @@ packages: rollup: 3.12.0 optionalDependencies: fsevents: 2.3.2 - dev: true /vitefu/0.2.4_vite@3.2.5: resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} @@ -11289,6 +11354,51 @@ packages: vite: 3.2.5_@types+node@18.11.18 dev: false + /vitest/0.25.8: + resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.11.18 + acorn: 8.8.2 + acorn-walk: 8.2.0 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.3 + source-map: 0.6.1 + strip-literal: 1.0.0 + tinybench: 2.3.1 + tinypool: 0.3.1 + tinyspy: 1.0.2 + vite: 4.0.4_@types+node@18.11.18 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vitest/0.25.8_@vitest+ui@0.25.8: resolution: {integrity: sha512-X75TApG2wZTJn299E/TIYevr4E9/nBo1sUtZzn0Ci5oK8qnpZAZyhwg0qCeMSakGIWtc6oRwcQFyFfW14aOFWg==} engines: {node: '>=v14.16.0'} @@ -11333,7 +11443,7 @@ packages: - sugarss - supports-color - terser - dev: true + dev: false /vscode-css-languageservice/6.2.3: resolution: {integrity: sha512-EAyhyIVHpEaf+GjtI+tVe7SekdoANfG0aubnspsQwak3Qkimn/97FpAufNyXk636ngW05pjNKAR9zyTCzo6avQ==} diff --git a/website/package.json b/website/package.json index b0ba7cd89..9661a8733 100644 --- a/website/package.json +++ b/website/package.json @@ -47,7 +47,8 @@ "rehype-autolink-headings": "^6.1.1", "rehype-slug": "^5.0.1", "remark-toc": "^8.0.1", - "tailwindcss": "^3.2.4" + "tailwindcss": "^3.2.4", + "canvas": "^2.11.0" }, "devDependencies": { "html-escaper": "^3.0.3" diff --git a/website/src/config.ts b/website/src/config.ts index db724a5b5..6b7579e97 100644 --- a/website/src/config.ts +++ b/website/src/config.ts @@ -40,7 +40,7 @@ export const ALGOLIA = { apiKey: 'XXXXXXXXXX', }; -export type Sidebar = Record>; +export type Sidebar = Record<(typeof KNOWN_LANGUAGE_CODES)[number], Record>; export const SIDEBAR: Sidebar = { en: { Tutorial: [ diff --git a/website/src/languages.ts b/website/src/languages.ts index a638fba65..51c313268 100644 --- a/website/src/languages.ts +++ b/website/src/languages.ts @@ -6,5 +6,5 @@ export const langPathRegex = /\/([a-z]{2}-?[A-Z]{0,2})\//; export function getLanguageFromURL(pathname: string) { const langCodeMatch = pathname.match(langPathRegex); const langCode = langCodeMatch ? langCodeMatch[1] : 'en'; - return langCode as typeof KNOWN_LANGUAGE_CODES[number]; + return langCode as (typeof KNOWN_LANGUAGE_CODES)[number]; } From cfaecf9fcb6f0b080deb07efd10f7cd50251e31b Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:01:35 +0100 Subject: [PATCH 12/52] migrate lerna to pnpm https://lerna.js.org/docs/recipes/using-pnpm-with-lerna --- lerna.json | 4 +- package.json | 3 -- pnpm-lock.yaml | 99 +++++++++++++++++++++++++++++--------------------- 3 files changed, 60 insertions(+), 46 deletions(-) diff --git a/lerna.json b/lerna.json index a2bb50ba7..bb753ee83 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,7 @@ "packages": [ "packages/*" ], - "version": "independent" + "version": "independent", + "npmClient": "pnpm", + "useWorkspaces": true } diff --git a/package.json b/package.json index f053e9805..cca3eff26 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,6 @@ "check": "npm run format-check && npm run lint && npm run test", "iclc": "cd paper && pandoc --template=pandoc/iclc.html --citeproc --number-sections iclc2023.md -o iclc2023.html && pandoc --template=pandoc/iclc.latex --citeproc --number-sections iclc2023.md -o iclc2023.pdf" }, - "workspaces": [ - "packages/*" - ], "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2dfb9403..f60df6eac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -244,10 +244,12 @@ importers: packages/webdirt: specifiers: '@strudel.cycles/core': workspace:* + '@strudel.cycles/webaudio': workspace:* WebDirt: github:dktr0/WebDirt vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core + '@strudel.cycles/webaudio': link:../webaudio WebDirt: github.com/dktr0/WebDirt/8bdd7478ae05f74cbd5003936da23ce9bc6fc7c7 devDependencies: vitest: 0.25.8 @@ -329,6 +331,7 @@ importers: '@types/react': 18.0.27 '@types/react-dom': 18.0.10 astro: 1.9.2_@types+node@18.11.18 + canvas: 2.11.0 fraction.js: 4.2.0 nanoid: 4.0.0 preact: 10.11.3 @@ -339,7 +342,6 @@ importers: remark-toc: 8.0.1 tailwindcss: 3.2.4 devDependencies: - canvas: 2.11.0 html-escaper: 3.0.3 packages: @@ -2084,7 +2086,6 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true /@mdx-js/mdx/2.2.1: resolution: {integrity: sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ==} @@ -2933,7 +2934,6 @@ packages: /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: true /acorn-jsx/5.3.2_acorn@8.8.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -2978,7 +2978,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /agentkeepalive/4.2.1: resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} @@ -3050,7 +3049,6 @@ packages: /ansi-regex/2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} - dev: true /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -3095,7 +3093,6 @@ packages: /aproba/2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: true /are-we-there-yet/1.1.7: resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} @@ -3110,7 +3107,6 @@ packages: dependencies: delegates: 1.0.0 readable-stream: 3.6.0 - dev: true /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -3649,7 +3645,6 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true /caseless/0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -3748,7 +3743,6 @@ packages: /chownr/2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - dev: true /ci-info/2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -3859,7 +3853,6 @@ packages: /code-point-at/1.1.0: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} - dev: true /codemirror/6.0.1: resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} @@ -3901,7 +3894,6 @@ packages: /color-support/1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true - dev: true /columnify/1.6.0: resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} @@ -4012,7 +4004,6 @@ packages: /console-control-strings/1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: true /conventional-changelog-angular/5.0.13: resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} @@ -4246,7 +4237,6 @@ packages: engines: {node: '>=8'} dependencies: mimic-response: 2.1.0 - dev: true /dedent/0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -4302,7 +4292,6 @@ packages: /delegates/1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: true /depd/1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} @@ -4351,7 +4340,6 @@ packages: /detect-libc/2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} - dev: true /detect-node/2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -5579,7 +5567,6 @@ packages: engines: {node: '>= 8'} dependencies: minipass: 3.3.6 - dev: true /fs-then-native/2.0.0: resolution: {integrity: sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==} @@ -5639,7 +5626,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: true /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -6013,7 +5999,6 @@ packages: /has-unicode/2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: true /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -6199,7 +6184,6 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} @@ -6456,7 +6440,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: number-is-nan: 1.0.1 - dev: true /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -7178,7 +7161,6 @@ packages: engines: {node: '>=8'} dependencies: semver: 6.3.0 - dev: true /make-fetch-happen/8.0.14: resolution: {integrity: sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==} @@ -7901,7 +7883,6 @@ packages: /mimic-response/2.1.0: resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} engines: {node: '>=8'} - dev: true /min-indent/1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -7983,14 +7964,12 @@ packages: engines: {node: '>=8'} dependencies: yallist: 4.0.0 - dev: true /minipass/4.0.0: resolution: {integrity: sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 - dev: true /minizlib/1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} @@ -8004,7 +7983,6 @@ packages: dependencies: minipass: 3.3.6 yallist: 4.0.0 - dev: true /mkdirp-classic/0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -8030,7 +8008,6 @@ packages: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: true /mkdirp2/1.0.5: resolution: {integrity: sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==} @@ -8121,7 +8098,6 @@ packages: /nan/2.17.0: resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} - dev: true /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} @@ -8193,7 +8169,6 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: true /node-fetch/3.3.0: resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} @@ -8274,7 +8249,6 @@ packages: hasBin: true dependencies: abbrev: 1.1.1 - dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -8429,12 +8403,10 @@ packages: console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 - dev: true /number-is-nan/1.0.1: resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} engines: {node: '>=0.10.0'} - dev: true /oauth-sign/0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} @@ -8952,6 +8924,17 @@ packages: - supports-color dev: true + /postcss-import/14.1.0: + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + /postcss-import/14.1.0_postcss@8.4.21: resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} @@ -8962,6 +8945,16 @@ packages: postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.1 + dev: true + + /postcss-js/4.0.0: + resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.3.3 + dependencies: + camelcase-css: 2.0.1 + dev: false /postcss-js/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} @@ -8971,6 +8964,23 @@ packages: dependencies: camelcase-css: 2.0.1 postcss: 8.4.21 + dev: true + + /postcss-load-config/3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.6 + yaml: 1.10.2 + dev: false /postcss-load-config/3.1.4_postcss@8.4.21: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} @@ -8988,6 +8998,15 @@ packages: postcss: 8.4.21 yaml: 1.10.2 + /postcss-nested/6.0.0: + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss-selector-parser: 6.0.11 + dev: false + /postcss-nested/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} @@ -8996,6 +9015,7 @@ packages: dependencies: postcss: 8.4.21 postcss-selector-parser: 6.0.11 + dev: true /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} @@ -9949,7 +9969,6 @@ packages: /set-blocking/2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true /sfumato/0.1.2: resolution: {integrity: sha512-j2s5BLUS5VUNtaK1l+v+yal3XjjV7JXCQIwE5Xs4yiQ3HJ+2Fc/dd3IkkrVHn0AJO2epShSWVoP3GnE0TvPdMg==} @@ -10045,7 +10064,6 @@ packages: /simple-concat/1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true /simple-get/3.1.1: resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} @@ -10053,7 +10071,6 @@ packages: decompress-response: 4.2.1 once: 1.4.0 simple-concat: 1.0.1 - dev: true /sirv/2.0.2: resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} @@ -10280,7 +10297,6 @@ packages: code-point-at: 1.1.0 is-fullwidth-code-point: 1.0.0 strip-ansi: 3.0.1 - dev: true /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -10346,7 +10362,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: ansi-regex: 2.1.1 - dev: true /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -10499,6 +10514,8 @@ packages: resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} hasBin: true + peerDependencies: + postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -10515,10 +10532,10 @@ packages: object-hash: 3.0.0 picocolors: 1.0.0 postcss: 8.4.21 - postcss-import: 14.1.0_postcss@8.4.21 - postcss-js: 4.0.0_postcss@8.4.21 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 6.0.0_postcss@8.4.21 + postcss-import: 14.1.0 + postcss-js: 4.0.0 + postcss-load-config: 3.1.4 + postcss-nested: 6.0.0 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -10609,7 +10626,6 @@ packages: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 - dev: true /temp-dir/1.0.0: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} @@ -11638,7 +11654,6 @@ packages: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: string-width: 1.0.2 - dev: true /widest-line/4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} From 458dc6e07dcb2fa7491b3a165dd7d878ea1459cd Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:05:11 +0100 Subject: [PATCH 13/52] add core build --- packages/core/package.json | 10 ++++++++-- packages/core/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 packages/core/vite.config.js diff --git a/packages/core/package.json b/packages/core/package.json index 376a39403..90993362c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,11 +1,16 @@ { "name": "@strudel.cycles/core", - "version": "0.5.0", + "version": "0.6.8", "description": "Port of Tidal Cycles to JavaScript", "main": "index.mjs", "type": "module", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { - "test": "vitest run" + "test": "vitest run", + "build": "vite build" }, "repository": { "type": "git", @@ -29,6 +34,7 @@ }, "gitHead": "0e26d4e741500f5bae35b023608f062a794905c2", "devDependencies": { + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/core/vite.config.js b/packages/core/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/core/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f60df6eac..d1d585e2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,10 +52,12 @@ importers: packages/core: specifiers: fraction.js: ^4.2.0 + vite: ^3.2.2 vitest: ^0.25.7 dependencies: fraction.js: 4.2.0 devDependencies: + vite: 3.2.5 vitest: 0.25.8 packages/csound: From 657091307e96354b9ba05c42d623c7189bb8c163 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:12:11 +0100 Subject: [PATCH 14/52] remove unused deps --- packages/mini/package.json | 4 +--- pnpm-lock.yaml | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/mini/package.json b/packages/mini/package.json index 9f666f8c2..778a003c8 100644 --- a/packages/mini/package.json +++ b/packages/mini/package.json @@ -26,9 +26,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "workspace:*", - "@strudel.cycles/eval": "workspace:*", - "@strudel.cycles/tone": "workspace:*" + "@strudel.cycles/core": "workspace:*" }, "devDependencies": { "peggy": "^2.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1d585e2e..0f6f3cb0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,7 +85,7 @@ importers: shift-traverser: ^1.0.0 vitest: ^0.25.7 dependencies: - '@strudel.cycles/core': link:../core + '@strudel.cycles/core': 0.5.0 estraverse: 5.3.0 shift-ast: 7.0.0 shift-codegen: 8.1.0 @@ -109,14 +109,10 @@ importers: packages/mini: specifiers: '@strudel.cycles/core': workspace:* - '@strudel.cycles/eval': workspace:* - '@strudel.cycles/tone': workspace:* peggy: ^2.0.1 vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core - '@strudel.cycles/eval': link:../eval - '@strudel.cycles/tone': link:../tone devDependencies: peggy: 2.0.1 vitest: 0.25.8 @@ -2376,6 +2372,13 @@ packages: picomatch: 2.3.1 dev: false + /@strudel.cycles/core/0.5.0: + resolution: {integrity: sha512-6+jItB/6pwIiGOQwpyo9k72DsJIRy/VDJ0J+r43D9CeoRjhvShQznBrOtd5JuGe9iVn+8D1DjQojq/Ivrj6jsg==} + dependencies: + bjork: 0.0.1 + fraction.js: 4.2.0 + dev: false + /@supabase/functions-js/1.3.4: resolution: {integrity: sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==} dependencies: @@ -3438,6 +3441,10 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /bjork/0.0.1: + resolution: {integrity: sha512-IAq1k24hAwuACo82E0NobWh44z2heG4VM0C6c4MxLCDx54Tt4s4tjT8M+0ON4pfXzH2V5Br1tfhhnb19oiMp2w==} + dev: false + /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: From be44c28fd3163a45c8e7f2088e1c0df57e73a0cb Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:16:04 +0100 Subject: [PATCH 15/52] add mini build --- packages/mini/package.json | 8 +++++++- packages/mini/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/mini/vite.config.js diff --git a/packages/mini/package.json b/packages/mini/package.json index 778a003c8..bca472707 100644 --- a/packages/mini/package.json +++ b/packages/mini/package.json @@ -4,9 +4,14 @@ "description": "Mini notation for strudel", "main": "index.mjs", "type": "module", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { "test": "vitest run", - "build:parser": "peggy -o krill-parser.js --format es ./krill.pegjs" + "build:parser": "peggy -o krill-parser.js --format es ./krill.pegjs", + "build": "vite build" }, "repository": { "type": "git", @@ -30,6 +35,7 @@ }, "devDependencies": { "peggy": "^2.0.1", + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/mini/vite.config.js b/packages/mini/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/mini/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f6f3cb0a..111bd9f39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -110,11 +110,13 @@ importers: specifiers: '@strudel.cycles/core': workspace:* peggy: ^2.0.1 + vite: ^3.2.2 vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core devDependencies: peggy: 2.0.1 + vite: 3.2.5 vitest: 0.25.8 packages/osc: From 555fe0b629442e8759db4a655007348001e7d2dc Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:16:33 +0100 Subject: [PATCH 16/52] bump mini --- packages/mini/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mini/package.json b/packages/mini/package.json index bca472707..069ce2fad 100644 --- a/packages/mini/package.json +++ b/packages/mini/package.json @@ -1,6 +1,6 @@ { "name": "@strudel.cycles/mini", - "version": "0.5.0", + "version": "0.6.0", "description": "Mini notation for strudel", "main": "index.mjs", "type": "module", From cde23bbf9853ddd2935338cb27834473b2ec4186 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:27:18 +0100 Subject: [PATCH 17/52] csound build --- packages/csound/{csound.mjs => index.mjs} | 0 packages/csound/package.json | 17 ++++++++++++----- packages/csound/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 3 +++ 4 files changed, 34 insertions(+), 5 deletions(-) rename packages/csound/{csound.mjs => index.mjs} (100%) create mode 100644 packages/csound/vite.config.js diff --git a/packages/csound/csound.mjs b/packages/csound/index.mjs similarity index 100% rename from packages/csound/csound.mjs rename to packages/csound/index.mjs diff --git a/packages/csound/package.json b/packages/csound/package.json index 8770558a5..b7c1ed04a 100644 --- a/packages/csound/package.json +++ b/packages/csound/package.json @@ -1,10 +1,14 @@ { "name": "@strudel.cycles/csound", - "version": "0.5.1", + "version": "0.6.0", "description": "csound bindings for strudel", - "main": "csound.mjs", + "main": "index.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { - "test": "echo \"No tests present.\" && exit 0" + "build": "vite build" }, "repository": { "type": "git", @@ -27,8 +31,11 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { + "@csound/browser": "^6.18.3", "@strudel.cycles/core": "workspace:*", - "@strudel.cycles/webaudio": "workspace:*", - "@csound/browser": "^6.18.3" + "@strudel.cycles/webaudio": "workspace:*" + }, + "devDependencies": { + "vite": "^3.2.2" } } diff --git a/packages/csound/vite.config.js b/packages/csound/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/csound/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 111bd9f39..781b060bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,10 +65,13 @@ importers: '@csound/browser': ^6.18.3 '@strudel.cycles/core': workspace:* '@strudel.cycles/webaudio': workspace:* + vite: ^3.2.2 dependencies: '@csound/browser': 6.18.5 '@strudel.cycles/core': link:../core '@strudel.cycles/webaudio': link:../webaudio + devDependencies: + vite: 3.2.5 packages/embed: specifiers: {} From 4aa32415cd0f99c57238e73de2ac696bee776e56 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:32:48 +0100 Subject: [PATCH 18/52] eval build --- packages/eval/package.json | 14 ++++++++++---- packages/eval/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 packages/eval/vite.config.js diff --git a/packages/eval/package.json b/packages/eval/package.json index 950e37e16..558b27167 100644 --- a/packages/eval/package.json +++ b/packages/eval/package.json @@ -1,15 +1,20 @@ { "name": "@strudel.cycles/eval", - "version": "0.5.0", + "version": "0.6.0", "description": "Code evaluator for strudel", "main": "index.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, + "scripts": { + "build": "vite build", + "test": "vitest run" + }, "type": "module", "directories": { "test": "test" }, - "scripts": { - "test": "vitest run" - }, "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" @@ -38,6 +43,7 @@ }, "devDependencies": { "@strudel.cycles/mini": "workspace:*", + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/eval/vite.config.js b/packages/eval/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/eval/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 781b060bb..1ac46fe0f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,6 +86,7 @@ importers: shift-parser: ^8.0.0 shift-spec: ^2019.0.0 shift-traverser: ^1.0.0 + vite: ^3.2.2 vitest: ^0.25.7 dependencies: '@strudel.cycles/core': 0.5.0 @@ -97,6 +98,7 @@ importers: shift-traverser: 1.0.0 devDependencies: '@strudel.cycles/mini': link:../mini + vite: 3.2.5 vitest: 0.25.8 packages/midi: From c25aad0c4a6446b7c10aa19789d30854b3c639f7 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:35:08 +0100 Subject: [PATCH 19/52] midi build --- packages/midi/package.json | 12 +++++++++++- packages/midi/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 3 +++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/midi/vite.config.js diff --git a/packages/midi/package.json b/packages/midi/package.json index 856bf0fd3..291ffa0bb 100644 --- a/packages/midi/package.json +++ b/packages/midi/package.json @@ -1,8 +1,15 @@ { "name": "@strudel.cycles/midi", - "version": "0.5.0", + "version": "0.6.0", "description": "Midi API for strudel", "main": "index.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, + "scripts": { + "build": "vite build" + }, "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" @@ -24,5 +31,8 @@ "@strudel.cycles/core": "workspace:*", "@strudel.cycles/webaudio": "workspace:*", "webmidi": "^3.0.21" + }, + "devDependencies": { + "vite": "^3.2.2" } } diff --git a/packages/midi/vite.config.js b/packages/midi/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/midi/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ac46fe0f..afb946310 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,11 +105,14 @@ importers: specifiers: '@strudel.cycles/core': workspace:* '@strudel.cycles/webaudio': workspace:* + vite: ^3.2.2 webmidi: ^3.0.21 dependencies: '@strudel.cycles/core': link:../core '@strudel.cycles/webaudio': link:../webaudio webmidi: 3.1.2 + devDependencies: + vite: 3.2.5 packages/mini: specifiers: From 750765474982b9c568d452cd2f83176b82f67a26 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:40:10 +0100 Subject: [PATCH 20/52] osc build --- packages/osc/package.json | 17 +++++++++++------ packages/osc/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 packages/osc/vite.config.js diff --git a/packages/osc/package.json b/packages/osc/package.json index 7db0b0525..67ac7c10f 100644 --- a/packages/osc/package.json +++ b/packages/osc/package.json @@ -1,14 +1,18 @@ { "name": "@strudel.cycles/osc", - "version": "0.4.0", + "version": "0.6.0", "description": "OSC messaging for strudel", "main": "osc.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { - "test": "echo \"No tests present.\" && exit 0", "server": "node server.js", "tidal-sniffer": "node tidal-sniffer.js", "client": "npx serve -p 4321", - "build": "npx pkg server.js --targets node16-macos-x64,node16-win-x64,node16-linux-x64 --out-path bin" + "build-bin": "npx pkg server.js --targets node16-macos-x64,node16-win-x64,node16-linux-x64 --out-path bin", + "build": "vite build" }, "repository": { "type": "git", @@ -31,10 +35,11 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "osc-js": "^2.4.0", - "@strudel.cycles/core": "workspace:*" + "@strudel.cycles/core": "workspace:*", + "osc-js": "^2.4.0" }, "devDependencies": { - "pkg": "^5.7.0" + "pkg": "^5.7.0", + "vite": "^3.2.2" } } diff --git a/packages/osc/vite.config.js b/packages/osc/vite.config.js new file mode 100644 index 000000000..1ed874f59 --- /dev/null +++ b/packages/osc/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'osc.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afb946310..a3aec83bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,11 +132,13 @@ importers: '@strudel.cycles/core': workspace:* osc-js: ^2.4.0 pkg: ^5.7.0 + vite: ^3.2.2 dependencies: '@strudel.cycles/core': link:../core osc-js: 2.4.0 devDependencies: pkg: 5.8.0 + vite: 3.2.5 packages/react: specifiers: From 348d576ff32a19e0509e65152d5bfd2f870ac37b Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:49:13 +0100 Subject: [PATCH 21/52] remove dist folder --- packages/react/.gitignore | 2 - packages/react/dist/index.cjs.js | 1 - packages/react/dist/index.es.js | 442 ------------------------------- packages/react/dist/style.css | 1 - 4 files changed, 446 deletions(-) delete mode 100644 packages/react/dist/index.cjs.js delete mode 100644 packages/react/dist/index.es.js delete mode 100644 packages/react/dist/style.css diff --git a/packages/react/.gitignore b/packages/react/.gitignore index 0b37e8f59..251ce6d2b 100644 --- a/packages/react/.gitignore +++ b/packages/react/.gitignore @@ -11,8 +11,6 @@ node_modules dist-ssr *.local -!dist - # Editor directories and files .vscode/* !.vscode/extensions.json diff --git a/packages/react/dist/index.cjs.js b/packages/react/dist/index.cjs.js deleted file mode 100644 index 6837f4d8f..000000000 --- a/packages/react/dist/index.cjs.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react"),de=require("@uiw/react-codemirror"),w=require("@codemirror/view"),V=require("@codemirror/state"),fe=require("@codemirror/lang-javascript"),d=require("@lezer/highlight"),ge=require("@uiw/codemirror-themes"),Z=require("@strudel.cycles/webaudio"),me=require("react-hook-inview"),T=require("@strudel.cycles/core"),he=require("@strudel.cycles/transpiler"),ee=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},f=ee(t),pe=ee(de),ve=ge.createTheme({theme:"dark",settings:{background:"#222",foreground:"#75baff",caret:"#ffcc00",selection:"rgba(128, 203, 196, 0.5)",selectionMatch:"#036dd626",lineHighlight:"#00000050",gutterBackground:"transparent",gutterForeground:"#8a919966"},styles:[{tag:d.tags.keyword,color:"#c792ea"},{tag:d.tags.operator,color:"#89ddff"},{tag:d.tags.special(d.tags.variableName),color:"#eeffff"},{tag:d.tags.typeName,color:"#c3e88d"},{tag:d.tags.atom,color:"#f78c6c"},{tag:d.tags.number,color:"#c3e88d"},{tag:d.tags.definition(d.tags.variableName),color:"#82aaff"},{tag:d.tags.string,color:"#c3e88d"},{tag:d.tags.special(d.tags.string),color:"#c3e88d"},{tag:d.tags.comment,color:"#7d8799"},{tag:d.tags.variableName,color:"#c792ea"},{tag:d.tags.tagName,color:"#c3e88d"},{tag:d.tags.bracket,color:"#525154"},{tag:d.tags.meta,color:"#ffcb6b"},{tag:d.tags.attributeName,color:"#c792ea"},{tag:d.tags.propertyName,color:"#c792ea"},{tag:d.tags.className,color:"#decb6b"},{tag:d.tags.invalid,color:"#ffffff"}]});const J=V.StateEffect.define(),be=V.StateField.define({create(){return w.Decoration.none},update(e,r){try{for(let o of r.effects)if(o.is(J))if(o.value){const n=w.Decoration.mark({attributes:{style:"background-color: #FFCA2880"}});e=w.Decoration.set([n.range(0,r.newDoc.length)])}else e=w.Decoration.set([]);return e}catch(o){return console.warn("flash error",o),e}},provide:e=>w.EditorView.decorations.from(e)}),te=e=>{e.dispatch({effects:J.of(!0)}),setTimeout(()=>{e.dispatch({effects:J.of(!1)})},200)},z=V.StateEffect.define(),Ee=V.StateField.define({create(){return w.Decoration.none},update(e,r){try{for(let o of r.effects)if(o.is(z)){const n=o.value.map(u=>(u.context.locations||[]).map(({start:m,end:g})=>{const s=u.context.color||"#FFCA28";let l=r.newDoc.line(m.line).from+m.column,p=r.newDoc.line(g.line).from+g.column;const E=r.newDoc.length;return l>E||p>E?void 0:w.Decoration.mark({attributes:{style:`outline: 1.5px solid ${s};`}}).range(l,p)})).flat().filter(Boolean)||[];e=w.Decoration.set(n,!0)}return e}catch{return w.Decoration.set([])}},provide:e=>w.EditorView.decorations.from(e)}),ye=[fe.javascript(),ve,Ee,be];function re({value:e,onChange:r,onViewChanged:o,onSelectionChange:n,options:u,editorDidMount:m}){const g=t.useCallback(p=>{r?.(p)},[r]),s=t.useCallback(p=>{o?.(p)},[o]),l=t.useCallback(p=>{p.selectionSet&&n&&n?.(p.state.selection)},[n]);return f.default.createElement(f.default.Fragment,null,f.default.createElement(pe.default,{value:e,onChange:g,onCreateEditor:s,onUpdate:l,extensions:ye}))}function G(...e){return e.filter(Boolean).join(" ")}function oe({view:e,pattern:r,active:o,getTime:n}){const u=t.useRef([]),m=t.useRef(0);t.useEffect(()=>{if(e)if(r&&o){m.current=0;let g=requestAnimationFrame(function s(){try{const l=n(),E=[Math.max(m.current??l,l-1/10,-.01),l+1/60];m.current=E[1],u.current=u.current.filter(h=>h.whole.end>l);const i=r.queryArc(...E).filter(h=>h.hasOnset());u.current=u.current.concat(i),e.dispatch({effects:z.of(u.current)})}catch{e.dispatch({effects:z.of([])})}g=requestAnimationFrame(s)});return()=>{cancelAnimationFrame(g)}}else u.current=[],e.dispatch({effects:z.of([])})},[r,o,e])}function we(e,r=!1){const o=t.useRef(),n=t.useRef(),u=s=>{if(n.current!==void 0){const l=s-n.current;e(s,l)}n.current=s,o.current=requestAnimationFrame(u)},m=()=>{o.current=requestAnimationFrame(u)},g=()=>{o.current&&cancelAnimationFrame(o.current),delete o.current};return t.useEffect(()=>{o.current&&(g(),m())},[e]),t.useEffect(()=>(r&&m(),g),[]),{start:m,stop:g}}function ke({pattern:e,started:r,getTime:o,onDraw:n,drawTime:u=[-2,2]}){let[m,g]=u;m=Math.abs(m);let s=t.useRef([]),l=t.useRef(null);t.useEffect(()=>{if(e&&r){const i=o(),h=e.queryArc(Math.max(i,0),i+g+.1);s.current=s.current.filter(v=>v.whole.begin{const i=o()+g;if(l.current===null){l.current=i;return}const h=e.queryArc(Math.max(l.current,i-1/10),i);l.current=i,s.current=(s.current||[]).filter(v=>v.whole.end>=i-m-g).concat(h.filter(v=>v.hasOnset())),n(e,i-g,s.current,u)},[e]));return t.useEffect(()=>{r?p():(s.current=[],E())},[r]),{clear:()=>{s.current=[]}}}function ne(e){return t.useEffect(()=>(window.addEventListener("message",e),()=>window.removeEventListener("message",e)),[e]),t.useCallback(r=>window.postMessage(r,"*"),[])}function ae({defaultOutput:e,interval:r,getTime:o,evalOnMount:n=!1,initialCode:u="",autolink:m=!1,beforeEval:g,afterEval:s,editPattern:l,onEvalError:p,onToggle:E,canvasId:i,drawContext:h,drawTime:v=[-2,2]}){const F=t.useMemo(()=>_e(),[]);i=i||`canvas-${F}`;const[S,D]=t.useState(),[N,x]=t.useState(),[y,L]=t.useState(u),[P,A]=t.useState(),[R,O]=t.useState(),[M,H]=t.useState(!1),j=y!==P,q=t.useCallback(c=>!!(c?.context?.onPaint&&h),[h]),{scheduler:C,evaluate:a,start:b,stop:B,pause:I}=t.useMemo(()=>T.repl({interval:r,defaultOutput:e,onSchedulerError:D,onEvalError:c=>{x(c),p?.(c)},getTime:o,drawContext:h,transpiler:he.transpiler,editPattern:l,beforeEval:({code:c})=>{L(c),g?.()},afterEval:({pattern:c,code:k})=>{A(k),O(c),x(),D(),m&&(window.location.hash="#"+encodeURIComponent(btoa(k))),s?.()},onToggle:c=>{H(c),E?.(c)}}),[e,r,o]),se=ne(({data:{from:c,type:k}})=>{k==="start"&&c!==F&&B()}),Q=t.useCallback(async(c=!0)=>{const k=await a(y,c);return se({type:"start",from:F}),k},[a,y]),K=t.useCallback((c,k,W,$)=>{const{onPaint:ie}=c.context||{},ue=typeof h=="function"?h(i):h;ie?.(ue,k,W,$)},[h,i]),U=t.useCallback(c=>{if(q(c)){const[k,W]=v,$=c.queryArc(0,W);K(c,-.001,$,v)}},[v,K,q]),X=t.useRef();t.useEffect(()=>{!X.current&&n&&y&&(X.current=!0,a(y,!1).then(c=>U(c)))},[n,y,a,U]),t.useEffect(()=>()=>{C.stop()},[C]);const ce=async()=>{M?(C.stop(),U(R)):await Q()},le=S||N;return ke({pattern:R,started:q(R)&&M,getTime:()=>C.now(),drawTime:v,onDraw:K}),{id:F,canvasId:i,code:y,setCode:L,error:le,schedulerError:S,scheduler:C,evalError:N,evaluate:a,activateCode:Q,activeCode:P,isDirty:j,pattern:R,started:M,start:b,stop:B,pause:I,togglePlay:ce}}function _e(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}function Y({type:e}){return f.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",className:"sc-h-5 sc-w-5",viewBox:"0 0 20 20",fill:"currentColor"},{refresh:f.default.createElement("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"}),play:f.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z",clipRule:"evenodd"}),pause:f.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"}),stop:f.default.createElement("path",{fillRule:"evenodd",d:"M2 10a8 8 0 1116 0 8 8 0 01-16 0zm5-2.25A.75.75 0 017.75 7h4.5a.75.75 0 01.75.75v4.5a.75.75 0 01-.75.75h-4.5a.75.75 0 01-.75-.75v-4.5z",clipRule:"evenodd"})}[e])}const Me="_container_3i85k_1",Ce="_header_3i85k_5",Fe="_buttons_3i85k_9",De="_button_3i85k_9",Re="_buttonDisabled_3i85k_17",qe="_error_3i85k_21",Se="_body_3i85k_25",_={container:Me,header:Ce,buttons:Fe,button:De,buttonDisabled:Re,error:qe,body:Se},Ae=()=>Z.getAudioContext().currentTime;function Ne({tune:e,hideOutsideView:r=!1,enableKeyboard:o,drawTime:n,punchcard:u,canvasHeight:m=200}){n=n||(u?[0,4]:void 0);const g=!!n,s=t.useCallback(n?a=>document.querySelector("#"+a)?.getContext("2d"):null,[n]),{code:l,setCode:p,evaluate:E,activateCode:i,error:h,isDirty:v,activeCode:F,pattern:S,started:D,scheduler:N,togglePlay:x,stop:y,canvasId:L,id:P}=ae({initialCode:e,defaultOutput:Z.webaudioOutput,editPattern:a=>u?a.punchcard():a,getTime:Ae,evalOnMount:g,drawContext:s,drawTime:n}),[A,R]=t.useState(),[O,M]=me.useInView({threshold:.01}),H=t.useRef(),j=t.useMemo(()=>((M||!r)&&(H.current=!0),M||H.current),[M,r]);oe({view:A,pattern:S,active:D&&!F?.includes("strudel disable-highlighting"),getTime:()=>N.now()}),t.useLayoutEffect(()=>{if(o){const a=async b=>{(b.ctrlKey||b.altKey)&&(b.code==="Enter"?(b.preventDefault(),te(A),await i()):b.code==="Period"&&(y(),b.preventDefault()))};return window.addEventListener("keydown",a,!0),()=>window.removeEventListener("keydown",a,!0)}},[o,S,l,E,y,A]);const[q,C]=t.useState([]);return xe(t.useCallback(a=>{const{data:b}=a.detail;b?.hap?.context?.id===P&&C(I=>I.concat([a.detail]).slice(-10))},[])),f.default.createElement("div",{className:_.container,ref:O},f.default.createElement("div",{className:_.header},f.default.createElement("div",{className:_.buttons},f.default.createElement("button",{className:G(_.button,D?"sc-animate-pulse":""),onClick:()=>x()},f.default.createElement(Y,{type:D?"stop":"play"})),f.default.createElement("button",{className:G(v?_.button:_.buttonDisabled),onClick:()=>i()},f.default.createElement(Y,{type:"refresh"}))),h&&f.default.createElement("div",{className:_.error},h.message)),f.default.createElement("div",{className:_.body},j&&f.default.createElement(re,{value:l,onChange:p,onViewChanged:R})),n&&f.default.createElement("canvas",{id:L,className:"w-full pointer-events-none",height:m,ref:a=>{a&&a.width!==a.clientWidth&&(a.width=a.clientWidth)}}),!!q.length&&f.default.createElement("div",{className:"sc-bg-gray-800 sc-rounded-md sc-p-2"},q.map(({message:a},b)=>f.default.createElement("div",{key:b},a))))}function xe(e){Le(T.logger.key,e)}function Le(e,r,o=!1){t.useEffect(()=>(document.addEventListener(e,r,o),()=>{document.removeEventListener(e,r,o)}),[r])}const Pe=e=>t.useLayoutEffect(()=>(window.addEventListener("keydown",e,!0),()=>window.removeEventListener("keydown",e,!0)),[e]);exports.CodeMirror=re;exports.MiniRepl=Ne;exports.cx=G;exports.flash=te;exports.useHighlighting=oe;exports.useKeydown=Pe;exports.usePostMessage=ne;exports.useStrudel=ae; diff --git a/packages/react/dist/index.es.js b/packages/react/dist/index.es.js deleted file mode 100644 index 4aecb645d..000000000 --- a/packages/react/dist/index.es.js +++ /dev/null @@ -1,442 +0,0 @@ -import d, { useCallback as E, useRef as A, useEffect as k, useMemo as Q, useState as _, useLayoutEffect as te } from "react"; -import ue from "@uiw/react-codemirror"; -import { Decoration as M, EditorView as re } from "@codemirror/view"; -import { StateEffect as ne, StateField as oe } from "@codemirror/state"; -import { javascript as de } from "@codemirror/lang-javascript"; -import { tags as u } from "@lezer/highlight"; -import { createTheme as fe } from "@uiw/codemirror-themes"; -import { webaudioOutput as me, getAudioContext as he } from "@strudel.cycles/webaudio"; -import { useInView as ge } from "react-hook-inview"; -import { repl as pe, logger as ve } from "@strudel.cycles/core"; -import { transpiler as be } from "@strudel.cycles/transpiler"; -const Ee = fe({ - theme: "dark", - settings: { - background: "#222", - foreground: "#75baff", - caret: "#ffcc00", - selection: "rgba(128, 203, 196, 0.5)", - selectionMatch: "#036dd626", - lineHighlight: "#00000050", - gutterBackground: "transparent", - gutterForeground: "#8a919966" - }, - styles: [ - { tag: u.keyword, color: "#c792ea" }, - { tag: u.operator, color: "#89ddff" }, - { tag: u.special(u.variableName), color: "#eeffff" }, - { tag: u.typeName, color: "#c3e88d" }, - { tag: u.atom, color: "#f78c6c" }, - { tag: u.number, color: "#c3e88d" }, - { tag: u.definition(u.variableName), color: "#82aaff" }, - { tag: u.string, color: "#c3e88d" }, - { tag: u.special(u.string), color: "#c3e88d" }, - { tag: u.comment, color: "#7d8799" }, - { tag: u.variableName, color: "#c792ea" }, - { tag: u.tagName, color: "#c3e88d" }, - { tag: u.bracket, color: "#525154" }, - { tag: u.meta, color: "#ffcb6b" }, - { tag: u.attributeName, color: "#c792ea" }, - { tag: u.propertyName, color: "#c792ea" }, - { tag: u.className, color: "#decb6b" }, - { tag: u.invalid, color: "#ffffff" } - ] -}); -const X = ne.define(), ye = oe.define({ - create() { - return M.none; - }, - update(e, t) { - try { - for (let r of t.effects) - if (r.is(X)) - if (r.value) { - const n = M.mark({ attributes: { style: "background-color: #FFCA2880" } }); - e = M.set([n.range(0, t.newDoc.length)]); - } else - e = M.set([]); - return e; - } catch (r) { - return console.warn("flash error", r), e; - } - }, - provide: (e) => re.decorations.from(e) -}), we = (e) => { - e.dispatch({ effects: X.of(!0) }), setTimeout(() => { - e.dispatch({ effects: X.of(!1) }); - }, 200); -}, B = ne.define(), ke = oe.define({ - create() { - return M.none; - }, - update(e, t) { - try { - for (let r of t.effects) - if (r.is(B)) { - const n = r.value.map( - (l) => (l.context.locations || []).map(({ start: m, end: f }) => { - const c = l.context.color || "#FFCA28"; - let s = t.newDoc.line(m.line).from + m.column, g = t.newDoc.line(f.line).from + f.column; - const b = t.newDoc.length; - return s > b || g > b ? void 0 : M.mark({ attributes: { style: `outline: 1.5px solid ${c};` } }).range(s, g); - }) - ).flat().filter(Boolean) || []; - e = M.set(n, !0); - } - return e; - } catch { - return M.set([]); - } - }, - provide: (e) => re.decorations.from(e) -}), Fe = [de(), Ee, ke, ye]; -function _e({ value: e, onChange: t, onViewChanged: r, onSelectionChange: n, options: l, editorDidMount: m }) { - const f = E( - (g) => { - t?.(g); - }, - [t] - ), c = E( - (g) => { - r?.(g); - }, - [r] - ), s = E( - (g) => { - g.selectionSet && n && n?.(g.state.selection); - }, - [n] - ); - return /* @__PURE__ */ d.createElement(d.Fragment, null, /* @__PURE__ */ d.createElement(ue, { - value: e, - onChange: f, - onCreateEditor: c, - onUpdate: s, - extensions: Fe - })); -} -function T(...e) { - return e.filter(Boolean).join(" "); -} -function Me({ view: e, pattern: t, active: r, getTime: n }) { - const l = A([]), m = A(0); - k(() => { - if (e) - if (t && r) { - m.current = 0; - let f = requestAnimationFrame(function c() { - try { - const s = n(), b = [Math.max(m.current ?? s, s - 1 / 10, -0.01), s + 1 / 60]; - m.current = b[1], l.current = l.current.filter((h) => h.whole.end > s); - const i = t.queryArc(...b).filter((h) => h.hasOnset()); - l.current = l.current.concat(i), e.dispatch({ effects: B.of(l.current) }); - } catch { - e.dispatch({ effects: B.of([]) }); - } - f = requestAnimationFrame(c); - }); - return () => { - cancelAnimationFrame(f); - }; - } else - l.current = [], e.dispatch({ effects: B.of([]) }); - }, [t, r, e]); -} -function Ae(e, t = !1) { - const r = A(), n = A(), l = (c) => { - if (n.current !== void 0) { - const s = c - n.current; - e(c, s); - } - n.current = c, r.current = requestAnimationFrame(l); - }, m = () => { - r.current = requestAnimationFrame(l); - }, f = () => { - r.current && cancelAnimationFrame(r.current), delete r.current; - }; - return k(() => { - r.current && (f(), m()); - }, [e]), k(() => (t && m(), f), []), { - start: m, - stop: f - }; -} -function Ne({ pattern: e, started: t, getTime: r, onDraw: n, drawTime: l = [-2, 2] }) { - let [m, f] = l; - m = Math.abs(m); - let c = A([]), s = A(null); - k(() => { - if (e && t) { - const i = r(), h = e.queryArc(Math.max(i, 0), i + f + 0.1); - c.current = c.current.filter((p) => p.whole.begin < i), c.current = c.current.concat(h); - } - }, [e, t]); - const { start: g, stop: b } = Ae( - E(() => { - const i = r() + f; - if (s.current === null) { - s.current = i; - return; - } - const h = e.queryArc(Math.max(s.current, i - 1 / 10), i); - s.current = i, c.current = (c.current || []).filter((p) => p.whole.end >= i - m - f).concat(h.filter((p) => p.hasOnset())), n(e, i - f, c.current, l); - }, [e]) - ); - return k(() => { - t ? g() : (c.current = [], b()); - }, [t]), { - clear: () => { - c.current = []; - } - }; -} -function Ce(e) { - return k(() => (window.addEventListener("message", e), () => window.removeEventListener("message", e)), [e]), E((t) => window.postMessage(t, "*"), []); -} -function De({ - defaultOutput: e, - interval: t, - getTime: r, - evalOnMount: n = !1, - initialCode: l = "", - autolink: m = !1, - beforeEval: f, - afterEval: c, - editPattern: s, - onEvalError: g, - onToggle: b, - canvasId: i, - drawContext: h, - drawTime: p = [-2, 2] -}) { - const D = Q(() => Re(), []); - i = i || `canvas-${D}`; - const [P, R] = _(), [z, H] = _(), [y, S] = _(l), [V, q] = _(), [x, I] = _(), [N, O] = _(!1), K = y !== V, L = E((a) => !!(a?.context?.onPaint && h), [h]), { scheduler: C, evaluate: o, start: v, stop: j, pause: U } = Q( - () => pe({ - interval: t, - defaultOutput: e, - onSchedulerError: R, - onEvalError: (a) => { - H(a), g?.(a); - }, - getTime: r, - drawContext: h, - transpiler: be, - editPattern: s, - beforeEval: ({ code: a }) => { - S(a), f?.(); - }, - afterEval: ({ pattern: a, code: w }) => { - q(w), I(a), H(), R(), m && (window.location.hash = "#" + encodeURIComponent(btoa(w))), c?.(); - }, - onToggle: (a) => { - O(a), b?.(a); - } - }), - [e, t, r] - ), ce = Ce(({ data: { from: a, type: w } }) => { - w === "start" && a !== D && j(); - }), Y = E( - async (a = !0) => { - const w = await o(y, a); - return ce({ type: "start", from: D }), w; - }, - [o, y] - ), W = E( - (a, w, G, J) => { - const { onPaint: ie } = a.context || {}, le = typeof h == "function" ? h(i) : h; - ie?.(le, w, G, J); - }, - [h, i] - ), $ = E( - (a) => { - if (L(a)) { - const [w, G] = p, J = a.queryArc(0, G); - W(a, -1e-3, J, p); - } - }, - [p, W, L] - ), Z = A(); - k(() => { - !Z.current && n && y && (Z.current = !0, o(y, !1).then((a) => $(a))); - }, [n, y, o, $]), k(() => () => { - C.stop(); - }, [C]); - const ae = async () => { - N ? (C.stop(), $(x)) : await Y(); - }, se = P || z; - return Ne({ - pattern: x, - started: L(x) && N, - getTime: () => C.now(), - drawTime: p, - onDraw: W - }), { - id: D, - canvasId: i, - code: y, - setCode: S, - error: se, - schedulerError: P, - scheduler: C, - evalError: z, - evaluate: o, - activateCode: Y, - activeCode: V, - isDirty: K, - pattern: x, - started: N, - start: v, - stop: j, - pause: U, - togglePlay: ae - }; -} -function Re() { - return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1); -} -function ee({ type: e }) { - return /* @__PURE__ */ d.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - className: "sc-h-5 sc-w-5", - viewBox: "0 0 20 20", - fill: "currentColor" - }, { - refresh: /* @__PURE__ */ d.createElement("path", { - fillRule: "evenodd", - d: "M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z", - clipRule: "evenodd" - }), - play: /* @__PURE__ */ d.createElement("path", { - fillRule: "evenodd", - d: "M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z", - clipRule: "evenodd" - }), - pause: /* @__PURE__ */ d.createElement("path", { - fillRule: "evenodd", - d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zM7 8a1 1 0 012 0v4a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v4a1 1 0 102 0V8a1 1 0 00-1-1z", - clipRule: "evenodd" - }), - stop: /* @__PURE__ */ d.createElement("path", { - fillRule: "evenodd", - d: "M2 10a8 8 0 1116 0 8 8 0 01-16 0zm5-2.25A.75.75 0 017.75 7h4.5a.75.75 0 01.75.75v4.5a.75.75 0 01-.75.75h-4.5a.75.75 0 01-.75-.75v-4.5z", - clipRule: "evenodd" - }) - }[e]); -} -const xe = "_container_3i85k_1", Le = "_header_3i85k_5", Pe = "_buttons_3i85k_9", qe = "_button_3i85k_9", ze = "_buttonDisabled_3i85k_17", He = "_error_3i85k_21", Se = "_body_3i85k_25", F = { - container: xe, - header: Le, - buttons: Pe, - button: qe, - buttonDisabled: ze, - error: He, - body: Se -}, Ve = () => he().currentTime; -function Ze({ tune: e, hideOutsideView: t = !1, enableKeyboard: r, drawTime: n, punchcard: l, canvasHeight: m = 200 }) { - n = n || (l ? [0, 4] : void 0); - const f = !!n, c = E( - n ? (o) => document.querySelector("#" + o)?.getContext("2d") : null, - [n] - ), { - code: s, - setCode: g, - evaluate: b, - activateCode: i, - error: h, - isDirty: p, - activeCode: D, - pattern: P, - started: R, - scheduler: z, - togglePlay: H, - stop: y, - canvasId: S, - id: V - } = De({ - initialCode: e, - defaultOutput: me, - editPattern: (o) => l ? o.punchcard() : o, - getTime: Ve, - evalOnMount: f, - drawContext: c, - drawTime: n - }), [q, x] = _(), [I, N] = ge({ - threshold: 0.01 - }), O = A(), K = Q(() => ((N || !t) && (O.current = !0), N || O.current), [N, t]); - Me({ - view: q, - pattern: P, - active: R && !D?.includes("strudel disable-highlighting"), - getTime: () => z.now() - }), te(() => { - if (r) { - const o = async (v) => { - (v.ctrlKey || v.altKey) && (v.code === "Enter" ? (v.preventDefault(), we(q), await i()) : v.code === "Period" && (y(), v.preventDefault())); - }; - return window.addEventListener("keydown", o, !0), () => window.removeEventListener("keydown", o, !0); - } - }, [r, P, s, b, y, q]); - const [L, C] = _([]); - return Oe( - E((o) => { - const { data: v } = o.detail; - v?.hap?.context?.id === V && C((U) => U.concat([o.detail]).slice(-10)); - }, []) - ), /* @__PURE__ */ d.createElement("div", { - className: F.container, - ref: I - }, /* @__PURE__ */ d.createElement("div", { - className: F.header - }, /* @__PURE__ */ d.createElement("div", { - className: F.buttons - }, /* @__PURE__ */ d.createElement("button", { - className: T(F.button, R ? "sc-animate-pulse" : ""), - onClick: () => H() - }, /* @__PURE__ */ d.createElement(ee, { - type: R ? "stop" : "play" - })), /* @__PURE__ */ d.createElement("button", { - className: T(p ? F.button : F.buttonDisabled), - onClick: () => i() - }, /* @__PURE__ */ d.createElement(ee, { - type: "refresh" - }))), h && /* @__PURE__ */ d.createElement("div", { - className: F.error - }, h.message)), /* @__PURE__ */ d.createElement("div", { - className: F.body - }, K && /* @__PURE__ */ d.createElement(_e, { - value: s, - onChange: g, - onViewChanged: x - })), n && /* @__PURE__ */ d.createElement("canvas", { - id: S, - className: "w-full pointer-events-none", - height: m, - ref: (o) => { - o && o.width !== o.clientWidth && (o.width = o.clientWidth); - } - }), !!L.length && /* @__PURE__ */ d.createElement("div", { - className: "sc-bg-gray-800 sc-rounded-md sc-p-2" - }, L.map(({ message: o }, v) => /* @__PURE__ */ d.createElement("div", { - key: v - }, o)))); -} -function Oe(e) { - Be(ve.key, e); -} -function Be(e, t, r = !1) { - k(() => (document.addEventListener(e, t, r), () => { - document.removeEventListener(e, t, r); - }), [t]); -} -const Te = (e) => te(() => (window.addEventListener("keydown", e, !0), () => window.removeEventListener("keydown", e, !0)), [e]); -export { - _e as CodeMirror, - Ze as MiniRepl, - T as cx, - we as flash, - Me as useHighlighting, - Te as useKeydown, - Ce as usePostMessage, - De as useStrudel -}; diff --git a/packages/react/dist/style.css b/packages/react/dist/style.css deleted file mode 100644 index 6e9371392..000000000 --- a/packages/react/dist/style.css +++ /dev/null @@ -1 +0,0 @@ -.cm-editor{background-color:transparent!important;height:100%;z-index:11;font-size:18px}.cm-theme-light{width:100%}.cm-line>*{background:#00000095}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sc-h-5{height:1.25rem}.sc-w-5{width:1.25rem}@keyframes sc-pulse{50%{opacity:.5}}.sc-animate-pulse{animation:sc-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.sc-rounded-md{border-radius:.375rem}.sc-bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.sc-p-2{padding:.5rem}._container_3i85k_1{overflow:hidden;border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(34 34 34 / var(--tw-bg-opacity))}._header_3i85k_5{display:flex;justify-content:space-between;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}._buttons_3i85k_9{display:flex}._button_3i85k_9{display:flex;width:4rem;cursor:pointer;align-items:center;justify-content:center;border-right-width:1px;--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}._button_3i85k_9:hover{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}._buttonDisabled_3i85k_17{display:flex;width:4rem;cursor:pointer;cursor:not-allowed;align-items:center;justify-content:center;--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity));padding:.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}._error_3i85k_21{padding:.25rem;text-align:right;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity))}._body_3i85k_25{position:relative;overflow:auto} From b5914a3f127a4cc5e2f5272da22d9099bbbbd905 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 22:58:40 +0100 Subject: [PATCH 22/52] react build --- packages/react/package.json | 17 +++++------------ packages/react/vite.config.js | 2 +- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/react/package.json b/packages/react/package.json index 66e5d80f8..398ca162c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,19 +1,12 @@ { "name": "@strudel.cycles/react", - "version": "0.5.0", + "version": "0.6.0", "description": "React components for strudel", - "main": "dist/index.cjs.js", - "module": "dist/index.es.js", - "exports": { - ".": { - "require": "./dist/index.cjs.js", - "import": "./dist/index.es.js" - }, - "./dist/style.css": "./dist/style.css" + "main": "src/index.js", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" }, - "files": [ - "dist" - ], "scripts": { "dev": "vite", "build": "vite build", diff --git a/packages/react/vite.config.js b/packages/react/vite.config.js index a7499a397..9f7ee09e5 100644 --- a/packages/react/vite.config.js +++ b/packages/react/vite.config.js @@ -14,7 +14,7 @@ export default defineConfig({ lib: { entry: resolve(__dirname, 'src', 'index.js'), formats: ['es', 'cjs'], - fileName: (ext) => `index.${ext}.js`, + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), // for UMD name: 'GlobalName' }, rollupOptions: { From cb7156b0916f6edd18d55f4a0dbc1f6be67d828e Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:01:20 +0100 Subject: [PATCH 23/52] serial build --- packages/serial/package.json | 12 +++++++++++- packages/serial/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 3 +++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 packages/serial/vite.config.js diff --git a/packages/serial/package.json b/packages/serial/package.json index 4ca223cd1..5b5a46805 100644 --- a/packages/serial/package.json +++ b/packages/serial/package.json @@ -1,8 +1,15 @@ { "name": "@strudel.cycles/serial", - "version": "0.3.0", + "version": "0.6.0", "description": "Webserial API for strudel", "main": "serial.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, + "scripts": { + "build": "vite build" + }, "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" @@ -22,5 +29,8 @@ "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { "@strudel.cycles/core": "workspace:*" + }, + "devDependencies": { + "vite": "^3.2.2" } } diff --git a/packages/serial/vite.config.js b/packages/serial/vite.config.js new file mode 100644 index 000000000..070609bf1 --- /dev/null +++ b/packages/serial/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'serial.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3aec83bb..5ad1d0f7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -186,8 +186,11 @@ importers: packages/serial: specifiers: '@strudel.cycles/core': workspace:* + vite: ^3.2.2 dependencies: '@strudel.cycles/core': link:../core + devDependencies: + vite: 3.2.5 packages/soundfonts: specifiers: From fddbb2e2aca83852c8d0310d02fd3b0ade33bf5e Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:04:30 +0100 Subject: [PATCH 24/52] soundfonts build --- packages/soundfonts/package.json | 10 +++++++++- packages/soundfonts/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 packages/soundfonts/vite.config.js diff --git a/packages/soundfonts/package.json b/packages/soundfonts/package.json index fe30a5b5a..d8c020412 100644 --- a/packages/soundfonts/package.json +++ b/packages/soundfonts/package.json @@ -3,6 +3,13 @@ "version": "0.5.0", "description": "Soundsfont support for strudel", "main": "index.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, + "scripts": { + "build": "vite build" + }, "type": "module", "repository": { "type": "git", @@ -28,6 +35,7 @@ "soundfont2": "^0.4.0" }, "devDependencies": { - "node-fetch": "^3.2.6" + "node-fetch": "^3.2.6", + "vite": "^3.2.2" } } diff --git a/packages/soundfonts/vite.config.js b/packages/soundfonts/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/soundfonts/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ad1d0f7d..b15bd4c51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -199,6 +199,7 @@ importers: node-fetch: ^3.2.6 sfumato: ^0.1.2 soundfont2: ^0.4.0 + vite: ^3.2.2 dependencies: '@strudel.cycles/core': link:../core '@strudel.cycles/webaudio': link:../webaudio @@ -206,6 +207,7 @@ importers: soundfont2: 0.4.0 devDependencies: node-fetch: 3.3.0 + vite: 3.2.5 packages/tonal: specifiers: From 6118bd24f2dadde124e269fade966bda1de498fb Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:06:59 +0100 Subject: [PATCH 25/52] tonal build --- packages/tonal/package.json | 8 +++++++- packages/tonal/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/tonal/vite.config.js diff --git a/packages/tonal/package.json b/packages/tonal/package.json index db2ebe4b4..8b21b477d 100644 --- a/packages/tonal/package.json +++ b/packages/tonal/package.json @@ -3,10 +3,15 @@ "version": "0.5.0", "description": "Tonal functions for strudel", "main": "index.mjs", - "type": "module", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { + "build": "vite build", "test": "vitest run" }, + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" @@ -31,6 +36,7 @@ "webmidi": "^3.0.21" }, "devDependencies": { + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/tonal/vite.config.js b/packages/tonal/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/tonal/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b15bd4c51..afcbc0f79 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -214,6 +214,7 @@ importers: '@strudel.cycles/core': workspace:* '@tonaljs/tonal': ^4.7.2 chord-voicings: ^0.0.1 + vite: ^3.2.2 vitest: ^0.25.7 webmidi: ^3.0.21 dependencies: @@ -222,6 +223,7 @@ importers: chord-voicings: 0.0.1 webmidi: 3.1.2 devDependencies: + vite: 3.2.5 vitest: 0.25.8 packages/tone: From f3da9d680d8061313fde3cc5e4a58631e3b719a8 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:07:55 +0100 Subject: [PATCH 26/52] bump --- packages/soundfonts/package.json | 2 +- packages/tonal/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/soundfonts/package.json b/packages/soundfonts/package.json index d8c020412..9681ca021 100644 --- a/packages/soundfonts/package.json +++ b/packages/soundfonts/package.json @@ -1,6 +1,6 @@ { "name": "@strudel.cycles/soundfonts", - "version": "0.5.0", + "version": "0.6.0", "description": "Soundsfont support for strudel", "main": "index.mjs", "publishConfig": { diff --git a/packages/tonal/package.json b/packages/tonal/package.json index 8b21b477d..13ad0873f 100644 --- a/packages/tonal/package.json +++ b/packages/tonal/package.json @@ -1,6 +1,6 @@ { "name": "@strudel.cycles/tonal", - "version": "0.5.0", + "version": "0.6.0", "description": "Tonal functions for strudel", "main": "index.mjs", "publishConfig": { From ffaa8f4ab3778c8eed80cafde674992c3fb21c06 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:09:25 +0100 Subject: [PATCH 27/52] tone build --- packages/tone/package.json | 10 +++++++++- packages/tone/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 packages/tone/vite.config.js diff --git a/packages/tone/package.json b/packages/tone/package.json index 08b775491..0c2adaa2d 100644 --- a/packages/tone/package.json +++ b/packages/tone/package.json @@ -1,9 +1,16 @@ { "name": "@strudel.cycles/tone", - "version": "0.5.0", + "version": "0.6.0", "description": "Tone.js API for strudel", "main": "index.mjs", "type": "module", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, + "scripts": { + "build": "vite build" + }, "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" @@ -26,6 +33,7 @@ "tone": "^14.7.77" }, "devDependencies": { + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/tone/vite.config.js b/packages/tone/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/tone/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index afcbc0f79..6601dfc25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -230,11 +230,13 @@ importers: specifiers: '@strudel.cycles/core': workspace:* tone: ^14.7.77 + vite: ^3.2.2 vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core tone: 14.7.77 devDependencies: + vite: 3.2.5 vitest: 0.25.8 packages/transpiler: From cd1da3cb8156c51c27d4dd774e510509f6f341da Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:12:00 +0100 Subject: [PATCH 28/52] transpiler build --- packages/transpiler/package.json | 8 +++++++- packages/transpiler/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/transpiler/vite.config.js diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json index 16023ff72..fdd4ad517 100644 --- a/packages/transpiler/package.json +++ b/packages/transpiler/package.json @@ -1,9 +1,14 @@ { "name": "@strudel.cycles/transpiler", - "version": "0.5.0", + "version": "0.6.0", "description": "Transpiler for strudel user code. Converts syntactically correct but semantically meaningless JS into evaluatable strudel code.", "main": "index.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { + "build": "vite build", "test": "vitest run" }, "repository": { @@ -30,6 +35,7 @@ "estree-walker": "^3.0.1" }, "devDependencies": { + "vite": "^3.2.2", "vitest": "^0.25.8" } } diff --git a/packages/transpiler/vite.config.js b/packages/transpiler/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/transpiler/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6601dfc25..5983f03f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -245,6 +245,7 @@ importers: acorn: ^8.8.1 escodegen: ^2.0.0 estree-walker: ^3.0.1 + vite: ^3.2.2 vitest: ^0.25.8 dependencies: '@strudel.cycles/core': link:../core @@ -252,6 +253,7 @@ importers: escodegen: 2.0.0 estree-walker: 3.0.3 devDependencies: + vite: 3.2.5 vitest: 0.25.8 packages/webaudio: From 19692e0122e268d7d98b9e79f3e2099c9bc75014 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:14:56 +0100 Subject: [PATCH 29/52] webaudio build --- packages/webaudio/package.json | 9 ++++++++- packages/webaudio/vite.config.js | 2 +- pnpm-lock.yaml | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/webaudio/package.json b/packages/webaudio/package.json index dacca26ad..74ad470a8 100644 --- a/packages/webaudio/package.json +++ b/packages/webaudio/package.json @@ -1,12 +1,16 @@ { "name": "@strudel.cycles/webaudio", - "version": "0.5.0", + "version": "0.6.0", "description": "Web Audio helpers for Strudel", "main": "index.mjs", "type": "module", "directories": { "example": "examples" }, + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { "example": "npx parcel examples/repl.html", "build": "vite build", @@ -31,5 +35,8 @@ "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { "@strudel.cycles/core": "workspace:*" + }, + "devDependencies": { + "vite": "^3.2.2" } } diff --git a/packages/webaudio/vite.config.js b/packages/webaudio/vite.config.js index 5df3b215a..0fc63a6b3 100644 --- a/packages/webaudio/vite.config.js +++ b/packages/webaudio/vite.config.js @@ -9,7 +9,7 @@ export default defineConfig({ lib: { entry: resolve(__dirname, 'index.mjs'), formats: ['es', 'cjs'], - fileName: (ext) => `index.${ext}.js`, + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), }, rollupOptions: { external: [...Object.keys(dependencies)], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5983f03f3..5e6ec646a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -259,8 +259,11 @@ importers: packages/webaudio: specifiers: '@strudel.cycles/core': workspace:* + vite: ^3.2.2 dependencies: '@strudel.cycles/core': link:../core + devDependencies: + vite: 3.2.5 packages/webdirt: specifiers: From 52e01321ece57a83ae5af07df18e23446eeb9c21 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:18:25 +0100 Subject: [PATCH 30/52] webdirt build --- packages/webdirt/package.json | 10 +++++++++- packages/webdirt/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 packages/webdirt/vite.config.js diff --git a/packages/webdirt/package.json b/packages/webdirt/package.json index 4c66ccd63..fa69ecb7f 100644 --- a/packages/webdirt/package.json +++ b/packages/webdirt/package.json @@ -1,9 +1,16 @@ { "name": "@strudel.cycles/webdirt", - "version": "0.5.0", + "version": "0.6.0", "description": "WebDirt integration for Strudel", "main": "index.mjs", "type": "module", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, + "scripts": { + "build": "vite build" + }, "repository": { "type": "git", "url": "git+https://github.com/tidalcycles/strudel.git" @@ -27,6 +34,7 @@ "WebDirt": "github:dktr0/WebDirt" }, "devDependencies": { + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/webdirt/vite.config.js b/packages/webdirt/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/webdirt/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e6ec646a..629425ae5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -270,12 +270,14 @@ importers: '@strudel.cycles/core': workspace:* '@strudel.cycles/webaudio': workspace:* WebDirt: github:dktr0/WebDirt + vite: ^3.2.2 vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core '@strudel.cycles/webaudio': link:../webaudio WebDirt: github.com/dktr0/WebDirt/8bdd7478ae05f74cbd5003936da23ce9bc6fc7c7 devDependencies: + vite: 3.2.5 vitest: 0.25.8 packages/xen: From a5d4a437532d08cebd03c8125e11871dec01a1b1 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sat, 28 Jan 2023 23:19:33 +0100 Subject: [PATCH 31/52] xen build --- packages/xen/package.json | 8 +++++++- packages/xen/vite.config.js | 19 +++++++++++++++++++ pnpm-lock.yaml | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/xen/vite.config.js diff --git a/packages/xen/package.json b/packages/xen/package.json index 75b2885c9..50bae759b 100644 --- a/packages/xen/package.json +++ b/packages/xen/package.json @@ -1,9 +1,14 @@ { "name": "@strudel.cycles/xen", - "version": "0.5.0", + "version": "0.6.0", "description": "Xenharmonic API for strudel", "main": "index.mjs", + "publishConfig": { + "main": "dist/index.js", + "module": "dist/index.mjs" + }, "scripts": { + "build": "vite build", "test": "vitest run" }, "repository": { @@ -27,6 +32,7 @@ "@strudel.cycles/core": "workspace:*" }, "devDependencies": { + "vite": "^3.2.2", "vitest": "^0.25.7" } } diff --git a/packages/xen/vite.config.js b/packages/xen/vite.config.js new file mode 100644 index 000000000..0fc63a6b3 --- /dev/null +++ b/packages/xen/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { dependencies } from './package.json'; +import { resolve } from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + build: { + lib: { + entry: resolve(__dirname, 'index.mjs'), + formats: ['es', 'cjs'], + fileName: (ext) => ({ es: 'index.mjs', cjs: 'index.js' }[ext]), + }, + rollupOptions: { + external: [...Object.keys(dependencies)], + }, + target: 'esnext', + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 629425ae5..7ebf8babe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -283,10 +283,12 @@ importers: packages/xen: specifiers: '@strudel.cycles/core': workspace:* + vite: ^3.2.2 vitest: ^0.25.7 dependencies: '@strudel.cycles/core': link:../core devDependencies: + vite: 3.2.5 vitest: 0.25.8 website: From f448d8f334a06d706913b63608598c199c043b12 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 29 Jan 2023 00:08:29 +0100 Subject: [PATCH 32/52] rename website package --- website/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/package.json b/website/package.json index 9661a8733..596925e53 100644 --- a/website/package.json +++ b/website/package.json @@ -1,7 +1,7 @@ { - "name": "@example/docs", + "name": "@strudel.cycles/website", "type": "module", - "version": "0.0.1", + "version": "0.6.0", "private": true, "scripts": { "dev": "astro dev", From c032f6dde1338eb63bfff30fb80c0827adb7ec84 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 29 Jan 2023 00:14:07 +0100 Subject: [PATCH 33/52] add prepublishOnly everywhere --- packages/core/package.json | 3 ++- packages/csound/package.json | 3 ++- packages/eval/package.json | 3 ++- packages/midi/package.json | 3 ++- packages/mini/package.json | 3 ++- packages/osc/package.json | 3 ++- packages/react/package.json | 3 ++- packages/serial/package.json | 3 ++- packages/soundfonts/package.json | 3 ++- packages/tonal/package.json | 3 ++- packages/tone/package.json | 3 ++- packages/transpiler/package.json | 3 ++- packages/webaudio/package.json | 2 +- packages/webdirt/package.json | 3 ++- packages/xen/package.json | 3 ++- 15 files changed, 29 insertions(+), 15 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 90993362c..3b0c2bd14 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -10,7 +10,8 @@ }, "scripts": { "test": "vitest run", - "build": "vite build" + "build": "vite build", + "prepublishOnly": "pnpm build" }, "repository": { "type": "git", diff --git a/packages/csound/package.json b/packages/csound/package.json index b7c1ed04a..e2bab1423 100644 --- a/packages/csound/package.json +++ b/packages/csound/package.json @@ -8,7 +8,8 @@ "module": "dist/index.mjs" }, "scripts": { - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/eval/package.json b/packages/eval/package.json index 558b27167..9b7caa5c9 100644 --- a/packages/eval/package.json +++ b/packages/eval/package.json @@ -9,7 +9,8 @@ }, "scripts": { "build": "vite build", - "test": "vitest run" + "test": "vitest run", + "prepublishOnly": "npm run build" }, "type": "module", "directories": { diff --git a/packages/midi/package.json b/packages/midi/package.json index 291ffa0bb..59baa83b0 100644 --- a/packages/midi/package.json +++ b/packages/midi/package.json @@ -8,7 +8,8 @@ "module": "dist/index.mjs" }, "scripts": { - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/mini/package.json b/packages/mini/package.json index 069ce2fad..5a6dcfc9c 100644 --- a/packages/mini/package.json +++ b/packages/mini/package.json @@ -11,7 +11,8 @@ "scripts": { "test": "vitest run", "build:parser": "peggy -o krill-parser.js --format es ./krill.pegjs", - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/osc/package.json b/packages/osc/package.json index 67ac7c10f..4e8c38429 100644 --- a/packages/osc/package.json +++ b/packages/osc/package.json @@ -12,7 +12,8 @@ "tidal-sniffer": "node tidal-sniffer.js", "client": "npx serve -p 4321", "build-bin": "npx pkg server.js --targets node16-macos-x64,node16-win-x64,node16-linux-x64 --out-path bin", - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/react/package.json b/packages/react/package.json index 398ca162c..886da0096 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -11,7 +11,8 @@ "dev": "vite", "build": "vite build", "watch": "vite build --watch", - "preview": "vite preview" + "preview": "vite preview", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/serial/package.json b/packages/serial/package.json index 5b5a46805..6d7fc6e3b 100644 --- a/packages/serial/package.json +++ b/packages/serial/package.json @@ -8,7 +8,8 @@ "module": "dist/index.mjs" }, "scripts": { - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/soundfonts/package.json b/packages/soundfonts/package.json index 9681ca021..d20b86aa2 100644 --- a/packages/soundfonts/package.json +++ b/packages/soundfonts/package.json @@ -8,7 +8,8 @@ "module": "dist/index.mjs" }, "scripts": { - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "type": "module", "repository": { diff --git a/packages/tonal/package.json b/packages/tonal/package.json index 13ad0873f..66a6cd539 100644 --- a/packages/tonal/package.json +++ b/packages/tonal/package.json @@ -9,7 +9,8 @@ }, "scripts": { "build": "vite build", - "test": "vitest run" + "test": "vitest run", + "prepublishOnly": "npm run build" }, "type": "module", "repository": { diff --git a/packages/tone/package.json b/packages/tone/package.json index 0c2adaa2d..149f6adf6 100644 --- a/packages/tone/package.json +++ b/packages/tone/package.json @@ -9,7 +9,8 @@ "module": "dist/index.mjs" }, "scripts": { - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json index fdd4ad517..3ef52f68f 100644 --- a/packages/transpiler/package.json +++ b/packages/transpiler/package.json @@ -9,7 +9,8 @@ }, "scripts": { "build": "vite build", - "test": "vitest run" + "test": "vitest run", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/webaudio/package.json b/packages/webaudio/package.json index 74ad470a8..48b1bcf6c 100644 --- a/packages/webaudio/package.json +++ b/packages/webaudio/package.json @@ -14,7 +14,7 @@ "scripts": { "example": "npx parcel examples/repl.html", "build": "vite build", - "prepublish": "npm run build" + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/webdirt/package.json b/packages/webdirt/package.json index fa69ecb7f..1e08f1e66 100644 --- a/packages/webdirt/package.json +++ b/packages/webdirt/package.json @@ -9,7 +9,8 @@ "module": "dist/index.mjs" }, "scripts": { - "build": "vite build" + "build": "vite build", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", diff --git a/packages/xen/package.json b/packages/xen/package.json index 50bae759b..f5ba67ee1 100644 --- a/packages/xen/package.json +++ b/packages/xen/package.json @@ -9,7 +9,8 @@ }, "scripts": { "build": "vite build", - "test": "vitest run" + "test": "vitest run", + "prepublishOnly": "npm run build" }, "repository": { "type": "git", From 0aa2f72a3af06fb80e2338760ce2fd8e98daedd3 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 29 Jan 2023 23:27:35 +0100 Subject: [PATCH 34/52] update core examples --- packages/core/README.md | 7 +- packages/core/examples/basic.html | 4 +- packages/core/examples/canvas.html | 4 +- packages/core/examples/repl.html | 90 ------------------- packages/core/examples/scheduled.html | 44 --------- packages/core/examples/vanilla.html | 40 ++++----- .../core/examples/vite-vanilla-repl/main.js | 13 ++- .../examples/vite-vanilla-repl/package.json | 1 + .../core/examples/vite-vanilla-repl/tune.mjs | 10 +-- packages/core/examples/without-audio.html | 65 -------------- pnpm-lock.yaml | 15 ++++ pnpm-workspace.yaml | 3 +- 12 files changed, 48 insertions(+), 248 deletions(-) delete mode 100644 packages/core/examples/repl.html delete mode 100644 packages/core/examples/scheduled.html delete mode 100644 packages/core/examples/without-audio.html diff --git a/packages/core/README.md b/packages/core/README.md index 13b806821..8e42800ef 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -33,6 +33,7 @@ b: 3/2 - 7/4 c: 7/4 - 2 ``` -- [play with @strudel.cycles/core on codesandbox](https://codesandbox.io/s/strudel-core-test-qmz6qr?file=/src/index.js). -- [open color pattern example](https://raw.githack.com/tidalcycles/strudel/package-examples/packages/core/examples/canvas.html) -- [open minimal repl example](https://raw.githack.com/tidalcycles/strudel/package-examples/packages/core/examples/metro.html) +- [play with @strudel.cycles/core on codesandbox](https://codesandbox.io/s/strudel-core-test-forked-9ywhv7?file=/src/index.js). +- [open color pattern example](https://raw.githack.com/tidalcycles/strudel/main/packages/core/examples/canvas.html) +- [open minimal repl example](https://raw.githack.com/tidalcycles/strudel/main/packages/core/examples/vanilla.html) +- [open minimal vite example](./examples/vite-vanilla-repl/) \ No newline at end of file diff --git a/packages/core/examples/basic.html b/packages/core/examples/basic.html index fad59d1b2..97508132c 100644 --- a/packages/core/examples/basic.html +++ b/packages/core/examples/basic.html @@ -1,13 +1,13 @@
- diff --git a/packages/core/examples/scheduled.html b/packages/core/examples/scheduled.html deleted file mode 100644 index e27db1d0f..000000000 --- a/packages/core/examples/scheduled.html +++ /dev/null @@ -1,44 +0,0 @@ - - -
- diff --git a/packages/core/examples/vanilla.html b/packages/core/examples/vanilla.html index 1f9b12811..233f76f79 100644 --- a/packages/core/examples/vanilla.html +++ b/packages/core/examples/vanilla.html @@ -6,46 +6,36 @@ Buildless Vanilla Strudel REPL -
+
+
-
- - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ebf8babe..210717b10 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,6 +60,21 @@ importers: vite: 3.2.5 vitest: 0.25.8 + packages/core/examples/vite-vanilla-repl: + specifiers: + '@strudel.cycles/core': workspace:* + '@strudel.cycles/mini': workspace:* + '@strudel.cycles/tonal': workspace:* + '@strudel.cycles/webaudio': workspace:* + vite: ^3.2.0 + dependencies: + '@strudel.cycles/core': link:../.. + '@strudel.cycles/mini': link:../../../mini + '@strudel.cycles/tonal': link:../../../tonal + '@strudel.cycles/webaudio': link:../../../webaudio + devDependencies: + vite: 3.2.5 + packages/csound: specifiers: '@csound/browser': ^6.18.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fd397ad59..c89e911c5 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: # all packages in direct subdirs of packages/ - "packages/*" - - "website/" \ No newline at end of file + - "website/" + - "packages/core/examples/vite-vanilla-repl" \ No newline at end of file From a373629fc2a2fd8773c74590a93ebff9c6e646d2 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Mon, 30 Jan 2023 22:48:24 +0100 Subject: [PATCH 35/52] fix: gh actions use pnpm --- .github/workflows/deploy.yml | 9 ++++++--- .github/workflows/test.yml | 13 ++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index dd08cfb87..4382624c8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,15 +22,18 @@ jobs: url: ${{ steps.deployment.outputs.page_url }} steps: - uses: actions/checkout@v2 + - uses: pnpm/action-setup@v2 + with: + version: 7 - uses: actions/setup-node@v3 with: node-version: 18 - cache: "npm" + cache: "pnpm" - name: Install Dependencies - run: npm ci && cd website && npm ci + run: pnpm ci - name: Build - run: npm run build + run: pnpm build - name: Setup Pages uses: actions/configure-pages@v2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0f7d0eade..849db7d38 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,11 +11,14 @@ jobs: steps: - uses: actions/checkout@v2 + - uses: pnpm/action-setup@v2 + with: + version: 7 - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - cache: "npm" - - run: npm install - - run: npm run format-check - - run: npm run lint - - run: npm test + cache: 'pnpm' + - run: pnpm install + - run: pnpm run format-check + - run: pnpm run lint + - run: pnpm test From 2823456e9624873a115e6462ec738bcfb363bf32 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Mon, 30 Jan 2023 22:50:44 +0100 Subject: [PATCH 36/52] update lockfile --- pnpm-lock.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 210717b10..3bc08763f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,12 +65,14 @@ importers: '@strudel.cycles/core': workspace:* '@strudel.cycles/mini': workspace:* '@strudel.cycles/tonal': workspace:* + '@strudel.cycles/transpiler': workspace:* '@strudel.cycles/webaudio': workspace:* vite: ^3.2.0 dependencies: '@strudel.cycles/core': link:../.. '@strudel.cycles/mini': link:../../../mini '@strudel.cycles/tonal': link:../../../tonal + '@strudel.cycles/transpiler': link:../../../transpiler '@strudel.cycles/webaudio': link:../../../webaudio devDependencies: vite: 3.2.5 From 84bf4a26861f12aa4218dc6d83a19cd13194ea95 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Mon, 30 Jan 2023 22:53:53 +0100 Subject: [PATCH 37/52] add pretest --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index cca3eff26..cc8bcc8a2 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,12 @@ "scripts": { "pretest": "npm run jsdoc-json", "prebuild": "npm run jsdoc-json", - "test": "vitest run --version", - "test-ui": "vitest --ui", - "test-coverage": "vitest --coverage", + "test": "npm run pretest && vitest run --version", + "test-ui": "npm run pretest && vitest --ui", + "test-coverage": "npm run pretest && vitest --coverage", "bootstrap": "lerna bootstrap", "setup": "npm i && npm run jsdoc-json && npm run bootstrap && cd website && npm i", - "snapshot": "vitest run -u --silent", + "snapshot": "npm run pretest && vitest run -u --silent", "repl": "cd website && npm run dev", "osc": "cd packages/osc && npm run server", "build": "cd website && npm run build", From 08350d00beed8badb7f07445f8069aaa9273821a Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 1 Feb 2023 15:35:21 +0100 Subject: [PATCH 38/52] remove sc prefix to fix build --- packages/react/src/components/MiniRepl.module.css | 14 +++++++------- packages/react/tailwind.config.js | 1 - 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/react/src/components/MiniRepl.module.css b/packages/react/src/components/MiniRepl.module.css index 28f64e6cc..cbbb5a3b0 100644 --- a/packages/react/src/components/MiniRepl.module.css +++ b/packages/react/src/components/MiniRepl.module.css @@ -1,27 +1,27 @@ .container { - @apply sc-rounded-md sc-overflow-hidden sc-bg-[#222222]; + @apply rounded-md overflow-hidden bg-[#222222]; } .header { - @apply sc-flex sc-justify-between sc-bg-slate-700 sc-border-t sc-border-slate-500; + @apply flex justify-between bg-slate-700 border-t border-slate-500; } .buttons { - @apply sc-flex; + @apply flex; } .button { - @apply sc-cursor-pointer sc-w-16 sc-flex sc-items-center sc-justify-center sc-p-1 sc-bg-slate-700 sc-border-r sc-border-slate-500 sc-text-white hover:sc-bg-slate-600; + @apply cursor-pointer w-16 flex items-center justify-center p-1 bg-slate-700 border-r border-slate-500 text-white hover:bg-slate-600; } .buttonDisabled { - @apply sc-cursor-pointer sc-w-16 sc-flex sc-items-center sc-justify-center sc-p-1 sc-bg-slate-600 sc-text-slate-400 sc-cursor-not-allowed; + @apply w-16 flex items-center justify-center p-1 bg-slate-600 text-slate-400 cursor-not-allowed; } .error { - @apply sc-text-right sc-p-1 sc-text-sm sc-text-red-200; + @apply text-right p-1 text-sm text-red-200; } .body { - @apply sc-overflow-auto sc-relative; + @apply overflow-auto relative; } diff --git a/packages/react/tailwind.config.js b/packages/react/tailwind.config.js index bb03c5d65..f6cae19be 100644 --- a/packages/react/tailwind.config.js +++ b/packages/react/tailwind.config.js @@ -7,5 +7,4 @@ module.exports = { corePlugins: { preflight: false, }, - prefix: 'sc-', }; From 48fd9436227458f6406db96a8eb908ed78a9ad06 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 1 Feb 2023 15:40:57 +0100 Subject: [PATCH 39/52] fix: eval dependency + add deprecation note --- packages/eval/README.md | 4 ++++ packages/eval/package.json | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/eval/README.md b/packages/eval/README.md index 466ae2f8c..e09847062 100644 --- a/packages/eval/README.md +++ b/packages/eval/README.md @@ -3,6 +3,10 @@ This package contains the strudel code transformer and evaluator. It allows creating strudel patterns from input code that is optimized for minimal keystrokes and human readability. +## Deprecation Note + +This package will not be developed further. Consider using `@strudel.cycles/transpiler` as a replacement. + ## Install ```sh diff --git a/packages/eval/package.json b/packages/eval/package.json index 9b7caa5c9..10c477fe0 100644 --- a/packages/eval/package.json +++ b/packages/eval/package.json @@ -1,6 +1,6 @@ { "name": "@strudel.cycles/eval", - "version": "0.6.0", + "version": "0.6.1", "description": "Code evaluator for strudel", "main": "index.mjs", "publishConfig": { @@ -34,7 +34,7 @@ }, "homepage": "https://github.com/tidalcycles/strudel#readme", "dependencies": { - "@strudel.cycles/core": "^0.5.0", + "@strudel.cycles/core": "workspace:*", "estraverse": "^5.3.0", "shift-ast": "^7.0.0", "shift-codegen": "^8.1.0", From 7f67adb639d49f66c1ac8ce10de1cde222162a90 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 1 Feb 2023 15:49:05 +0100 Subject: [PATCH 40/52] bump eval --- packages/eval/package.json | 2 +- pnpm-lock.yaml | 15 ++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/packages/eval/package.json b/packages/eval/package.json index 10c477fe0..ce2f96724 100644 --- a/packages/eval/package.json +++ b/packages/eval/package.json @@ -1,6 +1,6 @@ { "name": "@strudel.cycles/eval", - "version": "0.6.1", + "version": "0.6.2", "description": "Code evaluator for strudel", "main": "index.mjs", "publishConfig": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bc08763f..cb802d59c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -95,7 +95,7 @@ importers: packages/eval: specifiers: - '@strudel.cycles/core': ^0.5.0 + '@strudel.cycles/core': workspace:* '@strudel.cycles/mini': workspace:* estraverse: ^5.3.0 shift-ast: ^7.0.0 @@ -106,7 +106,7 @@ importers: vite: ^3.2.2 vitest: ^0.25.7 dependencies: - '@strudel.cycles/core': 0.5.0 + '@strudel.cycles/core': link:../core estraverse: 5.3.0 shift-ast: 7.0.0 shift-codegen: 8.1.0 @@ -2419,13 +2419,6 @@ packages: picomatch: 2.3.1 dev: false - /@strudel.cycles/core/0.5.0: - resolution: {integrity: sha512-6+jItB/6pwIiGOQwpyo9k72DsJIRy/VDJ0J+r43D9CeoRjhvShQznBrOtd5JuGe9iVn+8D1DjQojq/Ivrj6jsg==} - dependencies: - bjork: 0.0.1 - fraction.js: 4.2.0 - dev: false - /@supabase/functions-js/1.3.4: resolution: {integrity: sha512-yYVgkECjv7IZEBKBI3EB5Q7R1p0FJ10g8Q9N7SWKIHUU6i6DnbEGHIMFLyQRm1hmiNWD8fL7bRVEYacmTRJhHw==} dependencies: @@ -3488,10 +3481,6 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /bjork/0.0.1: - resolution: {integrity: sha512-IAq1k24hAwuACo82E0NobWh44z2heG4VM0C6c4MxLCDx54Tt4s4tjT8M+0ON4pfXzH2V5Br1tfhhnb19oiMp2w==} - dev: false - /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: From 9a5bda862c06a0612f28bba2c0ee24429acc03fb Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 1 Feb 2023 16:09:33 +0100 Subject: [PATCH 41/52] update examples --- packages/midi/README.md | 4 ---- packages/mini/README.md | 2 +- packages/osc/README.md | 4 ++-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/midi/README.md b/packages/midi/README.md index 31eca2950..bf8a85eb2 100644 --- a/packages/midi/README.md +++ b/packages/midi/README.md @@ -7,7 +7,3 @@ This package adds midi functionality to strudel Patterns. ```sh npm i @strudel.cycles/midi --save ``` - -## Dev Notes - -- is this package really necessary? currently, /tone also depends on webmidi through @tonejs/piano. Either move piano out of /tone or merge /midi into /tone... diff --git a/packages/mini/README.md b/packages/mini/README.md index 2527352f1..3135c286d 100644 --- a/packages/mini/README.md +++ b/packages/mini/README.md @@ -40,5 +40,5 @@ The parser [krill-parser.js] is generated from [krill.pegjs](./krill.pegjs) usin To generate the parser, run ```js -npm run build:parser +npm build:parser ``` diff --git a/packages/osc/README.md b/packages/osc/README.md index e45c91f60..cab6d629d 100644 --- a/packages/osc/README.md +++ b/packages/osc/README.md @@ -34,6 +34,6 @@ Now open the REPL and type: s(" hh").osc() ``` -or just [click here](http://localhost:3000/#cygiPGJkIHNkPiBoaCIpLm9zYygp)... +or just [click here](https://strudel.tidalcycles.org/#cygiPGJkIHNkPiBoaCIpLm9zYygp)... -You can read more about [how to use Superdirt with Strudel the Tutorial](https://strudel.tidalcycles.org/learn/outputs#superdirt-api) +You can read more about [how to use Superdirt with Strudel the Tutorial](https://strudel.tidalcycles.org/learn/input-output/#superdirt-api) From b58f5232c7dfab1ba3b14c13bcb0a60a1c6a6757 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 1 Feb 2023 16:09:50 +0100 Subject: [PATCH 42/52] add nano-repl as workspace --- packages/react/examples/nano-repl/.gitignore | 2 +- .../nano-repl/dist/assets/index.0dabc914.js | 1 - .../nano-repl/dist/assets/index.5b4bbb94.js | 1 - .../nano-repl/dist/assets/index.75f8960b.css | 1 - .../nano-repl/dist/assets/index.bb9bb2c4.js | 8 -- .../nano-repl/dist/assets/index.cc0b04cf.js | 1 - .../nano-repl/dist/assets/index.e7ac54e9.js | 1 - .../nano-repl/dist/assets/index.ec9f9930.js | 124 ------------------ .../nano-repl/dist/assets/index.fbde1114.js | 1 - .../nano-repl/dist/assets/osc.c09823d8.js | 1 - .../nano-repl/dist/assets/serial.b42b098c.js | 1 - .../react/examples/nano-repl/dist/index.html | 14 -- .../react/examples/nano-repl/package.json | 9 +- packages/react/examples/nano-repl/src/App.jsx | 26 ++-- pnpm-lock.yaml | 39 +++++- pnpm-workspace.yaml | 3 +- 16 files changed, 57 insertions(+), 176 deletions(-) delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.0dabc914.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.5b4bbb94.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.75f8960b.css delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.bb9bb2c4.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.cc0b04cf.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.e7ac54e9.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.ec9f9930.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/index.fbde1114.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/osc.c09823d8.js delete mode 100644 packages/react/examples/nano-repl/dist/assets/serial.b42b098c.js delete mode 100644 packages/react/examples/nano-repl/dist/index.html diff --git a/packages/react/examples/nano-repl/.gitignore b/packages/react/examples/nano-repl/.gitignore index d5554a64b..a547bf36d 100644 --- a/packages/react/examples/nano-repl/.gitignore +++ b/packages/react/examples/nano-repl/.gitignore @@ -8,7 +8,7 @@ pnpm-debug.log* lerna-debug.log* node_modules -!dist +dist dist-ssr *.local diff --git a/packages/react/examples/nano-repl/dist/assets/index.0dabc914.js b/packages/react/examples/nano-repl/dist/assets/index.0dabc914.js deleted file mode 100644 index d95eacdaa..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.0dabc914.js +++ /dev/null @@ -1 +0,0 @@ -import{e as D,j as R,l as E,q as O}from"./index.ec9f9930.js";var T={exports:{}};(function(b,N){(function(m,g){b.exports=g()})(self,()=>(()=>{var m={d:(e,t)=>{for(var s in t)m.o(t,s)&&!m.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},g={};function h(e,t){if(this.msg=e,this.ac=t.ac,this.sampleBank=t.sampleBank,this.outputNode=t.destination,this.cutGroups=t.cutGroups,this.eventCounter=t.eventCounter,this.audioOutputs=t.audioOutputs,this.workletsAvailable=t.workletsAvailable,typeof e.buffer=="object")this.bufferContainer=e.buffer;else{if(this.sampleBank==null)return void console.log("WebDirt: there is no sample bank, cancelling event");if(typeof this.sampleBank!="object")return void console.log("WebDirt: buffer not provided by calling application + no WebDirt sample bank");if(this.msg.n=parseInt(this.msg.n),isNaN(this.msg.n)&&(this.msg.n=0),!this.sampleBank.sampleNameExists(this.msg.s))return void console.log("WebDirt: no sample named "+this.msg.s+" exists in sample map");if(!this.sampleBank.getBufferMightSucceed(this.msg.s,this.msg.n))return}if(this.when=this.msg.when,isNaN(this.when))console.log("WebDirt: 'when' is null or not a number");else if(this.nudge=parseFloat(this.msg.nudge),isNaN(this.nudge)||(this.when=this.when+this.nudge),isNaN(parseFloat(this.msg.speed))&&(this.msg.speed=1),this.msg.speed!=0)if(isNaN(parseFloat(this.msg.note))&&(this.msg.note=0),this.msg.speed=this.msg.speed*Math.pow(2,this.msg.note/12),this.msg.begin=w(this.msg.begin,0),this.msg.end=w(this.msg.end,1),this.msg.end!=this.msg.begin){if(this.msg.begin>this.msg.end&&(this.msg.speed=-1*this.msg.speed),this.msg.speed<0&&(this.msg.begin=1-this.msg.begin,this.msg.end=1-this.msg.end),this.msg.begin>this.msg.end){let W=this.msg.begin;this.msg.begin=this.msg.end,this.msg.end=W}var s;if(this.source=s=this.ac.createBufferSource(),this.source.onended=this.disconnectHandler(),this.disconnectOnEnd(this.source),this.source.playbackRate.value=Math.abs(this.msg.speed),this.prepareBuffer(),this.buffer!=null)this.source.buffer=this.buffer,this.start();else{var a=this,n=1e3*(this.msg.when-this.ac.currentTime-.2);n<=0&&(n=1e3*(this.msg.when-this.ac.currentTime-.2)),n>0&&setTimeout(function(){a.prepareBuffer(),a.buffer!=null?(a.source.buffer=a.buffer,a.start()):(console.log("WebDirt: unable to access sample "+e.s+":"+e.n+" on second attempt"),a.stopAll())},n)}this.cut(this.msg.cut,this.msg.s),s=this.shape(s,this.msg.shape),s=this.lowPassFilter(s,this.msg.cutoff,this.msg.resonance),s=this.highPassFilter(s,this.msg.hcutoff,this.msg.hresonance),s=this.bandPassFilter(s,this.msg.bandf,this.msg.bandq),s=this.vowel(s,this.msg.vowel),s=this.delay(s,this.msg.delay,this.msg.delaytime,this.msg.delayfeedback),s=this.loop(s,this.msg.loop,this.msg.begin,this.msg.end,this.msg.speed),s=this.crush(s,this.msg.crush),s=this.coarse(s,this.msg.coarse),this.unit(this.msg.unit,this.msg.speed);var i=parseFloat(this.msg.gain);isNaN(i)&&(i=1),i>2&&(i=2),i<0&&(i=0);var o=parseFloat(this.msg.overgain);isNaN(o)||(i+=o),i=Math.pow(i,4);var r,c,l,u=parseFloat(e.pan);if(isNaN(u)&&(u=.5),this.audioOutputs==2)(u>1||u<0)&&(u-=Math.floor(u)),r=u,c=0,l=1;else{var A=(u-=Math.floor(u))*this.audioOutputs;(l=(c=Math.floor(A))+1)>=this.audioOutputs&&(l=0),r=A-Math.floor(A)}var v=this.ac.createGain();this.disconnectOnEnd(v);var S=this.ac.createGain();this.disconnectOnEnd(S),v.gain.value=Math.cos(r*Math.PI/2)*i,S.gain.value=Math.sin(r*Math.PI/2)*i,s.connect(v),s.connect(S),this.gain1=v,this.gain2=S;var k=this.ac.createChannelMerger(this.audioOutputs);this.disconnectOnEnd(k),v.connect(k,0,c),S.connect(k,0,l),k.connect(this.outputNode)}else this.stopAll()}function w(e,t){let s=parseFloat(e);return isNaN(s)?t:s>1?1:s<0?0:s}m.r(g),m.d(g,{WebDirt:()=>f}),h.prototype.prepareBuffer=function(){typeof this.bufferContainer=="object"?typeof this.bufferContainer.buffer=="object"&&(this.msg.speed>=0?this.buffer=this.bufferContainer.buffer:(typeof this.bufferContainer.reverseBuffer=="object"||(this.bufferContainer.reverseBuffer=this.reverseBuffer(this.ac,this.bufferContainer.buffer)),this.buffer=this.bufferContainer.reverseBuffer)):(this.msg.speed>=0?this.buffer=this.sampleBank.getBuffer(this.msg.s,this.msg.n):this.buffer=this.sampleBank.getReverseBuffer(this.msg.s,this.msg.n),this.buffer=this.accel(this.buffer,this.msg.accelerate,this.msg.speed))},h.prototype.disconnectOnEnd=function(e){this.source.disconnectQueue==null&&(this.source.disconnectQueue=new Array),this.source.disconnectQueue.unshift(e)},h.prototype.start=function(){let e=Math.abs(this.msg.speed),t=(this.msg.end-this.msg.begin)*this.source.buffer.duration/e,s=this.msg.begin*this.source.buffer.duration;this.source.start(this.when,s,t)},h.prototype.stopAll=function(){if(this.source!=null&&this.source.disconnectQueue!=null){for(var e=0;e1&&this.workletsAvailable){var s=new AudioWorkletNode(this.ac,"coarse-processor");return s.parameters.get("coarse").value=t,e.connect(s),this.disconnectOnEnd(s),s}return e},h.prototype.crush=function(e,t){if(t=parseInt(t),isNaN(t)&&(t=null),t!=null&&t>0&&this.workletsAvailable){var s=new AudioWorkletNode(this.ac,"crush-processor");return s.parameters.get("crush").value=t,e.connect(s),this.disconnectOnEnd(s),s}return e},h.prototype.cut=function(e,t){if(e=parseInt(e),!isNaN(e)&&e!=0){for(var s={cutGroup:e,node:this,sampleName:t},a=0;a2e4&&(t=2e4),isNaN(parseFloat(s))&&(s=0),s<0&&(s=0),s>1&&(s=1),s=1/(s=1-.999*(s*=s));var a=this.ac.createBiquadFilter();return this.disconnectOnEnd(a),a.type="highpass",a.frequency.value=t,a.Q.value=s,e.connect(a),a},h.prototype.lowPassFilter=function(e,t,s){if(isNaN(parseFloat(t))&&isNaN(parseFloat(s)))return e;isNaN(parseFloat(t))&&(t=440),t<20&&(t=20),t>2e4&&(t=2e4),isNaN(parseFloat(s))&&(s=0),s<0&&(s=0),s>1&&(s=1),s=1/(s=1-.999*(s*=s));var a=this.ac.createBiquadFilter();return this.disconnectOnEnd(a),a.type="lowpass",a.frequency.value=t,a.Q.value=s,e.connect(a),a},h.prototype.bandPassFilter=function(e,t,s){if(isNaN(parseFloat(t))&&isNaN(parseFloat(s)))return e;isNaN(parseFloat(t))&&(t=440),t<20&&(t=20),t>2e4&&(t=2e4),isNaN(parseFloat(s))&&(s=10),s<1&&(s=1),s>100&&(s=100);var a=this.ac.createBiquadFilter();return this.disconnectOnEnd(a),a.type="bandpass",a.frequency.value=t,a.Q.value=s,a.gain.value=s,e.connect(a),a},h.prototype.loop=function(e,t){if(isNaN(parseInt(t))||t==0)return e;try{var s=this.source.buffer.duration-this.msg.begin*this.source.buffer.duration-(1-this.msg.end)*this.source.buffer.duration;return this.source.loop=!0,this.source.loopStart=this.msg.begin*this.source.buffer.duration,this.source.loopEnd=this.msg.end*this.source.buffer.duration,this.source.stop(this.when+s*t/this.source.playbackRate.value),e}catch{return console.log("WebDirt Warning: buffer data not yet available to calculate loop time - no looping applied"),e}},h.prototype.accelerate=function(e,t){if(t=Math.abs(t),isNaN(parseFloat(e))&&(e=0),e!=0){e=parseFloat(e),this.source.playbackRate.setValueAtTime(t,this.when);var s=Math.abs((this.source.buffer.length*e/this.ac.sampleRate+t)/t),a=t+this.source.buffer.length*e/this.ac.sampleRate;if(a<0)this.source.buffer=this.negativeAccelerateBuffer(this.source.buffer,e,t),this.source.playbackRate.linearRampToValueAtTime(0,this.when+s),this.source.playbackRate.linearRampToValueAtTime(1,this.when+this.source.buffer.duration);else try{this.source.playbackRate.linearRampToValueAtTime(a,this.when+this.source.buffer.duration)}catch{console.log("WebDirt: Warning, buffer data not loaded, could not apply acclerate effect")}}},h.prototype.negativeAccelerateBuffer=function(e,t,s){var a=e.length,n=new Float32Array(a),i=this.ac.createBuffer(e.numberOfChannels,e.length,this.ac.sampleRate),o=new Float32Array(a),r=Math.abs(s/(s-t))*a;r=a*Math.abs((this.source.buffer.length*t/this.ac.sampleRate+s)/s)/this.source.buffer.duration,r=Math.trunc(r);for(var c=0;c=1&&(t=.999),t>0&&this.workletsAvailable){var s=new AudioWorkletNode(this.ac,"shape-processor");return s.parameters.get("shape").value=t,e.connect(s),this.disconnectOnEnd(s),s}return e},h.prototype.stop=function(e){this.gain1.gain.setValueAtTime(this.gain1.gain.value,e),this.gain1.gain.linearRampToValueAtTime(0,e+.02),this.gain2.gain.setValueAtTime(this.gain1.gain.value,e),this.gain2.gain.linearRampToValueAtTime(0,e+.02)},h.prototype.unit=function(e,t){e=="c"&&(this.source.playbackRate.value=this.source.playbackRate.value*this.source.buffer.duration)},h.prototype.vowel=function(e,t){if(typeof t!="string")return e;if((t=t.toLowerCase())=="a"||t=="e"||t=="i"||t=="o"||t=="u"){var s,a,n,i=this.ac.createGain();switch(this.disconnectOnEnd(i),t){case"a":s=p.a.freqs,a=p.a.qs,n=p.a.amps;break;case"e":s=p.e.freqs,a=p.e.qs,n=p.e.amps;break;case"i":s=p.i.freqs,a=p.i.qs,n=p.i.amps;break;case"o":s=p.o.freqs,a=p.o.qs,n=p.o.amps;break;case"u":s=p.u.freqs,a=p.u.qs,n=p.u.amps}for(var o=0;o<5;o++){var r=this.ac.createGain();this.disconnectOnEnd(r),r.gain.value=n[o];var c=this.ac.createBiquadFilter();this.disconnectOnEnd(c),c.type="bandpass",c.Q.value=a[o]/8,c.frequency.value=s[o],e.connect(c),c.connect(r),r.connect(i)}return i.gain.value=8,i}return e},h.prototype.reverseBuffer=function(e,t){for(var s=t.length,a=new Float32Array(s),n=e.createBuffer(t.numberOfChannels,t.length,e.sampleRate),i=new Float32Array(s),o=0;o{console.log("WebDirt: audio worklets added"),this.workletsAvailable=!0}).catch(t=>{console.log("WebDirt: error loading AudioWorklets.js: "+t),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1}):(console.log("WebDirt: browser does not support audio worklets"),console.log("(WebDirt should still work but shape, coarse, and crush will have no effect)"),this.workletsAvailable=!1),this.tempo={time:this.ac.currentTime,beats:0,bpm:30},this.clockDiff=Date.now()/1e3-this.ac.currentTime,this.sampleBank!=null&&(this.sampleBank.ac=this.ac),this.silentNote=this.ac.createOscillator(),this.silentNote.type="sine",this.silentNote.frequency.value=440,this.silentGain=this.ac.createGain(),this.silentGain.gain.value=0,this.silentNote.connect(this.silentGain),this.silentGain.connect(this.ac.destination),this.silentNote.start();var e=this;setTimeout(function(){e.silentGain.disconnect(e.ac.destination),e.silentNote.disconnect(e.silentGain),e.silentNote.stop(),e.silentGain=null,e.silentNote=null},500)}console.log("WebDirt: initializeWebAudio finished.")},f.prototype.playSample=function(e,t){if(t==null&&(t=this.latency),e.whenPosix!=null&&(e.when=e.whenPosix-(new Date().getTime()/1e3-this.ac.currentTime)),e.when==null&&(e.when=this.ac.currentTime),e.when=e.when+t,typeof e.maxLateness!="number"&&(e.maxLateness=this.maxLateness),this.ac.currentTime-e.when>e.maxLateness)return void console.log("WebDirt warning: dropping msg late by "+(this.ac.currentTime-e.when)+" seconds");let s=new h(e,this);return this.eventCounter++,s},f.prototype.playScore=function(e,t,s){this.initializeWebAudio(),t==null&&(t=this.latency);for(var a=this.ac.currentTime,n=0,i=0;in&&(n=o.when),o.when=o.when+a,o.s!=null&&(o.sample_name=o.s),o.n!=null&&(o.sample_n=o.n),this.playSample(o,t)}setTimeout(function(){typeof s=="function"&&s()},1e3*(n+t))},f.prototype.playScoreWhenReady=function(e,t,s,a){this.initializeWebAudio(),t==null&&(t=this.latency);for(var n=e.length,i=0;i{const N=async(m,g,h)=>{if(!y)throw new Error("WebDirt not initialized!");const w=m-h,{s:p,n:d=0,...f}=g.value||{};p||console.warn('Pattern.webdirt: no "s" was set!');const e=O();if(!(e!=null&&e[p])){y.playSample({s:p,n:d,...f},w);return}if(!(e!=null&&e[p]))console.warn(`Pattern.webdirt: sample "${p}" not found in loaded samples`,e);else{const t=e[p],s=t[d%t.length],a=R(s);if(!a)console.log(`Pattern.webdirt: load ${p}:${d} from ${s}`),E(s,y.ac);else{const n={buffer:{buffer:a},...f};y.playSample(n,w)}}};return b.setContext({...b.context,onTrigger:N})})};export{F as loadWebDirt}; diff --git a/packages/react/examples/nano-repl/dist/assets/index.5b4bbb94.js b/packages/react/examples/nano-repl/dist/assets/index.5b4bbb94.js deleted file mode 100644 index dea97fdc6..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.5b4bbb94.js +++ /dev/null @@ -1 +0,0 @@ -import{P as o,m as p}from"./index.ec9f9930.js";function m(i){if(!/^[1-9]+[0-9]*edo$/.test(i))throw new Error('not an edo scale: "'+i+'"');const[n,e]=i.match(/^([1-9]+[0-9]*)edo$/);return Array.from({length:e},(r,s)=>Math.pow(2,s/e))}const d={"12ji":[1/1,16/15,9/8,6/5,5/4,4/3,45/32,3/2,8/5,5/3,16/9,15/8]};function f(i,n){return n.map(e=>e*i)}const l=220;function h(i,n){if(typeof i=="string")if(/^[1-9]+[0-9]*edo$/.test(i))i=m(i);else if(d[i])i=d[i];else throw new Error('unknown scale name: "'+i+'"');return i=f(l,i),n?i.filter((e,r)=>n.includes(r)):i}function u(i,n,e=0){const r=p(e+n,i.length),s=Math.floor(n/i.length);return i[r]*Math.pow(2,s)}o.prototype._xen=function(i,n){return this._asNumber()._withHap(e=>{const r=h(i);n=n||r.length;const s=u(r,e.value);return e.withValue(()=>s).setContext({...e.context,type:"frequency"})})};o.prototype.tuning=function(i){return this._asNumber()._withHap(n=>{const e=u(i,n.value);return n.withValue(()=>e).setContext({...n.context,type:"frequency"})})};o.prototype.define("xen",(i,n)=>n.xen(i),{composable:!0,patternified:!0});function t(){this.scale=[],this.mode={output:"frequency",input:"step"},this.etmajor=[261.62558,293.664764,329.627563,349.228241,391.995422,440,493.883301,523.25116],this.tonic=440}t.prototype.tonicize=function(i){this.tonic=i};t.prototype.note=function(i,n){var e;return this.mode.output=="frequency"?e=this.frequency(i,n):this.mode.output=="ratio"?e=this.ratio(i,n):this.mode.output=="MIDI"?e=this.MIDI(i,n):e=this.frequency(i,n),e};t.prototype.frequency=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);for(var r=i%this.scale.length;r<0;)r+=this.scale.length;var s=this.tonic*this.scale[r];return s=s*Math.pow(2,e),s=Math.floor(s*1e11)/1e11,s};t.prototype.ratio=function(i,n){(this.mode.input=="midi"||this.mode.input=="MIDI")&&(this.stepIn+=60);var e=Math.floor(i/this.scale.length);n&&(e+=n);var r=i%this.scale.length,s=Math.pow(2,e)*this.scale[r];return s=Math.floor(s*1e11)/1e11,s};t.prototype.MIDI=function(i,n){var e=this.frequency(i,n),r=69+12*Math.log(e/440)/Math.log(2);return r=Math.floor(r*1e9)/1e9,r};t.prototype.loadScale=function(i){var n=a[i].frequencies;this.scale=[];for(var e=0;e[1, 1, -1]->[0, 1, -1]->[0, 0, -1]->[0, 0, 0]->[0, -1, 0],[0, -1, 1]->[0, -2, 1]->[-1, -2, 1]"},breedt1:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,326.6631048533,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Graham Breed's 1/4 P temperament, TL 10-06-99"},breedt2:{frequencies:[261.6255653006,276.37000081643,293.53214922797,310.91625060765,328.43856194079,349.78078158391,368.4933346061,392.4383479509,414.55500101742,439.10654054756,466.37437567834,492.65784266492,523.2511306012],description:"Graham Breed's 1/5 P temperament, TL 10-06-99"},breedt3:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,350.01785633742,368.74309237173,392.4383479509,414.83597850347,438.51190905657,466.69047534984,491.65745674141,523.2511306012],description:"Graham Breed's other 1/4 P temperament, TL 10-06-99"},brown:{frequencies:[261.6255653006,272.52663052146,275.62199471997,275.93321340298,279.38237857051,287.10624449997,290.69507255622,291.02331101095,294.32876096318,306.24666079997,306.59245933664,310.07474405997,310.42486507835,322.99452506247,327.03195662575,331.11985608357,344.52749339997,344.91651675372,348.83408706747,349.22797321314,363.36884069528,367.49599295996,367.91095120397,372.50983809402,382.80832599996,387.59343007496,388.03108134794,392.4383479509,408.78994578219,413.43299207996,413.89982010446,430.65936674996,436.04260883433,436.53496651643,441.49314144476,459.36999119996,459.88868900496,465.11211608996,465.63729761752,484.4917875937,489.99465727995,490.54793493862,496.67978412536,516.79124009995,517.37477513058,523.2511306012],description:"Tuning of Colin Brown's Voice Harmonium, Glasgow. Helmholtz/Ellis p. 470-473"},bruder:{frequencies:[261.6255653006,276.38325105256,293.66476791741,310.22971009486,327.53979283172,349.02656754477,368.60786575306,391.65594491223,414.34624765043,439.23819834286,465.62553897253,491.60634075178,523.2511306012],description:"Ignaz Bruder organ temperament (1829) according to P. Vier"},burma3:{frequencies:[261.6255653006,287.71029735626,317.68827763215,350.39147881787,389.32370520689,429.81331927092,476.14308821464,523.2511306012],description:"Burmese scale, von Hornbostel"},"burt-forks":{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Warren Burt 19-tone Forks. Interval 5(3): pp. 13+23 Winter 1986-87"},burt1:{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,415.52295665389,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"W. Burt's 13diatsub #1"},burt10:{frequencies:[261.6255653006,265.11390617127,268.69652652494,272.3773008609,276.16031892841,355.06326719367,368.21375857121,382.37582620857,386.08821287079,389.87339142835,393.73352401674,397.67085925691,523.2511306012],description:"W. Burt's 19enhsub #10"},burt11:{frequencies:[261.6255653006,344.24416486921,347.6866065179,351.12904816659,354.57148981529,358.01393146398,371.78369805875,385.55346465352,495.71159741166,502.59648070905,509.48136400643,516.36624730382,523.2511306012],description:"W. Burt's 19enhharm #11"},burt12:{frequencies:[261.6255653006,302.93486508491,316.70463167967,330.47439827444,344.24416486921,358.01393146398,371.78369805875,385.55346465352,440.63253103259,468.17206422213,495.71159741166,509.48136400643,523.2511306012],description:"W. Burt's 19diatharm #12"},burt13:{frequencies:[261.6255653006,273.51763645063,286.54228580542,293.53112204458,300.86940009569,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,523.2511306012],description:"W. Burt's 23diatsub #13"},burt14:{frequencies:[261.6255653006,264.50057151269,267.43946675172,270.4444045804,273.51763645063,334.29933343966,353.96400011258,376.08675011961,382.05638107389,388.21858076863,394.58281979763,401.15920012759,523.2511306012],description:"W. Burt's 23enhsub #14"},burt15:{frequencies:[261.6255653006,341.25073734861,346.93824963775,352.6257619269,358.31327421604,364.00078650518,386.75083566176,409.50088481833,500.50108144463,506.18859373377,511.87610602291,517.56361831206,523.2511306012],description:"W. Burt's 23enhharm #15"},burt16:{frequencies:[261.6255653006,295.75063903546,307.12566361375,318.50068819203,341.25073734861,364.00078650518,386.75083566176,409.50088481833,455.00098313148,466.37600770977,477.75103228805,500.50108144463,523.2511306012],description:"W. Burt's 23diatharm #16"},burt17:{frequencies:[261.6255653006,262.27760655527,262.77528702311,280.51080915002,281.04308772525,281.33584094163,286.12102533302,286.66394947976,306.91182648178,308.56189006502,309.14739649778,336.61297098002,337.2517052703,337.60300912996,338.42271813583,339.41807907152,363.01398831179,369.18841978454,370.27426807802,396.01525997649,398.14437427744,399.31538714296,403.93556517602,406.10726176299,434.33931739357,434.79175418253,435.61678597414,437.95881170519,475.21831197179,476.86837555503,477.77324913293,478.27092960078,479.17846457156,521.20718087229,521.75010501903,522.74014316897,523.2511306012],description:`W. Burt's "2 out of 3,5,11,17,31 dekany" CPS with 1/1=3/1. 1/1 vol. 10(1) '98`},burt18:{frequencies:[261.6255653006,268.26840191956,269.80136421624,270.50397193556,275.42222597075,281.04308772525,286.15296204753,295.09524211152,300.46061014991,306.59245933664,309.14739649778,314.76825825228,321.92208230347,324.60476632267,337.2517052703,343.38355445704,344.27778246344,354.11429053382,357.69120255941,367.91095120397,370.97687579734,375.57576268738,393.46032281536,404.70204632437,413.13333895612,421.56463158788,429.2294430713,432.80635509689,449.66894036041,463.72109474667,472.15238737843,490.54793493862,491.82540351919,500.76768358318,505.87755790546,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 1,3,5,7,11 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt19:{frequencies:[261.6255653006,268.26840191956,286.15296204753,294.32876096318,300.46061014991,306.59245933664,321.92208230347,327.03195662575,343.38355445704,357.69120255941,367.91095120397,375.57576268738,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:`W. Burt's "2 out of 2,3,4,5,7 dekany" CPS with 1/1=1/1. 1/1 vol. 10(1) '98`},burt2:{frequencies:[261.6255653006,264.16561933264,266.75547834571,269.39662169567,272.09058791262,340.11323489078,344.41846571218,348.83408706747,353.36439988652,358.01393146398,412.25846653428,485.87604984397,523.2511306012],description:"W. Burt's 13enhsub #2"},burt20:{frequencies:[261.6255653006,269.10058145205,279.06726965397,279.38237857051,294.32876096318,298.00787047521,330.74639366397,335.25885428462,367.91095120397,376.74081403286,412.06026534844,418.60090448096,523.2511306012],description:'Warren Burt tuning for "Commas" (1993) 1/1=263. XH 16'},burt3:{frequencies:[261.6255653006,281.75060878526,332.06321749692,382.37582620857,387.40708707973,392.4383479509,397.46960882207,402.50086969323,503.12608711654,508.1573479877,513.18860885887,518.21986973003,523.2511306012],description:"W. Burt's 13enhharm #3"},burt4:{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,342.12573923925,362.25078272391,382.37582620857,402.50086969323,442.75095666255,462.87600014722,483.00104363188,503.12608711654,523.2511306012],description:"W. Burt's 13diatharm #4, see his post 3/30/94 in Tuning Digest #57"},burt5:{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,277.97716313189,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"W. Burt's 17diatsub #5"},burt6:{frequencies:[261.6255653006,265.53042448419,269.55361273395,273.7005913914,277.97716313189,370.63621750918,386.75083566176,404.33041910093,408.97789518255,413.73345210327,418.60090448096,423.58424858192,523.2511306012],description:"W. Burt's 17enhsub #6"},burt7:{frequencies:[261.6255653006,323.18452184192,327.03195662575,330.87939140958,334.72682619341,338.57426097725,353.96400011258,369.35373924791,492.47165233054,500.16652189821,507.86139146587,515.55626103354,523.2511306012],description:"W. Burt's 17enhharm #7"},burt8:{frequencies:[261.6255653006,277.01530443593,292.40504357126,307.79478270659,323.18452184192,338.57426097725,353.96400011258,369.35373924791,400.13321751856,430.91269578922,461.69217405988,492.47165233054,523.2511306012],description:"W. Burt's 17diatharm #8"},burt9:{frequencies:[261.6255653006,268.69652652494,276.16031892841,292.40504357126,310.68035879446,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"W. Burt's 19diatsub #9"},burt_fibo:{frequencies:[261.6255653006,277.97716313189,294.32876096318,311.70233365892,327.03195662575,343.38355445704,363.82305174615,385.28452389971,392.4383479509,425.14154361347,449.66894036041,476.24028683625,523.2511306012],description:'Warren Burt, 3/2+5/3+8/5+etc. "Recurrent Sequences", 2002'},burt_fibo23:{frequencies:[261.6255653006,267.05480676802,277.97716313189,282.81557538079,294.32876096318,299.5065008038,311.70233365892,327.03195662575,330.09788121912,343.38355445704,349.5792770728,363.82305174615,370.21039464899,385.28452389971,392.4383479509,408.02346463385,425.14154361347,432.10374737758,449.66894036041,457.60521391719,476.24028683625,484.61169812829,504.34459560877,523.2511306012],description:'Warren Burt, 23-tone Fibonacci scale. "Recurrent Sequences", 2002'},burt_primes:{frequencies:[261.6255653006,267.75741448733,273.88926367407,277.97716313189,280.0211128608,284.10901231862,290.24086150535,298.416660421,302.50455987882,304.54850960773,308.63640906555,310.68035879446,320.90010743902,322.94405716793,327.03195662575,333.16380581248,335.20775554139,339.29565499922,341.33960472813,351.55935337268,353.60330310159,359.73515228832,363.82305174615,365.86700147506,369.95490093288,376.08675011961,384.26254903526,390.39439822199,392.4383479509,394.48229767981,396.52624740872,402.65809659545,406.74599605328,412.87784524001,421.05364415565,425.14154361347,431.27339280021,433.31734252912,437.40524198694,445.58104090258,455.80078954714,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,519.16323114338,523.2511306012],description:'Warren Burt, primes until 251. "Some Numbers", Dec. 2002'},bushmen:{frequencies:[261.6255653006,347.0163224393,394.26624244126,453.9405988926,523.2511306012],description:"Observed scale of South-African bushmen, almost (4 notes) equal pentatonic"},dan_semantic:{frequencies:[261.6255653006,272.52663052146,275.62199471997,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,397.34382730029,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:'The Semantic Scale, from Alain Dani\xEF\xBF\xBDlou: "S\xEF\xBF\xBDmantique Musicale" (1967)'},danielou5_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.62199471997,279.06726965397,282.55561052465,285.76488412567,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division in 5-limit, symmetrized"},danielou_53:{frequencies:[261.6255653006,264.89588486686,267.43946675172,272.52663052146,275.62199471997,279.06726965397,282.55561052465,287.78812183066,290.69507255622,294.32876096318,297.67175429757,301.87565226992,306.59245933664,310.07474405997,313.95067836072,318.93402246168,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,479.64686971777,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"Dani\xEF\xBF\xBDlou's Harmonic Division of the Octave, see p. 153"},darreg:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"This set of 19 ratios in 5-limit JI is for his megalyra family"},darreg_ennea:{frequencies:[261.6255653006,269.29177952703,277.18263097687,293.66476791741,349.22823143301,391.99543598175,403.48177901006,415.30469757995,440,523.2511306012],description:"Ivor Darreg's Mixed Enneatonic, a mixture of chromatic and enharmonic"},darreg_genus:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,523.2511306012],description:"Ivor Darreg's Mixed JI Genus (Archytas Enh, Ptolemy Soft Chrom, Didymos Chrom"},darreg_genus2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,348.83408706747,392.4383479509,406.97310157871,418.60090448096,441.49314144476,523.2511306012],description:"Darreg's Mixed JI Genus 2 (Archytas Enharmonic and Chromatic Genera)"},david11:{frequencies:[261.6255653006,269.80136421624,274.70684356563,285.40970760065,294.32876096318,305.22982618403,314.76825825228,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,374.60024122586,392.4383479509,406.97310157871,419.69101100305,428.11456140098,441.49314144476,457.84473927605,479.64686971777,490.54793493862,499.46698830115,523.2511306012],description:"11-limit system from Gary David, 1967"},david7:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,488.36772189445,523.2511306012],description:"Gary David's Constant Structure, 1967. A mode of Fokker's 7-limit scale"},ddimlim1:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"First 27/25&2048/1875 scale"},de_caus:{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"De Caus (a mode of Ellis's duodene) (1615)"},degung1:{frequencies:[261.6255653006,286.1303811777,319.28416942365,390.63652710512,420.90734643474,523.2511306012],description:"Gamelan Degung, Kabupaten Sukabumi. 1/1=363 Hz"},degung2:{frequencies:[261.6255653006,276.67939184371,325.99375993805,390.36201910543,415.27879033283,523.2511306012],description:"Gamelan Degung, Kabupaten Bandung. 1/1=252 Hz"},degung3:{frequencies:[261.6255653006,282.83850205216,320.55017368416,393.28023705203,426.95140008307,523.2511306012],description:"Gamelan Degung, Kabupaten Sumedang. 1/1=388.5 Hz"},degung4:{frequencies:[261.6255653006,284.6485709981,319.18312009646,379.88037698982,415.46137490477,523.2511306012],description:"Gamelan Degung, Kasepuhan Cheribon. 1/1=250 Hz"},degung5:{frequencies:[261.6255653006,284.24274449773,317.86283634652,388.77066331187,430.33748813761,523.2511306012],description:"Gamelan Degung, Kanoman Cheribon. 1/1=428 Hz"},degung6:{frequencies:[261.6255653006,273.29426590363,298.47415715355,379.54129348313,409.02013274169,523.2511306012],description:"Gamelan Degung, Kacherbonan Cheribon. 1/1=426 Hz"},dekany:{frequencies:[261.6255653006,299.7792935736,305.22982618403,327.03195662575,359.73515228832,381.53728273004,419.69101100305,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"2)5 Dekany 1.3.5.7.11 (1.3 tonic)"},dekany2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,348.83408706747,358.80077526939,398.6675280771,418.60090448096,448.50096908674,465.11211608996,523.2511306012],description:"3)5 Dekany 1.3.5.7.9 (1.3.5.7.9 tonic)"},dekany3:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"2)5 Dekany 1.3.5.7.9 and 3)5 Dekany 1 1/3 1/5 1/7 1/9"},dekany4:{frequencies:[261.6255653006,270.96933548991,288.48890459486,310.68035879446,321.77608589426,355.06326719367,425.14154361347,440.3251701711,474.19633710734,485.87604984397,523.2511306012],description:"2)5 Dekany 1.7.13.19.29 (1.7 tonic)"},dekany_union:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,381.53728273004,392.4383479509,412.06026534844,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Union of 2)5 and 3)5 [ 1 3 5 7 9] dekanies"},dent:{frequencies:[261.6255653006,276.73939277812,293.41671964988,311.13637945111,328.33487278761,349.18153137729,368.9858570375,391.91718148616,414.84850593482,438.82216331296,465.92281947955,491.98114271667,523.2511306012],description:"Tom Dent, well temperament with A=421 Hz. Integer Hz beat rates from A"},dent2:{frequencies:[261.6255653006,276.57667301797,293.18838124587,310.79781949647,328.55897053596,349.10502918563,369.05532299592,391.67735584266,414.54302837239,438.92977277749,465.83490899549,492.45596147139,523.2511306012],description:"Tom Dent, well-temperament, 2/32 and 5/32 comma. TL 3 & 5-9-2005"},dent3:{frequencies:[261.6255653006,276.38325105256,293.15632631094,310.94732162256,328.48713220126,349.22823143301,368.7143392539,391.76907592069,414.58565256441,438.73106346722,466.16376151809,492.17459484008,523.2511306012],description:'Tom Dent, Bach harpsichord "sine wave" temperament, TL 10-10-2005'},deporcy:{frequencies:[261.6255653006,272.52663052146,286.15296204753,299.00064605783,313.95067836072,327.03195662575,348.83408706747,358.80077526939,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,478.40103369253,502.32108537715,523.2511306012],description:"A 15-note chord-based detempering of 7-limit porcupine"},diab19_612:{frequencies:[261.6255653006,267.01398215014,280.33982809972,299.03492334906,305.19382000629,313.95883772326,320.42510414137,327.02455105776,348.83292260574,366.24210002542,373.7851897098,392.43965797471,418.61038382265,427.23204601759,436.03127668087,448.5538823653,457.79225819026,488.32116993744,512.69177642068,523.2511306012],description:"diab19a in 612-tET"},diab19_72:{frequencies:[261.6255653006,266.71173418545,279.86396690685,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,349.22823143301,366.44956000397,373.57357677338,391.99543598175,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,489.15147723638,513.27277840175,523.2511306012],description:"diab19a in 72-tET"},diablack:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,331.11985608357,372.08969287196,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Unique 256/245&2048/2025 Fokker block"},diachrome1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"First 25/24&2048/2025 scale"},diacycle13:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,360.86284869048,373.75080757229,387.59343007496,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"Diacycle on 20/13, 13/10; there are also nodes at 3/2, 4/3; 13/9, 18/13"},diaddim1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,334.88072358477,344.91651675372,357.20610515709,367.91095120397,392.4383479509,418.60090448096,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 2048/2025&2048/1875 scale"},dialim1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,353.19451315581,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"First 27/25&2048/2025 scale"},diamisty:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,436.53496651643,470.39487098876,496.11959049595,523.2511306012],description:"Diamisty scale 2048/2025 and 67108864/66430125"},diamond11a:{frequencies:[261.6255653006,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,523.2511306012],description:"11-limit Diamond with added 16/15 & 15/8, Zoomoozophone tuning: 1/1 = 392 Hz"},diamond11ak:{frequencies:[261.6255653006,279.72330032405,285.63317938628,287.78812183066,290.69507255622,293.86839138568,299.07491977616,305.39295512204,314.19649759716,319.76457981184,326.52043447049,333.41680553884,335.93301933283,349.10721912206,359.17247822875,366.75848641051,373.2589099097,381.14243472333,392.13131479202,407.50942884268,410.58480125643,419.25667855894,428.11456140098,435.70146034294,448.26139746089,457.73103588952,465.84075338014,470.92601754108,475.68284600109,479.27160679251,489.39746055879,523.2511306012],description:"microtempered version of diamond11a, Dave Keenan TL 11-1-2000, 225/224&385/384"},diamond11at:{frequencies:[261.6255653006,279.83704120119,285.33574350137,287.98268367985,290.84948650387,293.82121114493,299.2738827313,305.22380787491,314.19079532693,320.23980272009,326.48518221507,332.71524733285,336.02719554531,349.1122100506,359.53680125564,366.52331521885,373.4984028396,380.75621844446,392.12570885984,407.39521875769,411.45055399509,419.30194782174,427.47925671618,435.70936791853,448.50981249085,457.42672761267,465.91555560021,470.67599975252,475.36147343465,479.7712027167,489.19854301666,523.2511306012],description:"microtempered version of diamond11a, OdC"},diamond11map:{frequencies:[195.99771799087,228.66400432268,261.33029065449,293.99657698631,326.66286331812,359.32914964993,391.99543598174,457.32800864536,522.66058130899,587.99315397261,653.32572663623,718.65829929986,213.81569235368,249.45164107929,285.0875898049,320.72353853051,356.35948725613,391.99543598174,427.63138470735,498.90328215858,570.1751796098,641.44707706103,712.71897451225,783.99087196348,235.19726158904,274.39680518722,313.59634878539,352.79589238357,391.99543598174,431.19497957991,470.39452317809,548.79361037444,627.19269757078,705.59178476713,783.99087196348,862.38995915983,261.33029065449,304.88533909691,348.44038753932,391.99543598174,435.55048442416,479.10553286657,522.66058130899,609.77067819382,696.88077507865,783.99087196348,871.10096884831,958.21106573314,293.99657698631,342.99600648402,391.99543598174,440.99486547946,489.99429497718,538.99372447489,587.99315397261,685.99201296804,783.99087196348,881.98973095892,979.98858995435,1077.98744894978,335.99608798435,391.99543598174,447.99478397913,503.99413197652,559.99347997391,615.99282797131,671.9921759687,783.99087196348,895.98956795826,1007.98826395305,1119.98695994783,1231.98565594261,783.99087196348],description:"11-limit diamond on a 'centreless' map"},diamond15:{frequencies:[261.6255653006,269.80136421624,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,310.07474405997,313.95067836072,318.85615771011,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,343.38355445704,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,367.91095120397,372.08969287196,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,398.6675280771,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,429.33426100611,436.04260883433,441.49314144476,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,507.3950357345,523.2511306012],description:"15-limit Diamond + 2nd ratios. See Novaro, 1927, Sistema Natural..."},diamond17:{frequencies:[261.6255653006,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,523.2511306012],description:"17-limit Diamond"},diamond17a:{frequencies:[261.6255653006,277.01530443593,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,494.18162334558,523.2511306012],description:"17-limit, +9 Diamond"},diamond19:{frequencies:[261.6255653006,275.39533189537,277.97716313189,281.75060878526,283.42769574232,285.40970760065,287.78812183066,292.40504357126,299.00064605783,302.93486508491,305.22982618403,307.79478270659,309.19384990071,310.68035879446,313.95067836072,317.68818643644,322.00069575458,327.03195662575,330.47439827444,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,355.06326719367,358.01393146398,359.73515228832,366.27579142084,369.35373924791,370.63621750918,373.75080757229,380.54627680087,382.37582620857,385.55346465352,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,414.24047839262,418.60090448096,425.14154361347,430.91269578922,436.04260883433,440.63253103259,442.75095666255,444.76346101102,448.50096908674,451.89870370104,457.84473927605,468.17206422213,475.68284600109,479.64686971777,483.00104363188,485.87604984397,492.47165233054,497.08857407114,523.2511306012],description:"19-limit Diamond"},diamond7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"7-limit Diamond, also double-tie circular mirroring of 4:5:6:7"},diamond9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"9-limit Diamond"},diamond_chess:{frequencies:[261.6255653006,299.00064605783,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,457.84473927605,523.2511306012],description:"9-limit chessboard pattern diamond. OdC"},diamond_chess11:{frequencies:[261.6255653006,287.78812183066,299.00064605783,313.95067836072,319.76457981184,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,428.11456140098,436.04260883433,457.84473927605,475.68284600109,523.2511306012],description:"11-limit chessboard pattern diamond. OdC"},diamond_dup:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Two 7-limit diamonds 3/2 apart"},diamond_mod:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"13-tone Octave Modular Diamond, based on Archytas's Enharmonic"},diamond_tetr:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,523.2511306012],description:"Tetrachord Modular Diamond based on Archytas's Enharmonic"},diaphonic_10:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"10-tone Diaphonic Cycle"},diaphonic_12:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Diaphonic Cycle, conjunctive form on 3/2 and 4/3"},diaphonic_12a:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,323.18452184192,343.38355445704,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,488.36772189445,523.2511306012],description:"2nd 12-tone Diaphonic Cycle, conjunctive form on 10/7 and 7/5"},diaphonic_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"D5-tone Diaphonic Cycle"},diaphonic_7:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"7-tone Diaphonic Cycle, disjunctive form on 4/3 and 3/2"},diaschismic:{frequencies:[261.6255653006,266.61097723855,278.05603152599,283.35453458855,295.51835494038,301.14961170579,314.07733767684,320.06224556188,333.80185153667,340.16262034629,354.76509561975,369.99442271164,377.04485988831,393.23061088369,400.72382577504,417.92606548687,425.88986517773,444.17243057662,452.63636847719,472.06710558841,481.06259110609,501.71360968203,523.2511306012],description:"diaschismic temperament, g=105.446531, p=600, 5-limit"},diat13:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012],description:"This genus is from K.S's diatonic Hypodorian harmonia"},diat15:{frequencies:[261.6255653006,301.87565226992,327.03195662575,356.76213450082,373.75080757229,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Tonos-15 Diatonic and its own trite synemmenon Bb"},diat15_inv:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,366.27579142084,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"Inverted Tonos-15 Harmonia, a harmonic series from 15 from 30."},diat17:{frequencies:[261.6255653006,296.50897400735,342.12573923925,370.63621750918,386.75083566176,404.33041910093,444.76346101102,494.18162334558,523.2511306012],description:"Tonos-17 Diatonic and its own trite synemmenon Bb"},diat19:{frequencies:[261.6255653006,276.16031892841,310.68035879446,355.06326719367,368.21375857121,382.37582620857,414.24047839262,451.89870370104,523.2511306012],description:"Tonos-19 Diatonic and its own trite synemmenon Bb"},diat21:{frequencies:[261.6255653006,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Tonos-21 Diatonic and its own trite synemmenon Bb"},diat21_inv:{frequencies:[261.6255653006,299.00064605783,323.91736656265,348.83408706747,373.75080757229,398.6675280771,448.50096908674,473.41768959156,523.2511306012],description:"Inverted Tonos-21 Harmonia, a harmonic series from 21 from 42."},diat23:{frequencies:[261.6255653006,286.54228580542,300.86940009569,334.29933343966,353.96400011258,376.08675011961,429.81342870813,462.87600014722,523.2511306012],description:"Tonos-23 Diatonic and its own trite synemmenon Bb"},diat25:{frequencies:[261.6255653006,297.30177875068,327.03195662575,363.36884069528,384.74347838324,408.78994578219,467.18850946536,503.12608711654,523.2511306012],description:"Tonos-25 Diatonic and its own trite synemmenon Bb"},diat27:{frequencies:[261.6255653006,294.32876096318,336.37572681506,353.19451315581,371.78369805875,392.4383479509,441.49314144476,504.56359022259,523.2511306012],description:"Tonos-27 Diatonic and its own trite synemmenon Bb"},diat27_inv:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,377.90359432309,387.59343007496,406.97310157871,465.11211608996,523.2511306012],description:"Inverted Tonos-27 Harmonia, a harmonic series from 27 from 54"},diat29:{frequencies:[261.6255653006,291.81313052759,316.13089140489,344.87006335079,361.29244731988,379.35706968587,421.50785520652,474.19633710734,523.2511306012],description:"Tonos-29 Diatonic and its own trite synemmenon Bb"},diat31:{frequencies:[261.6255653006,289.65687586852,311.93817401225,337.93302184661,352.6257619269,368.65420565085,405.51962621593,450.57736246214,523.2511306012],description:"Tonos-31 Diatonic. The disjunctive and conjunctive diatonic forms are the same"},diat33:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,375.37581108347,392.4383479509,431.68218274599,479.64686971777,523.2511306012],description:"Tonos-33 Diatonic. The conjunctive form is 23 (Bb instead of B) 20 18 33/2"},diat_chrom:{frequencies:[261.6255653006,280.31310567921,301.87565226992,348.83408706747,392.4383479509,420.46965851882,452.81347840488,523.2511306012],description:"Diatonic- Chromatic, on the border between the chromatic and diatonic genera"},diat_dies2:{frequencies:[261.6255653006,266.71168334607,311.12698372208,349.22823143301,391.99543598175,399.61600264311,466.16376151809,523.2511306012],description:"Dorian Diatonic, 2 part Diesis"},diat_dies5:{frequencies:[261.6255653006,274.52693220706,311.12698372208,349.22823143301,391.99543598175,411.32564531909,466.16376151809,523.2511306012],description:"Dorian Diatonic, 5 part Diesis"},diat_enh:{frequencies:[261.6255653006,269.29177952703,311.12698372208,349.22823143301,391.99543598175,403.48177901006,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode"},diat_enh2:{frequencies:[261.6255653006,269.29177952703,302.26980244078,349.22823143301,391.99543598175,403.48177901006,452.89298412314,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode 3 + 12 + 15 parts"},diat_enh3:{frequencies:[261.6255653006,302.26980244078,311.12698372208,349.22823143301,391.99543598175,452.89298412314,466.16376151809,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 3 + 12 parts"},diat_enh4:{frequencies:[261.6255653006,302.26980244078,339.28638158975,349.22823143301,391.99543598175,452.89298412314,508.3551866238,523.2511306012],description:"Diat. + Enharm. Diesis, Dorian Mode, 15 + 12 + 3 parts"},diat_enh5:{frequencies:[261.6255653006,293.66476791741,339.28638158975,349.22823143301,391.99543598175,440,508.3551866238,523.2511306012],description:"Dorian Mode, 12 + 15 + 3 parts"},diat_enh6:{frequencies:[261.6255653006,293.66476791741,302.26980244078,349.22823143301,391.99543598175,440,452.89298412314,523.2511306012],description:"Dorian Mode, 12 + 3 + 15 parts"},diat_eq:{frequencies:[261.6255653006,288.06466200271,317.1754314895,349.22823143301,391.99543598175,431.60932167676,475.22619361214,523.2511306012],description:"Equal Diatonic, Islamic form, similar to 11/10 x 11/10 x 400/363"},diat_eq2:{frequencies:[261.6255653006,287.78812183066,317.12189733406,348.83408706747,392.4383479509,431.68218274599,475.68284600109,523.2511306012],description:"Equal Diatonic, 11/10 x 400/363 x 11/10"},diat_gold:{frequencies:[261.6255653006,292.38332274669,326.75708630452,349.99258496952,391.13935185123,437.1232727958,488.51296691354,523.2511306012],description:"Diatonic scale with ratio between whole and half tone the Golden Section"},diat_hemchrom:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"Diat. + Hem. Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_smal:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:'"Smallest number" diatonic scale'},diat_sofchrom:{frequencies:[261.6255653006,271.8968348557,311.12698372208,349.22823143301,391.99543598175,407.38495184466,466.16376151809,523.2511306012],description:"Diat. + Soft Chrom. Diesis, Another genus of Aristoxenos, Dorian Mode"},diat_soft:{frequencies:[261.6255653006,274.52693220706,302.26980244078,349.22823143301,391.99543598175,411.32564531909,452.89298412314,523.2511306012],description:"Soft Diatonic genus 5 + 10 + 15 parts"},diat_soft2:{frequencies:[261.6255653006,281.2143451833,302.26980244078,349.22823143301,391.99543598175,421.34544350737,452.89298412314,523.2511306012],description:"Soft Diatonic genus with equally divided Pyknon; Dorian Mode"},diat_soft3:{frequencies:[261.6255653006,281.2143451833,324.90175210669,349.22823143301,391.99543598175,421.34544350737,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},diat_soft4:{frequencies:[261.6255653006,302.26980244078,324.90175210669,349.22823143301,391.99543598175,452.89298412314,486.80259447109,523.2511306012],description:"New Soft Diatonic genus with equally divided Pyknon; Dorian Mode; 1:1 pyknon"},dicot:{frequencies:[261.6255653006,270.35822989652,294.32876096318,320.42456924675,331.11985608357,360.47764004221,392.4383479509,405.53734464206,441.49314144476,480.63685362987,523.2511306012],description:"Dicot temperament, g=350.9775, 5-limit"},didy_chrom:{frequencies:[261.6255653006,279.06726965397,290.69507255622,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Didymus Chromatic"},didy_chrom1:{frequencies:[261.6255653006,279.06726965397,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Permuted Didymus Chromatic"},didy_chrom2:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,470.92601754108,490.54793493862,523.2511306012],description:"Didymos's Chromatic, 6/5 x 25/24 x 16/15"},didy_chrom3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,392.4383479509,408.78994578219,436.04260883433,523.2511306012],description:"Didymos's Chromatic, 25/24 x 16/15 x 6/5"},didy_diat:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,418.60090448096,465.11211608996,523.2511306012],description:"Didymus Diatonic"},didy_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Inverse Didymus Diatonic, variant of Ptolemy with 2 identical triads"},didy_enh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Dorian mode of Didymos's Enharmonic"},didy_enh2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,348.83408706747,392.4383479509,413.43299207996,418.60090448096,523.2511306012],description:"Permuted Didymus Enharmonic"},"diesic-m":{frequencies:[261.6255653006,289.62525622617,320.62153003931,354.93508703008,392.92094947462,434.97213484265,481.52372211906,523.2511306012],description:"Minimal Diesic temperament, g=176.021, 5-limit"},"diesic-t":{frequencies:[261.6255653006,272.92239980638,281.87304203955,294.04415210774,303.68749398125,316.80053726141,327.19018747082,337.92057205022,352.51178108166,364.07260143821,379.79303732838,392.24856169057,409.18561859271,422.60509148244,436.46466102477,455.31094249407,470.24311865111,490.54793493862,506.63572944675,523.2511306012],description:"Tiny Diesic temperament, g=443.017, 5-limit"},diff31_72:{frequencies:[261.6255653006,269.29177952703,274.52698453615,279.86396690685,285.30470202322,293.66476791741,299.37379946195,305.19382000629,314.13668154225,320.24370022528,326.46944327063,336.03572815422,342.56848033562,352.60650301302,356.01745236555,366.44956000397,373.57357677338,384.52011812375,388.23978476841,399.61607881612,407.38487419079,419.32216217931,427.47405410759,435.78442404634,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,508.3551866238,523.2511306012],description:"Diff31, 11/9, 4/3, 7/5, 3/2, 7/4, 9/5 difference diamond, tempered to 72-et"},dimteta:{frequencies:[261.6255653006,282.55561052465,307.12566361375,336.37572681506,406.97310157871,439.53094970501,477.75103228805,523.2511306012],description:"A heptatonic form on the 9/7"},dimtetb:{frequencies:[261.6255653006,294.32876096318,336.37572681506,406.97310157871,457.84473927605,523.2511306012],description:"A pentatonic form on the 9/7"},div_fifth1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #1, From Schlesinger, see Chapter 8, p. 160"},div_fifth2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #2, From Schlesinger, see Chapter 8, p. 160"},div_fifth3:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,523.2511306012],description:"Divided Fifth #3, From Schlesinger, see Chapter 8, p. 160"},div_fifth4:{frequencies:[261.6255653006,274.70684356563,305.22982618403,343.38355445704,392.4383479509,523.2511306012],description:"Divided Fifth #4, From Schlesinger, see Chapter 8, p. 160"},div_fifth5:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,523.2511306012],description:"Divided Fifth #5, From Schlesinger, see Chapter 8, p. 160"},dkring1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,320.49131749323,327.03195662575,366.27579142084,392.4383479509,439.53094970501,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 4:5:6:7"},dkring2:{frequencies:[261.6255653006,274.70684356563,305.22982618403,329.64821227876,336.37572681506,353.19451315581,366.27579142084,392.4383479509,406.97310157871,427.32175665765,436.04260883433,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 3:5:7:9"},dkring3:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,348.83408706747,384.42940207435,392.4383479509,398.6675280771,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"Double-tie circular mirroring of 6:7:8:9"},dkring4:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,327.03195662575,336.37572681506,367.91095120397,373.75080757229,378.42269266694,420.46965851882,467.18850946536,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 7:8:9:10"},dodeceny:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Degenerate eikosany 3)6 from 1.3.5.9.15.45 tonic 1.3.15"},dorian_chrom:{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,315.92521092903,322.00069575458,348.83408706747,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,620.14948811994,631.85042185805,644.00139150917,697.66817413493,761.09255360175,797.33505615421,816.78225264578,837.20180896192,930.22423217991,1046.5022612024],description:"Dorian Chromatic Tonos"},dorian_chrom2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the chromatic genus"},dorian_chrominv:{frequencies:[261.6255653006,273.00058987889,285.40970760065,332.97799220076,380.54627680087,404.33041910093,428.11456140098,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Dorian inverted"},dorian_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,669.76144716954,697.66817413493,728.00157301037,761.09255360175,837.20180896192,881.26506206518,930.22423217991,984.94330466108,1046.5022612024],description:"Dorian Diatonic Tonos"},dorian_diat2:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,442.75095666255,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Harmonia, a subharmonic series through 13 from 22"},dorian_diat2inv:{frequencies:[261.6255653006,285.40970760065,309.19384990071,332.97799220076,356.76213450082,380.54627680087,428.11456140098,475.68284600109,523.2511306012],description:"Inverted Schlesinger's Dorian Harmonia, a harmonic series from 11 from 22"},dorian_diatcon:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,411.12588832951,479.64686971777,523.2511306012],description:"A Dorian Diatonic with its own trite synemmenon replacing paramese"},dorian_diatred11:{frequencies:[261.6255653006,287.78812183066,316.56693401373,348.83408706747,392.4383479509,431.68218274599,474.85040102059,523.2511306012],description:"Dorian mode of a diatonic genus with reduplicated 11/10"},dorian_enh:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,310.07474405997,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012,558.13453930795,598.00129211566,608.8740428814,614.4600432748,620.14948811994,697.66817413493,761.09255360175,778.79238042969,787.95464372887,797.33505615421,930.22423217991,1046.5022612024],description:"Dorian Enharmonic Tonos"},dorian_enh2:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,426.35277308246,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the enharmonic genus"},dorian_enhinv:{frequencies:[261.6255653006,267.19206668997,273.00058987889,332.97799220076,380.54627680087,392.4383479509,404.33041910093,523.2511306012],description:"A harmonic form of Schlesinger's Dorian enharmonic inverted"},dorian_pent:{frequencies:[261.6255653006,271.49822814213,287.78812183066,359.73515228832,411.12588832951,423.21782622156,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the pentachromatic genus"},dorian_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the Dorian Tonos, a non-rep. 16 tone gamut"},dorian_schl:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"Schlesinger's Dorian Piano Tuning (Sub 22)"},dorian_tri1:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,411.12588832951,421.15334902048,431.68218274599,523.2511306012],description:"Schlesinger's Dorian Harmonia in the first trichromatic genus"},dorian_tri2:{frequencies:[261.6255653006,269.80136421624,287.78812183066,359.73515228832,411.12588832951,421.15334902048,442.75095666255,523.2511306012],description:"Schlesinger's Dorian Harmonia in the second trichromatic genus"},douwes:{frequencies:[261.6255653006,273.00058987889,292.50063201309,313.39353429974,327.01933943691,350.37786403433,365.61168556196,391.72680409,408.75840577964,436.81779569448,468.01906681552,488.36772189445,523.2511306012],description:"Claas Douwes recommendation of 24/23 and 15/14 steps for clavichord (1699)"},dow_high:{frequencies:[261.6255653006,277.01530443593,278.50463402967,294.32876096318,308.34441624714,313.31771328338,327.34193952303,331.11985608357,346.88746827803,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707],description:"Highest octave of Dowlands lute tuning, strings 5,6. 1/1=G (1610)"},dow_lmh:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012,548.16785110602,557.00926805934,581.94122581871,588.65752192635,616.68883249427,620.14948811994,626.63542656676,656.62886977405,662.23971216714,693.77493655606,697.66817413493,736.51936392681,742.67902407912,784.8766959018,822.25177665903,831.04591330779,835.51390208901,882.98628288953,925.03324874141,939.95313985014,982.02581856908,993.35956825072,1040.66240483408,1046.5022612024,1108.06121774372,1114.01853611868,1177.3150438527,1233.37766498854,1253.27085313352,1309.3677580921,1324.47942433429,1387.54987311211,1395.33634826987,1477.41495699162,1569.7533918036,1671.02780417803,1765.97256577905,1850.06649748281],description:"All three octaves of Dowland's lute tuning"},dow_low:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,371.33951203956,392.4383479509,411.12588832951,417.75695104451,436.45591936403,441.49314144476,462.5166243707,465.11211608996,492.47165233054,495.11934938608,523.2511306012],description:"Lowest octave of Dowlands lute tuning, strings 1,2,3. 1/1=G. (1610)"},dow_middle:{frequencies:[261.6255653006,274.08392555301,278.50463402967,290.97061290936,294.32876096318,308.34441624714,310.07474405997,313.31771328338,328.31443488703,331.11985608357,346.88746827803,348.83408706747,368.2596819634,371.33951203956,392.4383479509,411.12588832951,415.52295665389,417.75695104451,441.49314144476,462.5166243707,469.97656992507,491.01290928454,496.67978412536,520.33120241704,523.2511306012],description:"Middle octave of Dowlands lute tuning, strings 3,4,5. 1/1=G (1610)"},dowland_12:{frequencies:[261.6255653006,278.50463402967,294.32876096318,308.34441624714,327.34193952303,348.83408706747,369.35373924791,392.4383479509,417.75695104451,441.49314144476,462.5166243707,492.47165233054,523.2511306012],description:"subset of Dowland's lute tuning, lowest octave"},druri:{frequencies:[261.6255653006,285.79952600623,326.97270111135,357.18467683857,523.2511306012],description:"Scale of druri dana of Siwoli, south Nias, Jaap Kunst"},dudon_a:{frequencies:[261.6255653006,285.85015468029,319.76457981184,348.83408706747,392.4383479509,428.77523202043,479.64686971777,523.2511306012],description:"Dudon Tetrachord A"},dudon_b:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,482.37213602298,523.2511306012],description:"Dudon Tetrachord B"},dudon_c12:{frequencies:[261.6255653006,302.50455987882,327.03195662575,343.38355445704,392.4383479509,425.14154361347,474.19633710734,523.2511306012],description:"Differentially coherent scale in interval class 1 and 2"},dudon_diat:{frequencies:[261.6255653006,294.32876096318,321.08592105074,350.8160989258,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Dudon Neutral Diatonic"},dudon_moha_baya:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Mohajira + Bayati (Dudon) 3 + 4 + 3 Mohajira and 3 + 3 + 4 Bayati tetrachords"},dudon_mohajira:{frequencies:[261.6255653006,285.30470202322,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Dudon's Mohajira, two 3 + 4 + 3 tetrachords, neutral diatonic"},dudon_mohajira_r:{frequencies:[261.6255653006,283.42769574232,321.58142401532,348.83408706747,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"Jacques Dudon, JI Mohajira, Lumi\xEF\xBF\xBDres audibles"},dudon_thai:{frequencies:[261.6255653006,288.26147859917,317.63518509943,350.43752981487,386.47021463976,426.17461277719,469.97930400405,523.2511306012],description:"Dudon, coherent Thai heptatonic scale, 1/1 vol. 11/2, 2003"},dudon_thai2:{frequencies:[261.6255653006,288.02814528506,314.43072526953,347.1339209321,383.13743909274,422.44127975143,475.35895071461,523.2511306012],description:"Slightly better version, 3.685 cents deviation"},dudon_thai3:{frequencies:[261.6255653006,291.60349465796,321.58142401532,354.2846196779,394.48229767981,434.67997568173,478.96555314146,523.2511306012],description:"Dudon, Thai scale with two 704/703 = 2.46 c. deviations and simpler numbers"},duncan:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Dudley Duncan's Superparticular Scale"},duoden12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,413.89982010446,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Almost equal 12-tone subset of Duodenarium"},duodenarium:{frequencies:[14.56761754744,14.73307690724,14.74971276678,14.91724036858,14.98726085128,15.00418372272,15.10370587319,15.17460161192,15.19173601925,15.34695511171,15.36428413207,15.5387920506,15.55633768372,15.71528203439,15.73302695124,15.80687667908,15.91172305982,15.92968978813,16.00446263757,16.18624171938,16.20451842054,16.38856974087,16.57471152064,16.59342686263,16.78189541465,16.86066845769,16.87970668806,16.99166910733,17.07142681341,17.26532450067,17.28481964857,17.48114105693,17.67969228869,17.69965532014,17.78273626396,17.90068844229,17.98471302153,18.00502046726,18.2095219343,18.41634613405,18.43714095848,18.64655046072,18.73407606409,18.85833844126,18.87963234148,18.9682520149,18.98967002407,19.18369388963,19.20535516508,19.42349006325,19.44542210465,19.64410254298,19.66628368904,19.88965382477,19.91211223516,20.00557829696,20.13827449758,20.23280214922,20.25564802567,20.48571217609,20.7183894008,20.74178357829,20.97736926831,21.07583557211,21.21563074642,21.23958638417,21.33928351676,21.58165562584,21.60602456072,21.85142632116,22.09961536086,22.12456915017,22.37586055287,22.48089127691,22.50627558408,22.65555880978,22.76190241787,23.02043266756,23.0464261981,23.3081880759,23.57292305158,23.59954042685,23.71031501862,23.86758458973,23.97961736204,24.00669395635,24.27936257907,24.30677763081,24.55512817873,24.5828546113,24.86206728096,24.89014029395,25.14445125502,25.17284312198,25.29100268653,25.31956003209,25.487503661,25.60714022011,25.897986751,25.92722947286,26.22171158539,26.51953843303,26.54948298021,26.67410439595,26.85103266344,26.9770695323,27.0075307009,27.31428290145,27.62451920107,27.65571143772,27.96982569108,28.10111409614,28.2875076619,28.31944851222,28.45237802234,28.77554083445,28.80803274762,29.13523509488],description:"Ellis's Duodenarium : genus [3^12 5^8]"},duodene:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Duodene : genus [33355]"},"duodene14-18-21":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"14-18-21 Duodene"},"duodene3-11_9":{frequencies:[261.6255653006,285.40970760065,294.32876096318,319.76457981184,321.08592105074,348.83408706747,359.73515228832,392.4383479509,426.35277308246,428.11456140098,479.64686971777,481.6288815761,523.2511306012],description:"3-11/9 Duodene"},"duodene3-7":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"3-7 Duodene"},"duodene6-7-9":{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,406.97310157871,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:"6-7-9 Duodene"},duodene_min:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Minor Duodene"},"duodene_r-45":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,353.19451315581,376.74081403286,401.85686830172,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated -45 degrees"},duodene_r45:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,313.95067836072,334.88072358477,383.2405741708,408.78994578219,436.04260883433,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 45 degrees"},duodene_r90:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Ellis's Duodene rotated 90 degrees: genus [33555]"},duodene_skew:{frequencies:[261.6255653006,282.55561052465,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rotated 6/5x3/2 duodene"},duodene_t:{frequencies:[261.6255653006,279.3825857701,293.66476791741,313.59634948548,327.03195662575,349.22823143301,367.08095907728,391.99543598175,418.60090448096,436.53528831673,469.86362971679,489.99429388332,523.2511306012],description:"Duodene with equal tempered fifths"},duowell:{frequencies:[261.6255653006,278.41172412276,294.03623226919,312.90189200955,327.96500300935,349.00756672938,368.59392213143,392.24328034087,417.4100028405,437.50413894442,469.11953885575,491.70297432358,523.2511306012],description:"Ellis duodene well-tuned to fifth=(7168/11)^(1/16) third=(11/7)^(1/2)"},dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},cairo:{frequencies:[261.6255653006,269.38381929633,276.03456984659,285.15047989166,293.63138642043,300.85736580106,309.799366845,312.20234522745,320.03127253896,327.93377450564,337.66851484331,348.83408706747,357.41197445437,367.9166999024,380.21445327801,392.4383479509,401.02017979859,414.62054722758,417.26565438692,427.77234352616,440.44707963064,451.93568025669,468.86302025197,480.04690880844,491.77737838459,510.98743222773,523.2511306012],description:"P.42, of d'Erlanger, vol.5. Congress of Arabic Music, Cairo, 1932"},canright:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:`David Canright's piano tuning for "Fibonacci Suite" (2001)`},carlos_alpha:{frequencies:[261.6255653006,273.68256372566,286.29520819723,299.48910562989,313.29104303136,327.729041887,342.83241505062,358.63182625716,375.1593523779,392.44854854484,410.5345162762,429.45397474154,449.24533531117,469.94877954106,491.60634075178,514.26198936695,537.96172218451,562.75365576207,588.68812410589],description:"Wendy Carlos' Alpha scale with perfect fifth divided in nine"},carlos_alpha2:{frequencies:[261.6255653006,267.58616452957,273.68256372566,279.91785681123,286.29520819723,292.81785438923,299.48910562989,306.31234757893,313.29104303136,320.42873367481,327.729041887,335.19567257401,342.83241505062,350.6431449633,358.63182625716,366.8025131876,375.1593523779,383.7065849236,392.44854854484,401.3896797878,410.5345162762,419.88769901416,429.45397474154,439.23819834286,449.24533531117,459.48046426806,469.94877954106,480.6555937997,491.60634075178,502.8065779009,514.26198936695,525.97838877075,537.96172218451,550.21807114943,562.75365576207,575.57483783111,588.68812410589],description:"Wendy Carlos' Alpha prime scale with perfect fifth divided by eightteen"},carlos_beta:{frequencies:[261.6255653006,271.44693432634,281.63699549204,292.20958942356,303.17907632096,314.56035546319,326.36888544505,338.62070517372,351.33245565363,364.52140258903,378.2054598351,392.40321372938,407.13394833666,422.41767164147,438.27514272393,454.72789995564,471.7982902542,489.50949943583,507.88558370741,526.95150234083,546.73315157381,567.25739978343,588.55212398003],description:"Wendy Carlos' Beta scale with perfect fifth divided by eleven"},carlos_beta2:{frequencies:[261.6255653006,266.49100855797,271.44693432634,276.49502530642,281.63699549204,286.87459075215,292.20958942356,297.64380291476,303.17907632096,308.81728905054,314.56035546319,320.41022551991,326.36888544505,332.43835840072,338.62070517372,344.91802487526,351.33245565363,357.86617542024,364.52140258903,371.30039682974,378.2054598351,385.23893610237,392.40321372938,399.70072522531,407.13394833666,414.70540688852,422.41767164147,430.27336116448,438.27514272393,446.42573318931,454.72789995564,463.18446188312,471.7982902542,480.57230974851,489.50949943583,498.61289378764,507.88558370741,517.33071758003,526.95150234083,536.75120456442,546.73315157381,556.90073257014,567.25739978343,577.80666964473,588.55212398003],description:"Wendy Carlos' Beta prime scale with perfect fifth divided by twentytwo"},carlos_gamma:{frequencies:[261.6255653006,266.98388983977,272.45195763676,278.03201633122,283.72635959645,289.53732808222,295.4673103769,301.51874398927,307.69411635045,313.99596583639,320.42688281121,326.98951069203,333.68654703547,340.52074464653,347.49491271011,354.6119179457,361.87468578579,369.2862015783,376.84951181374,384.56772537748,392.44401482761,400.48161769905,408.68383783428,417.05404674148,425.59568498025,434.31226357598,443.20736546293,452.28464695708,461.547839259,471.00074998758,480.64726474513,490.49134871455,500.53704828923,510.78849273629,521.24989589392,531.92555790347],description:"Wendy Carlos' Gamma scale with third divided by eleven or fifth by twenty"},carlos_harm:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Harmonic & Ben Johnston's scale of 'Blues' from Suite f.micr.piano (1977) & David Beardsley's scale of 'Science Friction'"},carlos_super:{frequencies:[261.6255653006,277.97716313189,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Carlos Super Just"},carlson:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Brian Carlson's guitar scale (or 7 is 21/16 instead) fretted by Mark Rankin"},cassandra1:{frequencies:[261.6255653006,265.52313139125,271.43629763673,275.48001908354,279.58398024378,283.7490817683,290.06813927787,294.38942683035,298.7750924519,305.42877739024,309.97889991383,314.59680966486,319.28351286859,326.39391783308,331.25637026535,336.19125912653,343.67819754196,348.79814248043,353.99435973883,359.26798967332,367.26884406885,372.74022844163,378.29312490007,386.71766674112,392.47878977853,398.32574139651,407.19640716832,413.26261206104,419.41919061043,425.66748431192,435.14704737009,441.62964923022,448.20882304357,458.19037897128,465.01626879626,471.9438445688,478.97462660712,489.64133323501,496.93576068834,504.33885972365,515.57042175735,523.2511306012],description:"Cassandra temperament (Erv Wilson), 13-limit, g=497.866"},cassandra2:{frequencies:[261.6255653006,265.34593985135,270.18130909623,275.10479273152,279.0168449367,284.10133754875,289.27848429833,293.3920895946,298.7385406747,304.18241953205,309.72550158209,314.12986807617,319.85422136322,325.68288889698,330.31417303802,336.33345109576,342.46241778116,348.70307193775,353.66170827405,360.10644584283,366.66862514012,371.88273569526,378.65951299923,385.5597827545,392.58579535013,398.16845391153,405.42423290482,412.81223314336,418.68251621245,426.31212065787,434.08075852776,440.25348482514,448.27617460765,456.44506096456,464.76280801961,471.37183998139,479.96159605313,488.70788228454,495.65741860341,504.6897280454,513.8866322474,523.2511306012],description:"Cassandra temperament, schismic variant, 13-limit, g=497.395"},catler:{frequencies:[261.6255653006,269.80136421624,279.06726965397,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,322.00069575458,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,418.60090448096,425.14154361347,436.04260883433,441.49314144476,457.84473927605,465.11211608996,483.00104363188,490.54793493862,523.2511306012],description:'Catler 24-tone JI from "Over and Under the 13 Limit", 1/1 3(3)'},cbrat19:{frequencies:[261.6255653006,272.05448646742,281.65887246066,291.7164960911,303.76422848609,314.23522436032,325.78124145721,339.14379232251,350.05979530932,364.18597952318,377.95660802413,389.93691761381,406.2330981776,420.87727247778,436.65546295526,454.14747622901,467.92430113657,486.684954898,506.27371414348,523.2511306012],description:"brats = -1 -1 -1 -1 -1 -1 -1 -1 0 3/7 390808/591947 1/2 1/2 1/2 1/2 1/4 0 0 -1"},ceb88f:{frequencies:[261.6255653006,275.30280934529,289.60851057007,304.80308899558,320.69584574771,337.31885569235,354.97473368038,373.44187862432,393.05647479461,413.57234190108,435.03089105397,457.82276134277,481.66189358475,506.59641128799],description:"88 cents steps with equal beating fifths"},ceb88s:{frequencies:[261.6255653006,275.27750547448,289.60710371138,304.74878776577,320.64207659236,337.32428016541,354.95189689869,373.45451504132,392.8755714351,413.39725679488,434.93759942207,457.54716438978,481.43806014345,506.51485544552,533.01280425363],description:"88 cents steps with equal beating sevenths"},ceb88t:{frequencies:[261.6255653006,275.20384442973,289.60910777612,304.54100616185,320.3823320487,337.18847246966,354.60902163481,373.09056856306,392.69773188536,413.02170471677,434.58350960486,457.45853552679,481.16983689269,506.32527343025,533.01280425363],description:"88 cents steps with equal beating 7/6 thirds"},cet105:{frequencies:[261.6255653006,277.98437592617,295.36606150822,313.83458334354,333.45789502888,354.30820661869,376.46223533368,400.00150378562,425.01262301844,451.58762919357,479.82430313337,509.82655042708,541.70476218406,575.57624366132],description:"Equal temperament with very good 6/5 and 13/8"},cet105a:{frequencies:[261.6255653006,278.09098920184,295.59266404146,314.19580976213,333.96974580612,354.98815389674,377.32935907335,401.07660961589,426.31839262878,453.14877154631,481.66772230429,511.98151233648,544.20310589723,578.45256778249,614.85751848055,653.5536209391,694.68506540856,738.40511604959,784.8766959018],description:"18th root of 3"},cet111:{frequencies:[261.6255653006,279.02234237845,297.57591715819,317.3632108372,338.46625752841,360.97255206362,384.97540137331,410.57431878206,437.87543474729,466.99193686517,498.04453913461,531.16197935691,566.48156495049,604.14972437838,644.32262592407,687.16682227215,732.8599410185,781.59142109591,833.56329335333,888.99103711409,948.10444554232,1011.14859670036,1078.38486510237,1150.09200534594,1226.56730779978,1308.127826503],description:'25th root of 5, Karlheinz Stockhausen in "Studie II" (1954)'},cet111a:{frequencies:[261.6255653006,279.09119608948,297.72279782842,317.59821198502,338.80046946076,361.41815173468,385.54574794778,411.2840547398,438.74060487161,468.03009995854,499.27490936609,532.60556349815,568.16130614457,606.09068659426,646.55215742719,689.71476370538,735.75882016749,784.8766959018],description:"17th root of 3. McLaren 'Microtonal Music', volume 1, track 8"},cet112:{frequencies:[261.6255653006,279.13807488234,297.82282461384,317.75828292395,339.02816520012,361.72179601836,385.93447726538,411.76789245756,439.33052439618,468.73812456399,500.11419015728,533.59048802364,569.30759588159,607.4155105893,648.07426630787,691.45461344743,737.73872000797,787.12095980595,839.80871352279,896.02324851892,956.00062766807,1019.99273078287,1088.26829265547,1161.11404316696,1238.83588500259,1321.76021726874,1410.23528064063,1504.63263477595,1605.34868446028,1712.8063948195,1827.45703443292,1949.78208984359,2080.29524321777,2219.54459500735,2368.11492276755,2526.63016208001,2695.75596930795,2876.20260183901,3068.72784518,3274.14022786751,3493.30234242079,3727.13457771193,3976.61891204907,4242.80307922676,4526.8048719912,4829.81697864182,5153.11189830808,5498.04733953642,5866.07179694692,6258.73081875602,6677.6733762505,7124.65885956048,7601.56430418436,8110.3925243186],description:"53rd root of 31. McLaren 'Microtonal Music', volume 4, track 16"},cet114:{frequencies:[261.6255653006,279.47933554513,298.55147893584,318.92513586406,340.68912750315,363.93832870511,388.77409689134,415.30469757995,443.64579124771,473.92093172942,506.26209616971,540.81027939262,577.71608583803,617.1404103833,659.25511382574,704.24379572788,752.30258557703,803.64098403142,858.48280642307,917.06712239825,979.64933665453,1046.5022612024],description:"21st root of 4"},cet115:{frequencies:[261.6255653006,279.68949451567,299.00064605783,319.64513593742,341.71502406609,365.30872604057,390.53145607553,417.49568846357,446.32166408632,477.13792869952,510.08190181294],description:"2nd root of 8/7. Werner Linden, Musiktheorie, 2003 no.1 midi 15.Eb=19.44544 Hz"},cet117:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82340237272,513.27277840175,549.0539690723,587.32953583482,628.27336308449,672.07145630843,718.92279942609,769.0402362475,822.65144744826,880,941.34642612261,1006.96941915374,1077.1671181081,1152.25842837255,1232.58448551457,1318.51022765149,1410.42601205207,1508.74940691646,1613.92711604023,1726.4369576214,1846.79005749489,1975.53320502451,2113.25127526858,2260.56991361642,2418.15841952625,2586.73271138559,2767.05861265008,2959.95538169309],description:"72nd root of 128, step = generator of Miracle"},cet118:{frequencies:[261.6255653006,280.22072913446,300.13755324878,321.46997343155,344.3186075731,368.79121945838,395.0032340925,423.07827792492,453.14877154631,485.35654007358,519.85349135637,556.8023269521,596.37732215892,638.76512932755,684.16567043124,732.79307276157,784.8766959018],description:"16th root of 3. McLaren 'Microtonal Music', volume 1, track 7"},cet126:{frequencies:[261.6255653006,281.50639381697,302.89795903081,325.91506125677,350.68122444233,377.32935907335,406.00247545366,436.85445118639,470.05085697597,505.76984518255,544.20310589723,585.55689566922,630.05314440547,677.93064638327,729.44634176744,784.8766959018],description:"15th root of 3. McLaren 'Microtonal Music', volume 1, track 6"},cet126a:{frequencies:[261.6255653006,281.42815779395,302.72962012827,325.64340264099,350.29154279212,376.80531512858,405.32593044476,436.00528786292,469.00678383895,504.50618240233,542.69254813034,583.76926541313,627.95510352048,675.48539363125,726.61327927927,781.61106458091,840.77166451082,904.41016494992,972.86550081423,1046.5022612024],description:"19th root of 4"},cet133:{frequencies:[261.6255653006,282.54488373859,305.13688994853,329.53533037111,355.88464567857,384.34082587483,415.07233376839,448.26110228542,484.10361152681,522.81205194575,564.61558053174,609.76167743791,658.5176110828,711.17202040031],description:"13th root of e"},cet140:{frequencies:[261.6255653006,283.72172983292,307.68407293041,333.67021037701,361.85106232365,392.4119924075,425.55401329039,461.49511402661,500.47170241421,542.7401414615,588.57845795114,638.28815062634,692.19618110881,750.65713728047,814.05554253056,882.80839491877,957.36792629418,1038.22454144983,1125.91008648826,1221.00130775733,1324.12366033919,1435.95544645068,1557.23222387914,1688.75170820144,1831.3789571042],description:"24th root of 7"},cet141:{frequencies:[261.6255653006,283.85429714132,307.97166902637,334.13814720468,362.52783176564,393.32961502355,426.7484383229,463.0066556268,502.34551296122,545.02675670673,591.33436279611,641.57644431325,696.08728968715,755.22958979995,819.39685117042,889.01601417107,964.55029369918,1046.5022612024],description:"17th root of 4"},cet146:{frequencies:[261.6255653006,284.69629445872,309.80145226022,337.12043918596,366.84847565362,399.19799705513,434.40017432099,472.70655602525,514.39088038704,559.75102196641,609.11112257023,662.82390755693,721.27320639821,784.8766959018],description:"13th root of 3, Bohlen-Pierce approximation"},cet148:{frequencies:[261.6255653006,284.92791524313,310.30575035912,337.94392545772,368.04376529149,400.82452432448,436.52498800167,475.40520223986,517.74838217475,563.86296895784,614.08486606944,668.77990486322,728.34649714081,793.21854485147,863.86858278563,940.81124699851,1024.60701225804,1115.86625569541,1215.25373699679,1323.49342609599,1441.37375222579,1569.7533918036],description:"21th root of 6, Moreno's C-21"},cet152:{frequencies:[261.6255653006,285.70808394691,312.0073878821,340.72733440875,372.0911362405,406.34196228781,443.74556186468,484.59214639302,529.19833545193,577.91081034511,631.10724720728,689.20039277289,752.64098693245,821.92125998587],description:"13th root of pi"},cet158:{frequencies:[261.6255653006,286.70831230381,314.19580976213,344.3186075731,377.32935907335,413.50494015483,453.14877154631,496.5933637384,544.20310589723,596.37732215892,653.5536209391,716.21156534988,784.8766959018],description:`12th root of 3, Moreno's A-12, see dissertation "Embedding Equal Pitch Spaces.`},cet159:{frequencies:[261.6255653006,286.82842069679,314.45911373416,344.75151869218,377.96204482418,414.37180231943,454.28897403052,498.05144066897,546.02962057131],description:"4e-th root of e. e-th root of e is highest x-th root of x"},cet160:{frequencies:[261.6255653006,286.95745534843,314.74210513576,345.21700307457,378.64263238751,415.30469757995,455.51656649021,499.62194879119,547.99783383788,601.05771297194,659.25511382574,723.0874768355,793.10040709753,869.89233791055,954.11964586525,1046.5022612024],description:'15th root of 4, Rudolf Escher in "The Long Christmas Dinner" (1960)'},cet160a:{frequencies:[261.6255653006,287.06963246392,314.98822873932,345.62201499981,379.23505183234,416.11708252541,456.58602635137,500.99072933585,549.71395617638,603.17569602575,661.83679400878,726.20290371434,796.8288589228,874.32344802967,959.35468153537,1052.65552131526,1155.03021091382,1267.36122959081,1390.6168610076,1525.85955590014,1674.2551187631,1837.08270650821,2015.74588766663,2211.78472029595,2426.88907720145,2662.91313932742,2921.89140956529,3206.0563044734,3517.85730085803,3859.98211320646,4235.37982185266,4647.28638964387,5099.2524155536,5595.17379976366,6139.32543031277,6736.39784717273,7391.53779523322,8110.3925243186],description:"37th root of 31. McLaren 'Microtonal Music', volume 2, track 7"},cet163:{frequencies:[261.6255653006,287.45276480522,315.82957660097,347.00769742017,381.26366336311,418.90131810157,460.25449359467,505.68997636603,555.61077020009,610.45965236807],description:'9th root of 7/3. Jeff Scott in "Quiet Moonlight" (2001)'},cet163a:{frequencies:[261.6255653006,287.41152361975,315.7389582221,346.85836204295,381.04491126651,418.60090448096,459.85843616195,505.18233428314,554.97338050766],description:"5th root of 8/5"},cet166:{frequencies:[261.6255653006,287.95619440582,316.93680165166,348.83408706747],description:"3rd root of 4/3"},cet173:{frequencies:[261.6255653006,289.10449173793,319.46957112932,353.02394045842,390.10257564198,431.07563562091,476.35215768611,526.38414093011,581.67105858963,642.7648443263,710.27540222401,784.8766959018],description:"11th root of 3, Moreno's A-11"},cet175:{frequencies:[261.6255653006,289.48414624674,320.30918244523,354.41654988346,392.15575985798,433.91353804458,480.11779720922,531.2420078798,587.8100594825,650.40162657281,719.65810898332,796.28920449429,881.08018137935,974.89992535123,1078.70983713651,1193.57370864212,1320.66858845324,1461.29686662697,1616.89961515233,1789.07135516847,1979.57639663535,2190.36691789568,2423.60297039629,2681.67459807517,2967.22638952895,3283.18448966052,3632.78664249769,4019.61535560076,4447.6346101102],description:"28th root of 7. McLaren 'Microtonal Music', volume 6, track 3"},cet175a:{frequencies:[261.6255653006,289.53628281337,320.42456924675,354.60807736883,392.4383479509,434.30442400296,480.63685362987,531.91211578736],description:"4th root of 3/2"},cet178:{frequencies:[261.6255653006,289.91935960089,321.27301846367,356.01745236555,394.51936464224,437.18511000944,484.46499093218,536.85800524663,594.91712478053,659.25511382574,730.5510078664,809.55727745129,897.10776473059,994.12650420781,1101.63744560301,1220.77528002516,1352.79740322961,1499.09721690784,1661.21879031979,1840.87318566558,2039.95650991293,2260.56991361642,2505.04181781964,2775.9524141353,3076.16094499002,3408.83584914421,3777.48827884202,4186.0090448096],description:"27th root of 16"},cet181:{frequencies:[261.6255653006,290.48091212946,322.51878830959,358.09020513941,397.58488163802,441.43552612833,490.12256936272,544.17943316245,604.19836236377,670.83693141722,744.82523718317,826.97390553231,918.18295398723,1019.45167961503,1131.88958971281,1256.72856920928,1395.33634826987],description:"6.625 tET. The 16/3 is the so-called Kidjel Ratio promoted by Maurice Kidjel in 1958"},cet182:{frequencies:[261.6255653006,290.70585738945,323.0184918031,358.92275093366,398.81785224951,443.14738973192,492.40425618917,547.1361382945,607.95159681319,675.52683545966,750.61321956915,834.04563048717,926.75174856904,1029.76237395443,1144.22286477952,1271.40590625444,1412.7256395721,1569.7533918036],description:"17th root of 6, Moreno's C-17"},cet195:{frequencies:[261.6255653006,292.81795587218,327.72927094457,366.80289667873,410.53509014096,459.48126579586,514.26306468681,575.57624366132],description:"7th root of 11/5"},cet21k:{frequencies:[261.6255653006,264.89588486686,268.20708342769,271.55967197054,274.95416787017,278.3910952928,281.87098404962,285.39437141672,288.96180112674,292.57382370898,296.23099657435,299.9338841014,303.68305772341,307.47909424051,311.32258299104,315.21411535185,319.1542918681,323.14372059172,327.18301717534,331.2728049672,335.41371510742,339.60638662537,343.85146653829,348.14960995112,352.50148015762,356.90774874273,361.36909568619,365.8862094675,370.45978717215,375.09053459917,379.77916637013,384.52640603933,389.33298620552,394.19964862491,399.1271443257,404.11623372391,409.16768674077,414.28228292154,419.46080913287,424.70406934596,430.01287031296,435.38803129329,440.83038178715,446.34076166346,451.92002128953,457.56902166224,463.28863454093,469.07974258197,474.94323947488,480.88003008033,486.89103056976,492.97716856672,499.13938329007,505.37862569893,511.69585863936,518.09205699304,524.56820782765],description:"scale of syntonic comma's, almost 56-tET"},cet222:{frequencies:[261.6255653006,297.3462123974,337.94392545772,384.08458333231,436.52498800167,496.12526073276,563.86296895784,640.8491384935,728.34649714081,827.79017883768,940.81124699851,1069.2634803114,1215.25373699679,1381.1765584523,1569.7533918036],description:"14th root of 6, Moreno's C-14"},cet233:{frequencies:[261.6255653006,299.41460910537,342.66187834083,392.15575985798,448.79850611373,513.6227001391,587.8100594825,672.71300106294,769.87926947615,881.08018137935,1008.34288220748,1153.98733901804,1320.66858845324,1511.42518780658,1729.7345489351,1979.57639663535,2265.50524176842,2592.73349533282,2967.22638952895,3395.81083571538,3886.29974647262,4447.6346101102],description:"21st root of 17. McLaren 'Microtonal Music', volume 2, track 15"},cet24:{frequencies:[261.6255653006,265.3411057651,269.1094134006,272.9312375932,276.80733837157,280.73848655813,284.72546392233,288.7690633361,292.87008893155,297.02935626086,301.24769245848,305.52593640563,309.86493889709,314.26556281043,318.72868327757,323.25518785885,327.84597671953,332.50196280875,337.22407204116,342.01324348101,346.8704295289,351.79659611118,356.79272287204,361.85980336835,366.9988452672,372.21087054633,377.49691569736,382.85803193188,388.29528539052,393.80975735501,399.40254446313,405.07475892685,410.82752875349,416.66199797006,422.57932685074,428.58069214763,434.66728732478,440.84032279551,447.10102616311,453.45064246502,459.89043442035,466.42168268106,473.04568608657,479.76376192214,486.57724618073,493.48749382879,500.49587907561,507.6037956467,514.81265706088,522.12389691142,529.53896915113],description:"least squares fit primes 2-13"},cet258:{frequencies:[261.6255653006,303.75687573192,352.67287219582,409.46613795376,475.40520223986,551.96287401486,640.8491384935,744.04935121924,863.86858278563,1002.98310468409,1164.50016626124,1352.0273979586,1569.7533918036],description:"12th root of 6, Moreno's C-12"},cet29:{frequencies:[51.91308719749,52.80006242627,53.70219231256,54.6197354699,55.55295587693,56.50212107609,57.46750349647,58.44938022184,59.44803272677,60.46374832519,61.49681820986,62.54753889218,63.61621194966,64.70314373878,65.80864697157,66.93303858176,68.07664129187,69.2397833384,70.42279815925,71.62602610967,72.84981213985,74.09450750046,75.36046944358,76.64806088248,77.95765225928,79.28961901721,80.64434345693,82.02221441105,83.42362735565,84.84898403373,86.29869452271,87.77317443616,89.27284697886,90.79814258634,92.34949851506,93.9273610926,95.53218267212,97.16442386902,98.82455316866,100.51304648023,102.230389586,103.97707482641,105.75360353451,107.56048560902,109.39823902877,111.26739251837,113.16848194039,115.10205294491,117.06866050489,119.06886838764,121.10325205621,123.17239474253,125.2768903313,127.4173428542,129.59436591466,131.80858584574,134.06063743615,136.35116706905,138.68083217153,141.05030058861,143.46025402018,145.91138336926,148.40439215824,150.93999592972,153.51892156515,156.14191102559,158.8097162888,161.52310306741,164.28285015685,167.08974869373,169.94460622727,172.84824120887,175.80148703892,178.80519135714,181.8602162858,184.96743760879,188.12774927869,191.34205731671,194.61128429254,197.93636853869,201.31826325695,204.75794142387,208.2563891515,211.8146105632,215.43362693858,219.11447574094,222.85821595641,226.66592086774,230.53868336123,234.47761499594,238.48384494529,242.55852580808,246.70282574354,250.91793424736,255.20506113867,259.56543598745],description:"95th root of 5"},cet39:{frequencies:[261.6255653006,267.55763511324,273.62420803617,279.82833216202,286.17312954462,292.66178817784,299.29756995616,306.08381073387,313.02392200207,320.12139075456,327.37978859613,334.80276256646,342.39404424694,350.15744982839,358.09687996112,366.21632994368,374.51987945827,383.01170275779,391.6960687417,400.57734310204,409.65998815178,418.94857448076,428.44776921301,438.16234766073,448.09719341103,458.25729813392,468.64777462103,479.27384364987,490.14084702027,501.25424765147,512.61963232837,524.24271148185,536.12933410494,548.28547272565,560.71723832061,573.43088042607,586.43278689221,599.72950056876,613.32770249519,627.23422858353,641.45606974252,656.00037539202,670.87445318194,686.08578808043,701.64202314362,717.55097860059,733.82065199545,750.45921787297,767.47504913108,784.8766959018],description:"49th root of 3"},cet39a:{frequencies:[261.6255653006,267.54999903763,273.60843178624,279.80421399945,286.14029787289,292.61969147246,299.24597805224,306.02231493662,312.9519192023,320.03862308027,327.28580327671,334.69690040195,342.27601296361,350.02675229311,357.95279806627,366.05853356918,374.34782106107,382.82459589435,391.49354592099,400.35880176332,409.42457221564,418.6958708581,428.17711532294,437.87280684605,447.78830736843,457.9283414747,468.29772316218,478.90218693807,489.74678566745,500.83666784082,512.17796641877,523.77608535691],description:"31-tET with least squares octave; equal weight to 5/4, 3/2, 7/4 and 2/1"},cet39b:{frequencies:[261.6255653006,267.54443554965,273.59736903996,279.78708267123,286.11699418435,292.58994480246,299.2095086599,305.97865699219,312.90112748358,319.98002733127,327.21907624411,334.6220906301,342.19239338178,349.93416455252,357.85087908811,365.94690831825,374.22588619981,382.6921630398,391.3502022376,400.20389001205,409.25811505631,418.51694141988,427.98548149913,437.66798531163,447.56979919346,457.69536764001,468.05001127562,478.63918904181,489.46765396188,500.54138513107,511.86535306771,523.4458104663],description:"31-tET with l.s. 8/7, 5/4, 4/3, 3/2, 8/5, 7/4, 2/1; equal weights"},cet39c:{frequencies:[261.6255653006,267.52919373065,273.56603860918,279.73910598956,286.05147140959,292.50627485027,299.10673210371,305.85612987468,312.75782903301,319.8152662872,327.03195662575,334.41149334841,341.95754947331,349.67388372612,357.56433846376,365.63284274659,373.88341429498,382.32016148985,390.94728541851,399.7690842757,408.78994578219,418.01436575232,427.44693588739,437.09235368188,446.9554220819,457.04105241293,467.35426952494,477.9002035559,488.68410850494,499.71135422907,510.98743222773,522.51795602393],description:"10th root of 5/4"},cet39d:{frequencies:[261.6255653006,267.55786538889,273.62467903016,279.82905628857,286.1741163878,292.66304927922,299.29911724561,306.08565654127,313.02607906932,320.12387409698,327.38261000985,334.80593610581,342.39758442978,350.16137164992,358.1012009765,366.22106412416,374.52504331879,383.0173133498,391.70214366901,400.58390053708,409.66704921865,418.95615622721,428.45589162089,438.17103135034,448.1064596598,458.26717154264,468.65827525256,479.28499487175,490.15267293726,501.26677312698,512.63288300643,524.25671683791],description:"31-tET with l.s. 5/4, 3/2, 7/4"},cet39e:{frequencies:[261.6255653006,267.56053134626,273.63013029147,279.83741943955,286.18551905392,292.67762672082,299.3170076044,306.10700082387,313.05102655064,320.15257723818,327.41522444303,334.84262641603,342.43851674365,350.20672153383,358.15114775562,366.27579142084],description:"15th root of 7/5, X.J. Scott"},cet44:{frequencies:[261.6255653006,268.36512159638,275.27829096782,282.369545742,289.64347345451,297.10477981732,304.75829176301,312.60896056742,320.66186505284,328.92221487359,337.3953538863,346.08676360706,355.00206675748,364.14703090225,373.52757218034,383.14975913231,393.01981662619,403.14412988459,413.52924861543,424.18189124916,435.1089492851,446.31749174973,457.81476976988,469.60822126365,481.70547575226,494.11435929576,506.84289955596,519.89933098975,533.2921001762],description:"least maximum error of 10.0911 cents to a set of 11-limit consonances"},cet45:{frequencies:[261.6255653006,268.55812265554,275.67437899809,282.97903853108,290.47742047479,298.17449463282,306.07552595385,314.18591889722,322.51122112969,331.05693609414,339.82928674186,348.83408706747],description:"11th root of 4/3"},cet45a:{frequencies:[261.6255653006,268.48547646737,275.52525683447,282.74962263341,290.1634137569,297.77159700127,305.57926939395,313.59166160814,321.8141414671,330.2522175402,338.9115428334,347.79791857637,356.91729810903,366.27579142084],description:"13th root of 7/5, X.J. Scott"},cet49:{frequencies:[261.6255653006,269.10883825956,276.80615518671,284.72363837915,292.86758524998,301.24447333711,309.86096545541,318.72391499615,327.84037137809,337.21758565441,346.86301628009,356.78433504421,366.98943317194,377.48642760107,388.28366743806,399.38974059878,410.81348063915,422.56397378117,434.65056613995,447.08287115744,459.87077724873,473.02445566714,486.55436859423,500.47127746122,514.78625150841,529.51067658945],description:"least squares fit primes 3-13"},cet49a:{frequencies:[261.6255653006,269.10939785623,276.80730639354,284.72541458317,292.8700212642,301.24760545475,309.86483150611,318.72855440416,327.84582522255,337.22389673177,346.87022916874,356.7924961714,366.99859088307,377.49663223147,388.29497138724,399.40219840734,410.82714906841,422.57891189558,434.66683539241,447.10053547759,459.8899031344,473.04511227892,486.57662785344,500.49521415122,514.81194337949,529.53820446742],description:"least squares fit primes 5-13"},cet49b:{frequencies:[261.6255653006,269.11089011973,276.81037630182,284.73015118141,292.87651740119,301.25595792767,309.87514121046,318.74092648901,327.86036925135,337.24072684885,346.88946427176,356.81426008988,367.0230125633,377.52384592787,388.3251168606,399.43542112995,410.86360043647,422.61874944911,434.71022304287,447.14764374346,459.94090938509,473.10020098719,486.63599085665,500.55905092174,514.88046130456,529.61161913871],description:"least squares fit primes 3-11"},cet51:{frequencies:[261.6255653006,269.45730810595,277.52349357863,285.8311397433,294.38747470873,303.19994295657,312.27621181854,321.62417814738,331.25197518754,341.1679796516,351.38081900843,361.89937898954,372.73281132023,383.89054168203,395.38227791356,407.21801845694,419.40806105693,431.96301172054,444.89379394488,458.21165822114,471.92819182319,486.05532888913,500.60536080461,515.59094689708,531.0251223827,546.92132188791,563.29337300176,580.1555203085,597.52243480304,615.40922665547,633.83145835774,652.80515826392,672.34683453572,692.47348950549,713.20263446921,734.55230492227,756.54107625132,779.18807989593,802.51301999392,826.53619052513,851.2784929682,876.7614544861,903.00724665589,930.0387047592,957.87934765022,986.55339821839,1016.08580446361,1046.5022612024],description:"47nd root of 4"},cet53:{frequencies:[261.6255653006,269.81714175785,278.26519897904,286.97776745533,295.963129115,305.22982618403],description:"5th root of 7/6, X.J. Scott"},cet54:{frequencies:[261.6255653006,269.96706985652,278.57452968396,287.45642599351,296.6215054241,306.0787984682,315.83762188043,325.9075894649,336.29862154621,347.0209567468,358.08515411748,369.5021153806,381.28308783765,393.43967739203,405.98385998242,418.92799580061,432.28483186346,446.06752886518,460.28966468743,474.96525012045,490.10874266572,505.73506369981,521.85960157932,538.49824405725,555.66738252045,573.38393096839,591.66534267587,610.52963091344,629.99537269573,650.08174791487,670.80854445602,692.19618110881,714.26572768264,737.03893002078,760.53821452531,784.78673539949,809.80838082331,835.62780061242,862.2704354823,889.76252234217,918.13114956434,947.40426420901,977.61070438283,1008.78022764847,1040.94354635268,1074.13233401713,1108.37929206026,1143.71815851921,1180.1837471134,1217.81198154093,1256.63993812708,1296.7058535394,1338.04920533515,1380.71072249048,1424.73243255855,1470.15770307252,1517.03129303135,1565.39936221354,1615.30956841503,1666.81108016015,1719.95463363144,1774.79258265191,1831.3789571042],description:"62nd root of 7"},cet54a:{frequencies:[36.70809598968,37.88151295543,39.09243955873,40.34207507177,41.63165640381,42.96246070241,44.33580570763,45.75305128262,47.21560103286,48.72490261351,50.28245077394,51.88978777214,53.5485051662,55.26024570942,57.02670371,58.84962859429,60.73082539186,62.67215683218,64.67554556259,66.74297456936,68.87649134796,71.07820847085,73.35030604133,75.69503428946,78.11471406483,80.61174171737,83.18858976192,85.8478097501,88.59203530858,91.42398271579,94.34645661434,97.36235078878,100.47465152683,103.6864411753,107.00089881505,110.42130694669,113.95105240089,117.59363027227,121.3526480812,125.23182656372,129.23500749643,133.36615476182,137.62935895249,142.02884224198,146.56895930934,151.25420649717,156.08922305851,161.0787965455,166.22786851013,171.54153558634,177.0250602084,182.68387207023,188.52357443227,194.5499507934,200.76896615752,207.18677957808,213.80974586608,220.64442297146,227.69757979185,234.97619765489,242.48748500016,250.23887937817,258.23805608937,266.49293732345,275.01169389411,283.8027624226,292.87484767725,302.23693268442,311.89828942495,321.86848086456,332.15738106504,342.77517792247,353.73238500089,365.03985405114,376.70877738729,388.75071142436,401.17757988308,414.00168763976,427.23573537822,440.89282237095,454.98647402737,469.53064564449,484.53973861665,500.02861758376,516.01261368641,532.50755680773,549.52977996323,567.09613827221,585.22402902787,603.93139550692,623.23676470498,643.1592524742,663.71858572717,684.9351219702,706.82987354375,729.42451222373,752.74141479803,776.80366927173,801.63510168485,827.26030448295,853.70464190233,880.99430375232],description:"101st root of 24"},cet54b:{frequencies:[261.6255653006,269.96795403263,278.5763544202,287.45924871019,296.62539133416,306.08381073387,315.84382837889,325.91506125677,336.30743300953,347.03118371184,358.09687996112,369.51542742358,381.29807310848,393.45642905887,406.00247545366,418.94857448076,432.30748251802,446.09236270275,460.31680056078,474.99480683953,490.14084702027,505.76984518255,521.89720128632,538.53880634615,555.71105808945,573.43088042607,591.71572697754,610.58361784146,630.05314440547,650.14349087612,670.87445318194,692.26646247798,714.3405894063,737.11858847932,760.62290389144,784.8766959018],description:"35th root of 3 or shrunk 22-tET"},cet55:{frequencies:[261.6255653006,270.01349691657,278.67035254505,287.60475577316,296.82560168354,306.34207552634,316.16365537714,326.30012507123,336.76157646737,347.55843063202,358.70144085484,370.20170518484,382.07067969055,394.32018111076,406.96241165943,420.00996255663,433.47583121124,447.37342422819,461.71658555081,476.51960046685,491.79721226214,507.56463983627,523.83758122386,540.63224654693,557.96536270557,575.85419620437,594.31655714751,613.37083662462,633.03601203256,653.33166919923,674.2780257851,695.8959359612,718.20693418482,741.23324143097,764.99779551626,789.52425640623,814.83705588084,840.96140460432,867.92332151557,895.74966491622,924.46813868508,954.10735043232,984.69681977767,1016.26701863443,1048.84937826003,1082.47635523452,1117.18144085251,1152.9992001672,1189.96531328939,1228.1165836432,1267.49101522141,1308.127826503],description:"51th root of 5"},cet55a:{frequencies:[261.6255653006,270.1234331478,278.89732210685,287.95619440582,297.30930820811,306.96622255393,316.93680165166,327.23123542864,337.86004496999,348.83408706747],description:"9th root of 4/3"},cet63:{frequencies:[261.6255653006,271.38398887572,281.50639381697,292.00635633712,302.89795903081,314.19580976213,325.91506125677,338.07143142496,350.68122444233,363.76135261718,377.32935907335,391.4034412791,406.00247545366,421.14604188408,436.85445118639,453.14877154631,470.05085697597,487.58337662462,505.76984518255,524.63465441916,544.20310589723,564.50144490757,585.55689566922,607.39769784277,630.05314440547,653.5536209391,677.93064638327,703.21691530872,729.44634176744,756.65410477833,784.8766959018],description:"30th root of 3 or stretched 19-tET"},cet63a:{frequencies:[261.6255653006,271.37251603396,281.48259278098,291.96932561311,302.84674360983,314.12940356828,325.83240291761,337.9714015469,350.5626427598,363.62297711023,377.1698766242,391.22147055517,405.79656146784,420.91465242294,436.59597307447,452.86150935499,469.73302118774,487.23308701689,505.38512383853,524.21342105699,543.74317298677,564.00051582303,585.01254970054,606.80739415229,629.41421305643,652.8632568014,677.18590276436,702.41470135475,728.58340348685,755.72702964881,783.88190097186,813.08569174348,843.37747981977,874.79780396885,907.38869808556,941.19377721109,976.25827622702,1012.62911525602,1050.35496244617,1089.48630538731,1130.07549372248,1172.17684627813,1215.84669925421,1261.14348767523,1308.127826503],description:"44th root of 5"},cet67:{frequencies:[261.6255653006,271.89449162354,282.56647812794,293.65734341902,305.18353207836,317.16212905639,329.61089159214,342.54827390456,355.99345454941,369.96636271272,384.48771622149,399.57903967613,415.26270466472,431.56196087069,448.50096908674],description:"14th root of 12/7, X.J. Scott"},cet70:{frequencies:[261.6255653006,272.49048247121,283.80660334964,295.59266404146,307.86818385681,320.65348759128,333.96974580612,347.83900623503,362.28423824861,377.32935907335,392.99928119148,409.31995166322,426.31839262878,444.02275580482,462.46235461904,481.66772230429,501.67065719504,522.50428685614,544.20310589723,566.80304433509,590.34152430617,614.85751848055,640.39162865951,666.98613212152,694.68506540856,723.53429383412,753.58158307649,784.8766959018],description:"27th root of 3"},cet78:{frequencies:[261.6255653006,273.68177330057,286.29355449603,299.48651076576,313.28742377221,327.72430932822,342.82647426905,358.62457594514,375.15068445646,392.4383479509],description:"9th root of 3/2"},cet79:{frequencies:[261.6255653006,273.87994580863,286.70831230381,300.13755324878,314.19580976213,328.91254817579,344.3186075731,360.44627930254,377.32935907335,395.0032340925,413.50494015483,432.87325713404,453.14877154631,474.3739811962,496.5933637384,519.85349135637,544.20310589723,569.69324454502,596.37732215892,624.31126899512,653.5536209391,684.16567043124,716.21156534988,749.7584744066,784.8766959018],description:"24th root of 3, James Heffernan (1906)."},cet80:{frequencies:[261.6255653006,273.93704112612,286.82786567404,300.32530171503,314.4578949408,329.25553433534,344.74951538696,360.97260627516,377.95911717185,395.74497280393,414.36778843034,433.8669493945,454.28369442026,475.66120282759,498.04439817054,521.48118104407,546.02084308555,571.71528316122,598.61884237431,626.7884189909,656.28358877393,687.16673097983,719.50316028422,753.36126491573,788.81265129014,825.93229545055,864.79870163404,905.49406830005,948.10446197172,992.7199992577,1039.43503743958,1088.34837402783,1139.56345570838,1193.18859712177,1249.33720993748,1308.127826503],description:"35th root of 5"},cet84:{frequencies:[261.6255653006,274.70153691096,288.43104187674,302.84674360983,317.98293803021,333.87563322966,350.5626427598,368.08366429725,386.48038152577,405.79656146784,426.0781586093,447.37342422819,469.73302118774,493.21014446673,517.86064472263,543.74317298677,570.91930267857,599.45368763079,629.41421305643,660.87215705217,693.9023601738,728.58340348685,764.99779551626,803.23216389999,843.37747981977,885.52924725223,929.78774807537,976.25827622702,1025.05138820617,1076.28316609431,1130.07549372248,1186.55634664103,1245.86008938569,1308.127826503],description:"33rd root of 5"},cet87:{frequencies:[261.6255653006,275.05808287728,289.18026151691,304.0275068203,319.63704721237,336.04802279017,353.30157737897,371.44097305523,390.51169339433,410.56155044631,431.64081781968,453.80235066263,477.10170997643,501.59731726833,527.35059397819,554.42610593952],description:"Least-squares stretched ET to telephone dial tones. 1/1=697 Hz"},cet88:{frequencies:[261.6255653006,275.26799068863,289.6217982776,304.72408298441,320.61387403473,337.33223582731,354.92237405774,373.42974737602,392.90218486657,413.39000965417,434.94616895528,457.62637091093,481.48922855473,506.59641128799,533.01280425363],description:"88 cents steps by Gary Morrison"},cet88_appr:{frequencies:[261.6255653006,275.62199471997,290.69507255622,305.22982618403,320.49131749323,336.37572681506,354.37113606854,373.75080757229,392.4383479509,413.43299207996,436.04260883433,457.84473927605,482.33849075995,504.56359022259,531.55670410281,560.62621135843,588.65752192635,620.14948811994,654.0639132515,686.76710891407,723.50773613993,763.07456546008,801.22829373309],description:"88 cents scale approximated"},cet88b:{frequencies:[261.6255653006,275.26385669298,289.61326650562,304.7105300898,320.59498481995,337.30729585456,354.89100872976,373.39113880701,392.85588995712,413.33509311257,434.8821088097,457.55209870333,481.40413163568,506.49927024418,532.9029023296],description:"87.9745 cents steps. Least squares of 7/6, 11/9, 10/7, 3/2, 7/4."},cet88bis:{frequencies:[261.6255653006,289.53272725508,320.41669955092,337.26306895804,373.23835706057,392.86190344834,434.76782633734,457.62637091093],description:"Bistep approximation of 2212121 mode in 7/4 to 11/9 9/7 10/7 3/2"},cet88bm:{frequencies:[261.6255653006,275.22889829239,289.53954239223,304.59427454323,320.43178392135,337.09277136281,354.62005396115,373.05867644715,392.45602022512,412.86193859025,434.32887139488,456.91198653787,480.66932039657,505.66192697453,531.95403480429],description:"87.75412 cents steps. Minimal highest deviation for 7/6, 11/9, 10/7, 3/2, 7/4."},cet88c:{frequencies:[261.6255653006,275.37188725148,289.84046967782,305.06925821769,321.09819727018,337.96933026971,355.72690383892,374.4174952616,394.09012940783,414.79640018179,436.59061916193,459.52995194191,483.67455974508,509.0877727469,535.83624905561,563.99013984227,593.62329144382,624.813430743,657.64235771869,692.19618110881,728.56553457307,766.84580121693,807.13738838693,849.54597972796,894.18279699007,941.16492045434,990.61558284509,1042.66447461031,1097.44811755542,1155.11020756021,1215.8019705522,1279.68259818323,1346.91964745566,1417.68945580607,1492.17764912727,1570.57960775359,1653.10095047047,1739.95812689496,1831.3789571042],description:"38th root of 7. McLaren 'Microtonal Music', volume 3, track 7"},cet89:{frequencies:[261.6255653006,275.56724848068,290.25186566903,305.71900507847,322.01036982349,339.16988002511,357.2437980159,376.28084921395,396.33236207144,417.45239374596,439.69788420361,463.12880499146,487.80833148705,513.80299757552,541.1828853206,570.0218080747,600.39752248465,632.39191886931,666.09125466774,701.58637981228,738.97299766656,778.35189934333,819.82925103406,863.51687139942,909.53255273344,958.00034936337,1009.05093129669,1062.82192563509,1119.45831186524,1179.11277682321,1241.94614996535,1308.127826503],description:"31st root of 5. McLaren 'Microtonal Music', volume 2, track 22"},cet90:{frequencies:[261.6255653006,275.62199471997,290.36720431405,305.90125228146,322.26633935092,339.50692625527,357.66984706396,376.80444887746,396.96271256675,418.19939952297,440.572208006,464.1419130862,488.97255163391,515.13157534193,542.69005603758,571.72285881831,602.3088534069,634.53113933145],description:"Scale with limma steps"},cet93:{frequencies:[261.6255653006,275.99488223824,291.15340824655,307.14448922429,324.01384989472,341.80973194459,360.58302103444,380.38739950036,401.27949808494,423.31905787312],description:"Tuning used in John Chowning's STRIA, 9th root of Phi"},cet98:{frequencies:[261.6255653006,276.83245825991,292.92324815749,309.94930780463,327.96500300935,347.02785219778,367.1987248383,388.54202015806,411.12588832951],description:"8th root of 11/7, X.J. Scott"},chahargah:{frequencies:[261.6255653006,277.18263097687,283.66146785671,311.12698372208,326.97270111135,348.82502010853,367.86341164695,392.44854854484,415.30469757995,425.01198472693,466.16376151809,493.88330125613,523.2511306012],description:"Chahargah in C"},chahargah2:{frequencies:[261.6255653006,283.66146785671,327.729041887,348.82502010853,392.44854854484,425.01198472693,493.88330125613,523.2511306012],description:"Dastgah Chahargah in C, Mohammad Reza Gharib"},chalmers:{frequencies:[261.6255653006,274.70684356563,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,515.07533168556,523.2511306012],description:"Chalmers' 19-tone with more hexanies than Perrett's Tierce-Tone"},chalmers_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,313.95067836072,327.03195662575,336.37572681506,343.38355445704,376.74081403286,384.42940207435,392.4383479509,400.61414686654,408.78994578219,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"7-limit figurative scale, Chalmers '96 Adnexed S&H decads"},chalmers_19:{frequencies:[261.6255653006,269.10058145205,290.69507255622,294.32876096318,305.22982618403,313.95067836072,336.37572681506,348.83408706747,356.10146388137,363.36884069528,376.74081403286,384.42940207435,392.4383479509,406.97310157871,436.04260883433,448.50096908674,465.11211608996,470.92601754108,508.71637697339,523.2511306012],description:"7-limit figurative scale. Reversed S&H decads"},chalmers_csurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,315.80837468238,323.38635505005,348.83408706747,357.38803216938,383.0466618906,392.4383479509,423.31690179539,433.47765231178,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Combined Surd Scale, combination of Surd and Inverted Surd, JHC, 26-6-97"},chalmers_isurd:{frequencies:[261.6255653006,273.35108123154,287.04667286017,303.37994773979,323.38635505005,348.83408706747,383.0466618906,433.47765231178,523.2511306012],description:"Inverted Surd Scale, of the form 4/(SQRT(N)+1, JHC, 26-6-97"},chalmers_ji1:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,466.02053819169,490.54793493862,523.2511306012],description:"Based loosely on Wronski's and similar JI scales, May 2, 1997."},chalmers_ji3:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"15 16 17 18 19 20 21 on 1/1, 15-20 on 3/2, May 2, 1997. See other scales"},chalmers_ji4:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,496.11959049595,523.2511306012],description:"15 16 17 18 19 20 on 1/1, same on 4/3, + 16/15 on 16/9"},chalmers_surd:{frequencies:[261.6255653006,315.80837468238,357.38803216938,392.4383479509,423.31690179539,451.2357321491,476.91154755397,500.80604115761,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/2, JHC, 26-6-97"},chalmers_surd2:{frequencies:[261.6255653006,272.2395613933,282.33485096279,291.98077704337,301.23248980765,310.13469895524,318.72425558532,327.03195662575,335.08385052998,342.90220911983,350.50624086893,357.91266581346,365.13613061818,372.18956061116,379.08442465499,385.8309605564,392.4383479509,398.91485744029,405.26796981327,411.50448329997,417.63058822561,423.65195171798,429.57376586736,435.40081471708,441.13750301549,446.78791303515,452.35581962987,457.84473927605,463.2579384726,468.59846621725,473.86917438523,479.07273156015,484.21164154672,489.28825377326,494.3047826718,499.26331035461,504.16580309972,509.01411882861,513.81001953884,518.55516185524,523.2511306012],description:"Surd Scale, Surds of the form (SQRT(N)+1)/4"},chalung:{frequencies:[261.6255653006,328.09251713275,362.03316295439,390.31715077734,479.41117101029,527.4935758042,647.70012555753,728.30917696308,823.06004869243,961.65052057178,1054.9871516084,1301.05663342451],description:'Tuning of chalung from Tasikmalaya. "slendroid". 1/1=185 Hz'},chaumont:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.49749487796,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.40109831725,489.02683710225,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 1st interpretation"},chaumont2:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.30531842668,327.84547867349,349.70184487387,366.99801003998,391.46454285105,410.8262805401,438.2147004401,465.11211608996,490.54793493862,523.2511306012],description:"Lambert Chaumont organ temperament (1695), 2nd interpretation"},chimes:{frequencies:[261.6255653006,288.69027895239,130.8127826503,144.34513947619],description:"Heavenly Chimes"},chimes_peck:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,1046.5022612024],description:"Kris Peck, 9-tone windchime tuning. TL 7-3-2001"},chin_12:{frequencies:[261.6255653006,277.05457499359,293.57996645301,310.53449241474,329.24697610111,347.79893712036,368.97000115401,391.76907592069,413.1274313058,439.00991514661,462.11551390967,491.43599249807,523.2511306012],description:"Chinese scale, 4th cent."},chin_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,441.49314144476,523.2511306012],description:"Chinese pentatonic from Zhou period"},chin_60:{frequencies:[261.6255653006,262.17244551937,265.19499215873,268.81311753311,272.48060600886,276.1981310001,279.38237857051,283.19406633357,287.05775848811,290.97416342694,294.32876096318,294.94400091442,298.34436617857,302.41475692242,306.54068145351,310.72289706448,314.30517589183,318.59332496145,322.93997797627,327.34593352805,331.11985608357,331.812000697,335.63741195089,340.21660119759,344.85826629043,349.56326086722,353.59332287831,358.41749022331,363.30747486009,368.26417485089,372.50983809402,373.28850041093,377.59208844475,382.74367817547,387.96555142985,392.4383479509,393.25866808247,397.79248823809,403.21967609811,408.72090880899,414.29719629306,419.07356785577,424.79110016094,430.58663751693,436.46124492224,441.49314144476,442.41600115048,447.51654926786,453.62213515688,459.81102195042,466.08434536373,471.45776383774,477.8899872033,484.40996672226,491.01890004663,496.67978412536,497.7180007967,503.45611792634,510.32490448905,517.28740216504,523.2511306012],description:'Chinese scale of fifths (the 60 lu")'},chin_7:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Chinese heptatonic scale and tritriadic of 64:81:96 triad"},chin_bianzhong:{frequencies:[261.6255653006,277.82379926216,312.56802260838,375.1593523779,420.13030572059,469.40618689596,506.59641128799,563.72967895209,627.66881138238,764.75812197709,849.53311813274,949.1724262561,1225.95732655636],description:"Pitches of Bianzhong bells (Xinyang). 1/1=b, Liang Mingyue, 1975."},chin_bianzhong2a:{frequencies:[261.6255653006,284.81073476233,312.56802260838,372.56793743951,413.39000965417,447.94973572445,491.60634075178,562.75365576207,652.05945856061,695.63805470995,863.88355261715,960.75607282217,1173.30283584026],description:"A-tones (GU) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=d#=619 Hz"},chin_bianzhong2b:{frequencies:[261.6255653006,279.59231184543,312.74738729016,375.37536096215,418.43048063126,468.86028020615,505.12945327459,562.08698385796,624.42058858709,762.97988553915,849.53425657971,936.08862980659,1215.37624187632],description:"B-tones (SUI) of 13 Xinyang bells (Ma Cheng-Yuan) 1/1=b+=506.6 Hz"},chin_bianzhong3:{frequencies:[261.6255653006,508.3551866238,542.32970395878,608.04166718582,619.02750937577,673.88551872153,729.80120031671,739.56153452917,812.57643344187,881.52624580654,911.03313298042,978.11461117351,982.0774855146,1059.88575280263,1092.20381072382,1163.18085489566,1213.27682870749,1331.52122774489,1483.40111876828,1542.82606951623,1645.93659621657,1649.74391394557,1818.91159982256,2044.01922018919,2273.22753490632,2362.92760489328,2776.13057951436],description:"A and B-tones of 13 Xinyang bells (Ma Cheng-Yuan) abs. pitches wrt middle-C"},chin_bronze:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:`Scale found on ancient Chinese bronze instrument 3rd c.BC & "Scholar's Lute"`},chin_chime:{frequencies:[261.6255653006,248.6592656401,341.74499057264,392.56190849927,548.78974538591,648.86582834888,714.36935367713,785.57745330134,889.7110417619,886.88898199546,992.62825668803,1044.08711871947,1326.14827969763],description:"Pitches of 12 stone chimes, F. Kuttner, 1951, ROMA Toronto. %1=b4"},chin_ching:{frequencies:[261.6255653006,276.1981310001,294.32876096318,310.72289706448,331.11985608357,349.56326086722,368.26417485089,392.4383479509,414.29719629306,441.49314144476,466.08434536373,496.67978412536,524.34489103873],description:"Scale of Ching Fang, c.45 BC. Pyth.steps 0 1 2 3 4 5 47 48 49 50 51 52 53"},chin_di:{frequencies:[261.6255653006,298.70635408336,316.56004827153,360.50766037677,409.94872043165,433.75364775074,527.37121036213],description:"Chinese di scale"},chin_di2:{frequencies:[261.6255653006,289.95657583698,318.21537073485,338.89464890898,383.48501130814,436.9606979923,494.73987775324,522.04355935974],description:"Observed tuning from Chinese flute dizi, Helmholtz/Ellis p. 518, nr.103"},chin_huang:{frequencies:[261.6255653006,331.11985608357,392.4383479509,441.49314144476,523.2511306012,588.65752192635,662.23971216714],description:"Huang Zhong qin tuning"},"chin_liu-an":{frequencies:[261.6255653006,278.83777354406,294.32876096318,311.64221749042,331.11985608357,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067],description:'Scale of Liu An, in: "Huai Nan Tzu", c.122 BC, 1st known corr. to Pyth. scale'},chin_lu:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,495.71159741166,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Huai Nan zi, Han era. P\xEF\xBF\xBDre Amiot 1780, Kurt Reinhard"},chin_lu2:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Chinese L\xEF\xBF\xBD (Lushi chunqiu, by Lu Buwei). Mingyue: Music of the billion, p.67"},chin_lu3:{frequencies:[261.6255653006,277.34278419245,293.66476791741,310.58830860439,329.24697610111,347.81902735497,369.14054089803,391.76907592069,413.1512951712,439.23819834286,462.1422075194,491.60634075178,523.2511306012],description:"Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, reported in Sung Shu (500 AD)"},chin_lu3a:{frequencies:[261.6255653006,277.06033146978,293.58830182213,310.53780743131,329.25144446584,347.79484055318,368.74579520635,391.78066943209,413.13681807919,438.99947255393,462.1072190611,491.17907538715,523.2511306012],description:`Chinese L\xEF\xBF\xBD scale by Ho Ch'\xEF\xBF\xBDng-T'ien, calc. basis is "big number" 177147`},chin_lu4:{frequencies:[261.6255653006,276.78521684908,293.5444075184,310.55356739316,329.35741152087,348.44172229085,369.5396750577,391.9150968203,414.62425518576,439.72952246257,465.20924434298,493.37740286979,523.2511306012],description:'Chinese L\xEF\xBF\xBD "749-Temperament"'},chin_lu5:{frequencies:[261.6255653006,277.35401920913,293.41471131112,311.37240624271,329.40299530711,349.20610523279,369.80535913035,392.03738806826,415.16320853113,440.12206674667,466.08434536373,494.10449271367,522.71643616375],description:"Chinese L\xEF\xBF\xBD scale by Ch'ien Lo-Chih, c.450 AD Pyth.steps 0 154 255 103 204 etc."},chin_lusheng:{frequencies:[261.6255653006,316.38258506467,348.82502010853,389.28772571905,466.97226207056,520.53801357752],description:"Observed tuning of a small Lusheng, 1/1=d, OdC '97"},chin_pan:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Pan Huai-su pure system, in: Sin-Yan Shen, 1991"},chin_pipa:{frequencies:[261.6255653006,284.4818984792,320.42873367481,380.17671965621,433.44136952667,521.74210224793],description:"Observed tuning from Chinese balloon lute p'i-p'a, Helmholtz/Ellis p. 518, nr.109"},chin_sheng:{frequencies:[261.6255653006,295.36595061166,318.03161540472,348.82502010853,395.40657391157,442.03793673691,477.05982293263,522.94897617031],description:"Observed tuning from Chinese sheng or mouth organ, Helmholtz/Ellis p. 518, nr.105"},chin_sientsu:{frequencies:[261.6255653006,291.80478157373,326.97270111135,392.44854854484,438.22451411849,523.2511306012],description:"Observed tuning from Chinese tamboura sienzi, Helmholtz/Ellis p. 518, nr.108"},chin_sona:{frequencies:[261.6255653006,284.4818984792,310.58830860439,337.33223582731,377.98706287655,418.43499793376,469.94877954106,528.10941333272],description:"Observed tuning from Chinese oboe (so-na), Helmholtz/Ellis p. 518, nr.104"},"chin_wang-po":{frequencies:[261.6255653006,294.32876096318,330.24264909897,371.97947673071,392.4383479509,440.94196398978,495.71159741166,517.50111817701],description:"Scale of Wang Po, 958 AD. H. Pischner: Musik in China, Berlin, 1955, p.20"},chin_yangqin:{frequencies:[261.6255653006,288.45311779165,306.48933163909,347.41744306689,383.26356564167,434.44398956347,465.08793784701,522.64699622026],description:"Observed tuning from Chinese dulcimer yangqin, Helmholtz/Ellis p. 518, nr.107"},chin_yunlo:{frequencies:[261.6255653006,288.45311779165,323.40385076956,367.0144478307,386.1523605003,409.35055662695,483.1608380663,525.67465946865],description:"Observed tuning from Chinese gong-chime (y\xEF\xBF\xBDn-lo), Helmholtz/Ellis p. 518, nr.106"},choquel:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,475.68284600109,490.54793493862,523.2511306012],description:"Choquel/Barbour/Marpurg?"},chordal:{frequencies:[261.6255653006,392.4383479509,327.03195662575,457.84473927605,588.65752192635,719.47030457665,850.28308722695,981.09586987725,981.09586987725,490.54793493862,555.95432626377,621.36071758893,310.68035879446,523.2511306012,348.83408706747,418.60090448096,299.00064605783,465.11211608996,380.54627680087,322.00069575458,279.06726965397,610.45965236807,915.6894785521,872.08521766867,697.66817413493,654.0639132515,627.90135672144,448.50096908674,319.76457981184,377.90359432309,444.76346101102,889.52692202204,336.37572681506,294.32876096318,465.11211608996,411.12588832951,305.22982618403,366.27579142084,373.75080757229,313.95067836072,470.92601754108],description:"Chordal Notes S&H"},chrom15:{frequencies:[261.6255653006,280.31310567921,301.87565226992,356.76213450082,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Tonos-15 Chromatic"},chrom15_inv:{frequencies:[261.6255653006,313.95067836072,331.39238271409,348.83408706747,383.71749577421,453.48431318771,488.36772189445,523.2511306012],description:"Inverted Chromatic Tonos-15 Harmonia"},chrom15_inv2:{frequencies:[261.6255653006,279.06726965397,296.50897400735,348.83408706747,383.71749577421,401.15920012759,418.60090448096,523.2511306012],description:"A harmonic form of the Chromatic Tonos-15 inverted"},chrom17:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Tonos-17 Chromatic"},chrom17_con:{frequencies:[261.6255653006,277.97716313189,296.50897400735,370.63621750918,386.75083566176,404.33041910093,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Chromatic"},chrom19:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,382.37582620857,397.67085925691,414.24047839262,523.2511306012],description:"Tonos-19 Chromatic"},chrom19_con:{frequencies:[261.6255653006,276.16031892841,292.40504357126,355.06326719367,368.21375857121,382.37582620857,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Chromatic"},chrom21:{frequencies:[261.6255653006,274.70684356563,289.16509849014,343.38355445704,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Tonos-21 Chromatic"},chrom21_inv:{frequencies:[261.6255653006,323.91736656265,336.37572681506,348.83408706747,398.6675280771,473.41768959156,498.33441009638,523.2511306012],description:"Inverted Chromatic Tonos-21 Harmonia"},chrom21_inv2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,398.6675280771,423.58424858192,448.50096908674,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-21"},chrom23:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,376.08675011961,401.15920012759,429.81342870813,523.2511306012],description:"Tonos-23 Chromatic"},chrom23_con:{frequencies:[261.6255653006,273.51763645063,286.54228580542,334.29933343966,353.96400011258,376.08675011961,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Chromatic"},chrom25:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,408.78994578219,436.04260883433,467.18850946536,523.2511306012],description:"Tonos-25 Chromatic"},chrom25_con:{frequencies:[261.6255653006,278.32506946872,297.30177875068,363.36884069528,384.74347838324,408.78994578219,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Chromatic"},chrom27:{frequencies:[261.6255653006,277.01530443593,294.32876096318,353.19451315581,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Tonos-27 Chromatic"},chrom27_inv:{frequencies:[261.6255653006,310.07474405997,329.45441556372,348.83408706747,387.59343007496,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Chromatic Tonos-27 Harmonia"},chrom27_inv2:{frequencies:[261.6255653006,271.31540105247,281.00523680435,348.83408706747,387.59343007496,406.97310157871,436.04260883433,523.2511306012],description:"Inverted harmonic form of the Chromatic Tonos-27"},chrom29:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,379.35706968587,399.32323124828,421.50785520652,523.2511306012],description:"Tonos-29 Chromatic"},chrom29_con:{frequencies:[261.6255653006,270.96933548991,281.00523680435,344.87006335079,361.29244731988,379.35706968587,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Chromatic"},chrom31:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,405.51962621593,523.2511306012],description:"Tonos-31 Chromatic. Tone 24 alternates with 23 as MESE or A"},chrom31_con:{frequencies:[261.6255653006,279.66870773512,300.3849083081,337.93302184661,352.6257619269,368.65420565085,386.2091678247,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Chromatic"},chrom33:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,392.4383479509,411.12588832951,431.68218274599,523.2511306012],description:"Tonos-33 Chromatic. A variant is 66 63 60 48"},chrom33_con:{frequencies:[261.6255653006,278.50463402967,297.71185016965,359.73515228832,375.37581108347,392.4383479509,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Chromatic"},chrom_new:{frequencies:[261.6255653006,273.20871865617,297.93622032612,349.22823143301,391.99543598175,409.35055662695,446.39994737251,523.2511306012],description:"New Chromatic genus 4.5 + 9 + 16.5"},chrom_new2:{frequencies:[261.6255653006,273.6474710507,299.37374239667,349.22823143301,391.99543598175,410.00794244467,448.55379686399,523.2511306012],description:"New Chromatic genus 14/3 + 28/3 + 16 parts"},chrom_soft:{frequencies:[261.6255653006,271.68808704293,282.55561052465,348.83408706747,392.4383479509,407.5321305644,423.83341578697,523.2511306012],description:"100/81 Chromatic. This genus is a good approximation to the soft chromatic"},chrom_soft2:{frequencies:[261.6255653006,268.42893440103,282.57118533961,349.22823143301,391.99543598175,402.18897205153,423.37840671577,523.2511306012],description:"1:2 Soft Chromatic"},chrom_soft3:{frequencies:[261.6255653006,271.31540105247,281.75060878526,348.83408706747,392.4383479509,406.97310157871,422.62591317789,523.2511306012],description:"Soft chromatic genus is from K. Schlesinger's modified Mixolydian Harmonia"},cifariello:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"F. Cifariello Ciardi, ICMC 86 Proc. 15-tone 5-limit tuning"},ckring1:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring with common pivot of 4:5:6:7 = square 1 3 5 7"},ckring2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,436.04260883433,448.50096908674,470.92601754108,523.2511306012],description:"Double-tie circular mirroring with common pivot of 3:5:7:9"},"clampitt-phi":{frequencies:[261.6255653006,289.46753582364,320.2724252102,340.92857683151,377.20990650852,444.26963537301,491.54843559637,523.2511306012],description:'David Clampitt, phi+1 mod 3phi+2, from "Pairwise Well-Formed Scales", 1997'},classr:{frequencies:[261.6255653006,275.93321340298,287.4304306281,313.95067836072,327.03195662575,344.91651675372,367.91095120397,392.4383479509,408.78994578219,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"Marvel projection to the 5-limit of class"},cluster:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"13-tone 5-limit Tritriadic Cluster"},cluster6a:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:6"},cluster6b:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Six-Tone Triadic Cluster 4:6:5"},cluster6c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,418.60090448096,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:4:5"},cluster6d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Six-Tone Triadic Cluster 3:5:4"},cluster6e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:8"},cluster6f:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Six-Tone Triadic Cluster 5:8:6"},cluster6g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:5:7"},cluster6h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Six-Tone Triadic Cluster 4:7:5"},cluster6i:{frequencies:[261.6255653006,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,523.2511306012],description:"Six-Tone Triadic Cluster 5:6:7"},cluster6j:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,436.04260883433,439.53094970501,523.2511306012],description:"Six-Tone Triadic Cluster 5:7:6"},cluster8a:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:6"},cluster8b:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,392.4383479509,408.78994578219,418.60090448096,490.54793493862,523.2511306012],description:"Eight-Tone Triadic Cluster 4:6:5"},cluster8c:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,363.36884069528,418.60090448096,436.04260883433,484.4917875937,523.2511306012],description:"Eight-Tone Triadic Cluster 3:4:5"},cluster8d:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Eight-Tone Triadic Cluster 3:5:4"},cluster8e:{frequencies:[261.6255653006,313.95067836072,327.03195662575,334.88072358477,392.4383479509,401.85686830172,418.60090448096,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:8"},cluster8f:{frequencies:[261.6255653006,301.39265122629,313.95067836072,348.83408706747,376.74081403286,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"Eight-Tone Triadic Cluster 5:8:6"},cluster8g:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Eight-Tone Triadic Cluster 4:5:7"},cluster8h:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,457.84473927605,523.2511306012],description:"Eight-Tone Triadic Cluster 4:7:5"},cluster8i:{frequencies:[261.6255653006,307.67166479351,313.95067836072,366.27579142084,373.75080757229,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Eight-Tone Triadic Cluster 5:6:7"},cluster8j:{frequencies:[261.6255653006,263.718569823,305.22982618403,313.95067836072,366.27579142084,376.74081403286,436.04260883433,439.53094970501,523.2511306012],description:"Eight-Tone Triadic Cluster 5:7:6"},cohenf_11:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:`Flynn Cohen, 7-limit scale of "Rameau's nephew", 1996`},coleman:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,491.89038573682,523.2511306012],description:"Jim Coleman's ModX piano temperament. TL 16 Mar 1999"},collengettes:{frequencies:[261.6255653006,269.10058145205,275.62199471997,285.40970760065,294.32876096318,302.73815413355,310.07474405997,321.08592105074,331.11985608357,340.58042340025,348.83408706747,358.80077526939,367.49599295996,380.54627680087,392.4383479509,403.65087217807,413.43299207996,428.11456140098,441.49314144476,454.10723120033,465.11211608996,478.40103369253,496.67978412536,507.3950357345,523.2511306012],description:"R.P. Collengettes, from p.23 of d'Erlanger, vol 5. 24 tone Arabic system"},colonna1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,308.86351459099,327.03195662575,348.83408706747,363.36884069528,392.4383479509,399.70572476481,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Colonna 1"},colonna2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Colonna 2"},concertina:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"English Concertina, Helmholtz/Ellis, p. 470"},cons11:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 11 not exceeding 2/1"},cons12:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 12 not exceeding 2/1"},cons13:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,523.2511306012],description:"Set of intervals with num + den <= 13 not exceeding 2/1"},cons14:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 14 not exceeding 2/1"},cons15:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 15 not exceeding 2/1"},cons16:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Set of intervals with num + den <= 16 not exceeding 2/1"},cons17:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 17 not exceeding 2/1"},cons18:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 18 not exceeding 2/1"},cons19:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Set of intervals with num + den <= 19 not exceeding 2/1"},cons20:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 20 not exceeding 2/1"},cons21:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Set of intervals with num + den <= 21 not exceeding 2/1"},cons8:{frequencies:[261.6255653006,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 8 not exceeding 2/1"},cons9:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Set of intervals with num + den <= 9 not exceeding 2/1"},cons_5:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Set of consonant 5-limit intervals within the octave"},cons_7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals of tetrad 4:5:6:7 and inverse"},cons_7a:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605],description:"Set of consonant 7-limit intervals, harmonic entropy minima"},cont_frac1:{frequencies:[261.6255653006,264.29672053658,267.01859068163,284.39991302433,288.64312378534,304.51680721446,328.36325429535,342.47239171077,368.24757473349,390.36247006958,408.23697512781,419.80330474394,448.3033221197,488.42606438843,498.20005830409],description:"Continued fraction scale 1, see McLaren in Xenharmonikon 15, pp.33-38"},cont_frac2:{frequencies:[261.6255653006,268.67076720771,283.00159623424,287.78825007941,303.56038377389,306.30898587133,329.63288816559,333.85601282718,352.97051886932,380.09613548074,393.10104267352,426.45795861378,432.83315799354,472.91012288255,483.94654132265,519.4303061261],description:"Continued fraction scale 2, see McLaren in Xenharmonikon 15, pp.33-38"},cordier:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Serge Cordier, piano tuning, 1975 (Piano bien temp\xEF\xBF\xBDr\xEF\xBF\xBD et justesse orchestrale)"},corner11:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,343.38355445704,359.73515228832,392.4383479509,400.61414686654,408.78994578219,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 11-limit. Chalmers '96"},corner13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 13-limit. Chalmers '96"},corner17:{frequencies:[261.6255653006,265.71346475842,269.80136421624,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,347.47145391486,359.73515228832,371.99885066179,382.21859930635,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,449.66894036041,451.71289008932,457.84473927605,486.4600354808,490.54793493862,494.63583439645,523.2511306012],description:"Quadratic Corner 17-limit."},corner17a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,275.93321340298,277.97716313189,286.15296204753,292.28481123426,294.32876096318,295.35073582763,306.59245933664,312.72430852337,314.76825825228,318.85615771011,327.03195662575,331.11985608357,337.2517052703,343.38355445704,345.42750418595,347.47145391486,359.73515228832,367.91095120397,371.99885066179,382.21859930635,392.4383479509,398.57019713763,400.61414686654,404.70204632437,408.78994578219,416.96574469783,425.14154361347,429.2294430713,441.49314144476,449.66894036041,451.71289008932,457.84473927605,459.88868900496,478.28423656516,486.4600354808,490.54793493862,494.63583439645,515.07533168556,521.20718087229,523.2511306012],description:"Quadratic Corner 17 odd limit."},corner7:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,392.4383479509,400.61414686654,408.78994578219,457.84473927605,490.54793493862,523.2511306012],description:"Quadratic corner 7-limit. Chalmers '96"},corner9:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"First 9 harmonics of 5th through 9th harmonics"},corners11:{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,286.15296204753,294.32876096318,299.00064605783,304.4370214407,314.76825825228,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,434.91003062957,449.66894036041,457.84473927605,465.11211608996,478.40103369253,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Quadratic Corners 11-limit. Chalmers '96"},corners13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,398.6675280771,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"Quadratic Corners 13-limit. Chalmers '96"},corners7:{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Quadratic Corners 7-limit. Chalmers '96"},corrette:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.33704984564,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Corrette temperament"},corrette2:{frequencies:[261.6255653006,272.8349596094,292.34127285051,310.42509491746,326.6631048533,350.01785633742,365.01443422269,391.11111150212,409.71484950008,437.02884834934,466.16376151809,488.33748205014,523.2511306012],description:"Michel Corrette, modified meantone temperament (1753)"},coul_12:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,340.65828815182,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 5/4 3/2 2 successively split largest intervals by smallest interval"},coul_12a:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Scale 1 6/5 3/2 2 successively split largest intervals by smallest interval"},coul_12sup:{frequencies:[261.6255653006,280.31310567921,294.32876096318,310.68035879446,331.39238271409,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,466.02053819169,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean scale. Op de Coul, 2003"},coul_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical 13-tone 5-limit just system"},coul_17sup:{frequencies:[261.6255653006,276.16031892841,279.06726965397,294.57100685697,310.07474405997,313.95067836072,331.39238271409,348.83408706747,368.21375857121,372.08969287196,392.76134247596,413.43299207996,418.60090448096,441.85651028546,465.11211608996,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular approximation to Pythagorean 17-tone scale. Op de Coul, 2003"},coul_20:{frequencies:[261.6255653006,277.18263097687,282.2367833559,293.66476791741,305.55548036855,311.12698372208,329.62755691287,335.63799088232,349.22823143301,363.36884069528,369.99442271164,391.99543598175,399.14308682247,415.30469757995,432.12070439462,440,466.16376151809,474.66379875343,493.88330125613,513.88101620607,523.2511306012],description:"Tuning for a 3-row symmetrical keyboard, Op de Coul, 1989"},coul_27:{frequencies:[261.6255653006,275.62199471997,275.93321340298,279.06726965397,293.99679436797,294.32876096318,310.07474405997,310.42486507835,327.03195662575,330.74639366397,331.11985608357,348.83408706747,367.49599295996,367.91095120397,372.08969287196,372.50983809402,392.4383479509,413.43299207996,413.89982010446,418.60090448096,440.99519155196,441.49314144476,465.11211608996,465.63729761752,490.54793493862,496.11959049595,496.67978412536,523.2511306012],description:"Symmetrical 27-tone 5-limit just system, 67108864/66430125 and 25/24"},counterschismic:{frequencies:[261.6255653006,265.12640119254,268.67408364533,272.2692364133,275.65170316539,279.34022410565,283.07810312094,286.865997406,290.70457953408,294.3160713245,298.25434362449,302.24531258767,306.28968684494,310.09479611189,314.24420508029,318.4491358588,322.71033506911,327.0285519162,331.0913069245,335.5216703313,340.01131880467,344.56104171562,348.84160709651,353.50948891197,358.2398341551,363.03347451625,367.54352740958,372.46166135084,377.44560747755,382.49624206822,387.61445966759,392.4298881006,397.68103103357,403.0024376988,408.3950505989,413.46864135256,419.00130591222,424.60800114791,430.28972009123,436.04746916004,441.46459261549,447.37187116862,453.35819556254,459.4246261707,465.13216971689,471.35614630867,477.663406507,484.05506753352,490.06860102591,496.62625431187,503.27165616309,510.00598369715,516.83042094502,523.2511306012],description:"Counterschismic temperament, g=498.082318, 5-limit"},couperin:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28785294636,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.24345038333,489.02683710225,523.2511306012],description:"Couperin modified meantone"},cross13:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,322.00069575458,332.97799220076,336.37572681506,366.27579142084,373.75080757229,406.97310157871,411.12588832951,425.14154361347,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"13-limit harmonic/subharmonic cross"},cross2:{frequencies:[261.6255653006,282.55561052465,339.14425131559,366.27579142084,436.04260883433,470.92601754108,560.62621135843,605.4763082671,726.73768139056,784.8766959018],description:"Pusey's double 5-7 cross reduced by 3/1"},cross2_5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5 cross reduced by 2/1"},cross2_7:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,334.88072358477,341.71502406609,348.83408706747,392.4383479509,400.61414686654,408.78994578219,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"longer 3-5-7 cross reduced by 2/1"},cross3:{frequencies:[261.6255653006,282.55561052465,311.45900631024,336.37572681506,363.28578496026,403.74315632809,436.04260883433,470.92601754108,508.60009894437,565.24041885932,610.45965236807,659.29642455751,726.73768139056,784.8766959018],description:"Pusey's triple 5-7 cross reduced by 3/1"},cross_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,348.83408706747,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"3-5-7 cross reduced by 2/1, quasi diatonic, similar to Zalzal's, Flynn Cohen"},cross_72:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,313.95067836072,343.38355445704,348.83408706747,392.4383479509,398.6675280771,436.04260883433,448.50096908674,465.11211608996,490.54793493862,523.2511306012],description:"double 3-5-7 cross reduced by 2/1"},cross_7a:{frequencies:[261.6255653006,336.37572681506,392.4383479509,436.04260883433,470.92601754108,523.2511306012,610.45965236807,784.8766959018],description:"2-5-7 cross reduced by 3/1"},cruciform:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Cruciform Lattice"},galilei:{frequencies:[261.6255653006,277.66336828161,293.32570896007,311.30674962848,328.86683469969,348.2210758395,368.7143392539,390.41365788584,413.39000965417,437.71854962063,463.47885582013,490.75518955849,523.2511306012],description:"Vincenzo Galilei's approximation"},gamelan_om:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other Music gamelan (7 limit black keys)"},gamelan_udan:{frequencies:[261.6255653006,261.6255653006,290.69507255622,305.22982618403,334.88072358477,351.32575911795,364.00078650518,392.4383479509,402.50086969323,465.11211608996,465.11211608996,501.44900015948,523.2511306012],description:"Gamelan Udan Mas (approx) s6,p6,p7,s1,p1,s2,p2,p3,s3,p4,s5,p5"},ganassi:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Sylvestro Ganassi's temperament (1543)"},gann_custer:{frequencies:[261.6255653006,269.80136421624,274.70684356563,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"Kyle Gann, scale from Custer's Ghost to Sitting Bull, 1/1=G"},gann_frac:{frequencies:[261.6255653006,264.89588486686,294.32876096318,305.22982618403,309.04519901133,313.95067836072,348.83408706747,353.19451315581,366.27579142084,392.4383479509,397.34382730029,412.06026534844,418.60090448096,423.83341578697,457.84473927605,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Fractured Paradise, 1/1=B"},gann_ghost:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Kyle Gann, scale from Ghost Town, 1/1=E"},gann_super:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Kyle Gann, scale from Superparticular Woman (1992), 1/1=G"},gann_things:{frequencies:[261.6255653006,266.47048317654,272.52663052146,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,387.59343007496,392.4383479509,406.97310157871,408.78994578219,436.04260883433,448.50096908674,465.11211608996,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Kyle Gann, scale from How Miraculous Things Happen, 1/1=A"},garcia:{frequencies:[261.6255653006,268.33391312882,271.68808704293,279.06726965397,286.22284067074,294.32876096318,301.87565226992,310.07474405997,313.95067836072,322.00069575458,331.11985608357,339.61010880366,348.83408706747,357.77855083843,362.25078272391,372.08969287196,381.63045422766,392.4383479509,402.50086969323,407.5321305644,418.60090448096,429.33426100611,441.49314144476,452.81347840488,465.11211608996,470.92601754108,483.00104363188,496.11959049595,509.4151632055,523.2511306012],description:"Linear 29-tone scale by Jos\xEF\xBF\xBD L. Garcia, 1988 15/13-52/45 alternating"},garibaldi24:{frequencies:[261.6255653006,271.45160478635,275.48458787532,290.07776082447,294.38747453868,305.44397410364,309.9819851541,326.40257969757,331.25197480486,343.69301829526,348.79929894143,361.89937857146,367.27615309757,386.73177659938,392.47748849606,407.21801775129,413.26809573999,435.16003837828,441.62525370518,458.21165716245,465.0193526482,489.65270106975,496.92751922541,515.59094540799,523.2511306012],description:"Garibaldi[24] in 94-tET tuning."},genovese:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,338.57426097725,340.11323489078,342.12573923925,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,400.13321751856,402.50086969323,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Denny Genovese's 65-note scale. 3/2=384 Hz"},genovese_12:{frequencies:[261.6255653006,285.40970760065,294.32876096318,313.95067836072,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Denny Genovese's superposition of harmonics 8-16 and subharmonics 6-12"},genovese_38:{frequencies:[261.6255653006,280.31310567921,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Denny Genovese's 38-note scale. Harm 1..16 x Subh. 1..12"},"gf1-2":{frequencies:[261.6255653006,269.29177952703,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,339.28638158975,349.22823143301,359.46139971304,380.8360868427,403.48177901006,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"16-note scale with all possible quadruplets of 50 & 100 c. Galois Field GF(2)"},"gf2-3":{frequencies:[261.6255653006,270.85177093588,280.40333801024,290.29174037004,300.52885648597,316.56538760238,327.729041887,345.21700307457,357.39105439675,369.99442271164,389.73770840504,410.5345162762,425.01198472693,447.69106452518,471.58032351597,496.7443381147,523.2511306012],description:"16-note scale with all possible quadruplets of 60 & 90 c. Galois Field GF(2)"},gilson7:{frequencies:[261.6255653006,261.6255653006,299.00064605783,313.95067836072,327.03195662575,392.4383479509,373.75080757229,392.4383479509,408.78994578219,408.78994578219,467.18850946536,490.54793493862,523.2511306012],description:"Gilson septimal"},gilson7a:{frequencies:[261.6255653006,261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,373.75080757229,373.75080757229,392.4383479509,418.60090448096,470.92601754108,470.92601754108,523.2511306012],description:"Gilson septimal 2"},golden_10:{frequencies:[261.6255653006,287.58715183149,304.90466328003,323.26497397694,342.73087946949,376.74069565061,399.42672527674,423.47882962254,465.50141625349,493.53231135469,523.2511306012],description:"Golden version of Rapoport's Major 10 out of 13"},golden_5:{frequencies:[261.6255653006,327.03195662575,343.38355445704,392.4383479509,425.14154361347,523.2511306012],description:"Golden pentatonic"},gradus10:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,490.54793493862,882.98628288953,930.22423217991,941.85203508216,1220.91930473613,1255.80271344288,1674.40361792384,2747.0684356563,3270.3195662575,3488.34087067467,5886.5752192635,10595.8353946743,10988.2737426252,11162.69078615893,13081.27826503,14651.0316568336,23546.300877054,31395.067836072,41860.090448096,42383.3415786972,56511.1221049296,75348.1628065728,100464.2170754304,133952.2894339072],description:"Intervals > 1 with Gradus = 10"},gradus3:{frequencies:[261.6255653006,784.8766959018,1046.5022612024],description:"Intervals > 1 with Gradus = 3"},gradus4:{frequencies:[261.6255653006,392.4383479509,1569.7533918036,2093.0045224048],description:"Intervals > 1 with Gradus = 4"},gradus5:{frequencies:[261.6255653006,348.83408706747,1308.127826503,2354.6300877054,3139.5067836072,4186.0090448096],description:"Intervals > 1 with Gradus = 5"},gradus6:{frequencies:[261.6255653006,654.0639132515,697.66817413493,1177.3150438527,2616.255653006,4709.2601754108,6279.0135672144,8372.0180896192],description:"Intervals > 1 with Gradus = 6"},gradus7:{frequencies:[261.6255653006,327.03195662575,436.04260883433,588.65752192635,1395.33634826987,1831.3789571042,3924.383479509,5232.511306012,7063.8902631162,9418.5203508216,12558.0271344288,16744.0361792384],description:"Intervals > 1 with Gradus = 7"},gradus8:{frequencies:[261.6255653006,294.32876096318,313.95067836072,418.60090448096,872.08521766867,915.6894785521,1962.1917397545,2790.67269653973,3531.9451315581,3662.7579142084,7848.766959018,10465.022612024,14127.7805262324,18837.0407016432,25116.0542688576,33488.0723584768],description:"Intervals > 1 with Gradus = 8"},gradus9:{frequencies:[261.6255653006,457.84473927605,465.11211608996,470.92601754108,610.45965236807,627.90135672144,837.20180896192,981.09586987725,1744.17043533733,1765.97256577905,5494.1368713126,5581.34539307947,6540.639132515,7325.5158284168,11773.150438527,15697.533918036,20930.045224048,21191.6707893486,28255.5610524648,37674.0814032864,50232.1085377152,66976.1447169536],description:"Intervals > 1 with Gradus = 9"},grady11:{frequencies:[261.6255653006,277.4816601673,290.69507255622,305.22982618403,332.97799220076,356.76213450082,378.42269266694,392.4383479509,420.46965851882,458.69417292962,481.6288815761,504.56359022259,523.2511306012],description:"Kraig Grady's dual [5 7 9 11] hexany scale"},grady7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Kraig Grady's 7-limit "Centaur" scale (1987), see Xenharmonikon 16`},grady7t:{frequencies:[261.6255653006,274.79177208104,293.65339461903,305.54250820508,326.68804977983,349.10444036529,366.6627351378,392.00975085961,407.77240291308,436.0718257558,457.96530027286,489.37179607373,523.2511306012],description:"Tempered version of grady7 with egalised 225/224"},grady_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Kraig Grady, letter to Lou Harrison, published in 1/1 7 (1) 1991 p 5."},grammateus:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"H. Grammateus (Heinrich Schreiber) (1518). B-F# and Bb-F 1/2 P. Also Marpurg temp.nr.6"},graupner:{frequencies:[261.6255653006,277.083518473,293.59062125964,310.9808189359,329.55130849159,349.11528328816,370.00708353276,392.01655298731,415.20348378516,439.96413779539,466.04943410823,493.90517116572,523.2511306012],description:"Johann Gottlieb Graupner's temperament (1819)"},groenewald_21:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"J\xEF\xBF\xBDrgen Gr\xEF\xBF\xBDnewald, new meantone temperament I (2000)"},gross:{frequencies:[13.75,13.83042567154,13.91662997964,13.99803029322,14.07990672861,14.1622619889,14.24509903843,14.32842061343,14.41222946472,14.49652860895,14.58132083065,14.67220542837,14.75802520833,14.84434696019,14.93117353378,15.01850805439,15.10635340681,15.19471249121,15.28358848801,15.37298433293,15.46880332718,15.55928251958,15.65029093742,15.74183158529,15.83390775812,15.92652249736,16.01967895316,16.113380201,16.20762961362,16.30865090754,16.4040424858,16.49999202274,16.59650278193,16.69357794961,16.79122101993,16.88943521823,16.98822378696,17.08759028197,17.18753798549,17.29466699621,17.39582592037,17.49757653721,17.59992220598,17.70286661052,17.80641315127,17.91056524676,18.01532664586,18.12070080902,18.23364617402,18.34029731861,18.44757228066,18.55547460176,18.66400816581,18.77317655783,18.88298349104,18.99343259063,19.10452783216,19.2236053387,19.33604689279,19.44914613325,19.56290690697,19.67733296969,19.79242844011,19.90819712001,20.02464283144,20.14176976577,20.26731246322,20.38585868839,20.50509842475,20.62503561099,20.74567420676,20.86701855437,20.98907266203,21.11184068121,21.23532666504,21.36768545088,21.49266790503,21.61838152318,21.74483045784,21.87201888365,21.99995137868,22.12863216875,22.25806563075,22.38825603783,22.52780097787,22.65956910312,22.79210808945,22.92542231482,23.05951631373,23.1943945132,23.33006176809,23.46652255971,23.60378139323,23.75090264526,23.88982499399,24.02955978014,24.17011203339,24.3114863964,24.45368753658,24.59672057234,24.74059022832,24.88530139802,25.04041015894,25.18687501732,25.33419642278,25.48237967807,25.63142967793,25.78135134315,25.93215007005,26.08383083979,26.23639881154,26.39992889083,26.55434576426,26.70966568928,26.86589425653,27.0230366265,27.18109814415,27.34008402779,27.5],description:"Gross temperament, g=91.531021, 5-limit"},groven:{frequencies:[261.6255653006,264.7464578752,272.5650766677,275.81646505128,279.10663876478,290.77709705464,294.24573392894,297.75574765819,306.54921255625,310.20599265769,313.90639394672,327.03195662575,330.93307160522,334.88072358477,344.77058253591,348.88329767713,353.04507480266,363.47137260637,367.80716871461,372.19468374184,387.75749219625,392.38299382393,397.06367008113,408.78994578219,413.66634097248,418.60090448096,436.10412364188,441.30634506723,446.57062302059,459.75895986689,465.24335632603,470.79317533731,484.69686416326,490.47874118496,496.32958936031,517.08292506126,523.2511306012],description:"Eivind Groven's 36-tone scale with 1/8-schisma temp. fifths and 5/4 (1948)"},groven_ji:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,517.37477513058,523.2511306012],description:"Untempered version of Groven's 36-tone scale"},gumbeng:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.9259392365,525.62941881859],description:"Scale of gumbeng ensemble, Java. 1/1=440 Hz."},gunkali:{frequencies:[261.6255653006,275.93321340298,282.55561052465,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Indian mode Gunkali, see Dani\xEF\xBF\xBDlou: Intr. to the Stud. of Mus. Scales, p.175"},gyaling:{frequencies:[261.6255653006,283.49766588023,307.55338551939,339.28638158975,347.81902735497,393.58362272115,435.9522698367],description:'Tibetan Buddhist Gyaling tones measured from CD "The Diamond Path", Ligon 2002'},far12_104:{frequencies:[261.6255653006,276.7193479141,294.32876096318,311.93817401225,329.54758706133,349.67263054599,369.79767403066,392.4383479509,415.07902187114,440.23532622697,465.3916305828,493.06356537421,523.2511306012],description:"Farey approximation to 12-tET with den=104"},far12_65:{frequencies:[261.6255653006,277.72560008833,293.82563487606,309.92566966379,330.05071314845,350.17575663311,370.30080011777,390.42584360243,414.57589578403,438.72594796562,466.90100884415,495.07606972267,523.2511306012],description:"Farey approximation to 12-tET with den=65"},far12_80:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,330.30227619201,349.92419358955,369.5461109871,392.4383479509,415.3305849147,441.49314144476,467.65569797482,493.81825450488,523.2511306012],description:"Farey approximation to 12-tET with den=80"},farey3:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"Farey fractions between 0 and 1 until 3rd level, normalised by 2/1"},farey4:{frequencies:[261.6255653006,299.00064605783,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Farey fractions between 0 and 1 until 4th level, normalised by 2/1"},farey5:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,348.83408706747,366.27579142084,373.75080757229,380.54627680087,392.4383479509,402.50086969323,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Farey fractions between 0 and 1 until 5th level, normalised by 2/1"},farnsworth:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Farnsworth's scale"},fibo_9:{frequencies:[261.6255653006,277.97716313189,327.03195662575,343.38355445704,363.82305174615,392.4383479509,425.14154361347,449.66894036041,523.2511306012],description:"First 9 Fibonacci terms reduced by 2/1, B. McLaren, XH 13, 1991"},finnamore:{frequencies:[261.6255653006,277.97716313189,310.68035879446,348.83408706747,392.4383479509,416.96574469783,457.84473927605,466.02053819169,523.2511306012],description:"David J. Finnamore, Tuning List 9 May '97. Tetrachordal scale, 17/16x19/17x64/57"},finnamore53:{frequencies:[261.6255653006,286.15296204753,310.68035879446,327.03195662575,343.38355445704,359.73515228832,367.91095120397,376.08675011961,392.4383479509,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,457.84473927605,474.19633710734,523.2511306012],description:'David J. Finnamore, tuning for "Crawlspace", 53-limit, 1998.'},finnamore_11:{frequencies:[261.6255653006,287.78812183066,294.32876096318,305.22982618403,323.76163705949,331.11985608357,343.38355445704,348.83408706747,392.4383479509,431.68218274599,441.49314144476,457.84473927605,485.64245558924,515.07533168556,523.2511306012],description:"David J. Finnamore, 11-limit scale, Tuning List 3 Sept '98"},finnamore_7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,309.04519901133,331.11985608357,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,463.567798517,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 21/20 &15/14"},finnamore_7a:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,331.11985608357,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,473.02836583367,496.67978412536,523.2511306012],description:"David J. Finnamore, TL 1 Sept '98. 7-tone Pyth. with 9/8 div. in 15/14 &21/20"},finnamore_jc:{frequencies:[261.6255653006,276.16031892841,310.68035879446,348.83408706747,392.4383479509,414.24047839262,466.02053819169,523.2511306012],description:"Chalmers' modification of Finnamore. Tuning List 9-5-97 19/18 x 9/8 x 64/57"},fisher:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.67535808973,327.03195662575,349.71841093413,365.63284485857,391.22147055517,410.55062036439,437.39890198442,467.47330218196,489.02683992698,523.2511306012],description:"Alexander Metcalf Fisher's modified meantone temperament (1818)"},"fj-10tet":{frequencies:[261.6255653006,280.31310567921,300.51585203447,322.00069575458,345.20039866051,370.01329949656,396.52624740872,425.14154361347,455.42228033808,488.36772189445,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 10-tet"},"fj-12tet":{frequencies:[261.6255653006,277.19851561611,293.6613488068,311.12229387098,329.64821227876,348.83408706747,370.01329949656,391.99491478937,415.52295665389,440.00663255101,466.16918908107,490.54793493862,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 12-tet"},"fj-13tet":{frequencies:[261.6255653006,275.96121271433,291.05844139692,306.97399661937,323.91736656265,341.56671025356,360.27127025001,379.97998769849,400.78810003496,422.62591317789,445.95266812602,41.6222490251,496.18641694941,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 13-tet"},"fj-14tet":{frequencies:[261.6255653006,274.92856014639,288.87822835275,303.4856557487,318.85615771011,335.0643204727,352.18826098158,370.01329949656,388.70083987518,408.5030756448,429.33426100611,451.0785608631,473.88781639354,497.93252750759,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 14-tet"},"fj-15tet":{frequencies:[261.6255653006,274.08392555301,286.94416839421,300.51585203447,314.76825825228,329.64821227876,345.20039866051,361.51896296083,378.66858135613,396.52624740872,415.52295665389,392.4383479509,455.42228033808,477.08191319521,499.46698830115,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 15-tet"},"fj-16tet":{frequencies:[261.6255653006,273.25336820285,285.40970760065,297.96244937013,311.12229387098,324.92207303462,339.29565499922,354.2846196779,370.01329949656,386.4008349055,403.52417698906,421.50785520652,440.00663255101,459.44001711325,479.64686971777,500.9851250437,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 16-tet"},"fj-17tet":{frequencies:[261.6255653006,272.52663052146,283.8915708581,295.75063903546,307.98958953109,320.70230585235,334.29933343966,348.03400888612,362.53828334512,373.75080757229,392.4383479509,409.71550792358,426.86276443782,444.76346101102,462.87600014722,482.37213602298,502.32108537715,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 17-tet"},"fj-18tet":{frequencies:[261.6255653006,271.88539139082,282.55561052465,293.6613488068,305.22982618403,317.12189733406,329.64821227876,342.60490694126,355.98232655655,370.01329949656,384.51030051755,399.57359064092,415.52295665389,431.68218274599,448.50096908674,466.16918908107,484.4917875937,503.12608711654,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 18-tet"},"fj-19tet":{frequencies:[261.6255653006,271.31540105247,281.44568388398,291.81313052759,302.73815413355,313.95067836072,325.69713231299,337.73482066077,350.31219760589,363.36884069528,376.74081403286,390.78248994267,405.26313056367,420.46965851882,436.04260883433,451.89870370104,468.95148497277,485.87604984397,504.56359022259,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 19-tet"},"fj-20tet":{frequencies:[261.6255653006,270.8594087818,280.31310567921,290.29686012806,300.51585203447,311.12229387098,322.00069575458,333.44434793214,345.20039866051,357.34223553253,370.01329949656,383.09457776159,396.52624740872,410.48149038542,425.14154361347,440.00663255101,455.42228033808,470.92601754108,488.36772189445,505.41302387616,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 20-tet"},"fj-21tet":{frequencies:[261.6255653006,270.34641747729,279.46367202564,288.87822835275,298.56093922539,308.58400009814,318.85615771011,329.64821227876,340.72166643799,352.18826098158,364.00078650518,376.08675011961,388.70083987518,401.78211814021,415.52295665389,429.33426100611,443.62595855319,457.84473927605,473.88781639354,489.85212226495,506.18859373377,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 21-tet"},"fj-22tet":{frequencies:[261.6255653006,270.06509966514,278.68810216803,287.55242312318,296.76929795292,306.29334474217,316.13089140489,326.18252297218,336.37572681506,347.40443916965,358.52392281934,370.01329949656,381.83190611439,392.4383479509,392.4383479509,419.69101100305,433.03541842858,446.94367405519,461.28718092474,475.68284600109,491.34557385722,506.89953276991,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 22-tet"},"fj-23tet":{frequencies:[261.6255653006,269.55361273395,277.97716313189,286.37392958579,295.1673044417,304.21577360535,313.47928094576,323.18452184192,332.97799220076,343.1154954762,353.6790049434,364.40703738298,375.66747838035,387.20583664489,398.97898708342,411.12588832951,423.58424858192,436.04260883433,449.99597231703,463.79077485106,477.96978276071,492.47165233054,507.86139146587,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 23-tet"},"fj-24tet":{frequencies:[261.6255653006,269.32043486826,277.19851561611,285.40970760065,293.6613488068,302.32287545847,311.12229387098,320.2657782128,329.64821227876,339.29565499922,348.83408706747,348.83408706747,370.01329949656,380.54627680087,391.99491478937,403.52417698906,415.52295665389,427.53446036927,440.00663255101,452.81347840488,466.16918908107,479.64686971777,490.54793493862,508.30109829831,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 24-tet"},"fj-26tet":{frequencies:[261.6255653006,268.69652652494,275.96121271433,283.42769574232,291.05844139692,299.00064605783,306.97399661937,315.29234792636,323.91736656265,332.57487114483,341.56671025356,350.8160989258,360.27127025001,370.01329949656,379.97998769849,390.22118214327,400.78810003496,411.12588832951,422.62591317789,434.18710837121,445.95266812602,457.84473927605,457.84473927605,483.00104363188,496.18641694941,509.48136400643,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 26-tet"},"fj-30tet":{frequencies:[261.6255653006,267.70988077271,274.08392555301,280.31310567921,286.94416839421,293.6613488068,300.51585203447,307.52478728316,314.76825825228,322.00069575458,329.64821227876,337.35928157183,345.20039866051,353.19451315581,361.51896296083,370.01329949656,378.66858135613,387.59343007496,396.52624740872,405.78659107848,415.52295665389,425.14154361347,392.4383479509,444.76346101102,455.42228033808,466.16918908107,477.08191319521,488.36772189445,499.46698830115,511.35905945117,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 30-tet"},"fj-31tet":{frequencies:[261.6255653006,267.57160087561,273.51763645063,279.79400733536,286.15296204753,292.60754013883,299.00064605783,305.96888145324,312.81317590289,319.76457981184,327.03195662575,334.53760808929,342.12573923925,349.884792149,357.81143489641,366.27579142084,373.75080757229,382.37582620857,391.25985441351,400.13321751856,409.20921752145,418.60090448096,428.11456140098,437.54620403721,447.51741432997,457.84473927605,467.90726101838,478.40103369253,489.12605686634,500.50108144463,511.62332769895,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 31-tet"},"fj-36tet":{frequencies:[261.6255653006,266.75547834571,271.88539139082,277.19851561611,282.55561052465,288.08208313999,293.6613488068,299.00064605783,305.22982618403,311.12229387098,317.12189733406,323.18452184192,329.64821227876,327.03195662575,342.60490694126,348.83408706747,355.98232655655,362.89997767503,370.01329949656,377.22755927063,384.51030051755,391.99491478937,399.57359064092,406.97310157871,415.52295665389,423.35773294097,431.68218274599,440.00663255101,448.50096908674,436.04260883433,466.16918908107,475.19745534191,484.4917875937,490.54793493862,503.12608711654,513.18860885887,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 36-tet"},"fj-41tet":{frequencies:[261.6255653006,266.05989691586,270.64713651786,275.21650375777,279.87851171692,284.71017400359,289.532292266,294.32876096318,299.49242343621,304.63250754179,309.81974838229,315.13988547572,320.49131749323,325.95972070239,331.39238271409,337.09447836808,342.81970625596,348.83408706747,354.64798851859,360.72615821749,366.27579142084,373.13810133036,379.35706968587,386.00493241072,392.4383479509,399.32323124828,405.97070477679,413.09299784305,419.97788114044,427.14378008261,434.48531380278,441.85651028546,449.45930449077,436.04260883433,465.11211608996,472.93852188955,480.82536325516,489.12605686634,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 41-tet"},"fj-42tet":{frequencies:[261.6255653006,265.98599138894,270.34641747729,274.92856014639,279.46367202564,284.05061375494,288.87822835275,293.6613488068,298.56093922539,303.4856557487,308.58400009814,313.7026920429,318.85615771011,324.18820048118,329.64821227876,335.0643204727,340.72166643799,346.37750898953,352.18826098158,358.01393146398,364.00078650518,370.01329949656,376.08675011961,382.37582620857,388.70083987518,395.22159864559,401.78211814021,408.5030756448,415.52295665389,422.16852582597,429.33426100611,436.04260883433,443.62595855319,451.0785608631,457.84473927605,466.16918908107,473.88781639354,481.94183081689,489.85212226495,497.93252750759,506.18859373377,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 42-tet"},"fj-43tet":{frequencies:[261.6255653006,265.84533248287,270.2034526875,274.70684356563,279.06726965397,283.42769574232,288.1672893166,292.86443876933,297.71185016965,302.50455987882,307.4100392282,312.38873468728,317.43901923139,322.67153053741,327.85988562987,332.97799220076,338.57426097725,344.24416486921,348.83408706747,355.41586229515,361.11697745717,367.05676325756,372.95559308809,379.09010482332,385.17097113699,391.45479319413,397.88888056133,404.33041910093,392.4383479509,417.48760420309,424.25767346043,431.1976909584,438.2228218785,445.32011114996,452.54151835779,459.82675113439,467.18850946536,475.05694751951,483.00104363188,490.54793493862,498.33441009638,506.89953276991,514.81159623666,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 43-tet"},"fj-53tet":{frequencies:[261.6255653006,265.06800694929,268.51044859798,272.09058791262,275.69145590816,279.30296836145,282.98275430473,286.71294827463,290.48132617934,294.32876096318,298.13145813324,302.11523612093,306.05254808749,310.07474405997,313.95067836072,318.31110444906,322.46872002167,326.7649917632,331.03642956402,335.41739141103,336.37572681506,344.24416486921,348.83408706747,353.42400926572,358.01393146398,362.89997767503,367.52162744608,372.31330446624,377.3445653374,382.37582620857,387.20583664489,392.4383479509,397.67085925691,402.82031482791,408.13588186894,413.53718386224,418.60090448096,424.41480593208,429.81342870813,436.04260883433,441.49314144476,447.29532132038,453.1728541814,459.07882213124,465.11211608996,470.92601754108,477.46665667359,483.76047923507,485.87604984397,496.55464434604,503.12608711654,509.83443494476,516.36624730382,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 53-tet"},"fj-54tet":{frequencies:[261.6255653006,265.02329991489,268.42103452919,271.88539139082,275.39533189537,279.06726965397,282.55561052465,286.15296204753,289.90941019796,293.6613488068,297.46468383493,301.26580246736,305.22982618403,309.19384990071,313.15787361738,317.12189733406,321.29455387793,325.43667878855,329.64821227876,333.91683992313,338.19890148614,342.60490694126,346.93824963775,351.55935337268,355.98232655655,360.61902244137,365.28852513669,370.01329949656,374.76094489005,379.61356533813,384.51030051755,389.53139722534,394.5147413263,399.57359064092,404.77917650282,409.88005230427,415.52295665389,420.652869699,426.07592063241,431.68218274599,436.04260883433,442.75095666255,448.50096908674,454.40229762736,460.26719821402,466.16918908107,472.20223981084,478.40103369253,484.4917875937,490.54793493862,497.08857407114,503.12608711654,510.16985233617,516.54278277298,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 54-tet"},"fj-55tet":{frequencies:[261.6255653006,264.93728131706,268.33391312882,271.68808704293,275.15792212649,278.68810216803,282.14521748104,285.77561748219,289.37373131733,293.02063313667,296.76929795292,300.51585203447,304.33994330886,308.21641939523,312.11470948142,316.13089140489,319.76457981184,324.10331223806,328.22116374075,332.33517754401,336.37572681506,340.90603963412,345.20039866051,348.83408706747,353.96400011258,358.52392281934,363.07221307022,367.68998366571,372.31330446624,377.04860881557,381.83190611439,386.75083566176,391.58336244338,396.52624740872,401.56482115906,406.65712867376,411.81801945465,416.96574469783,418.60090448096,427.65717404906,433.03541842858,438.60756535689,444.15502946381,449.8123754291,455.42228033808,461.28718092474,467.18850946536,472.93852188955,479.03272519828,485.0974023282,491.34557385722,497.60156537565,503.87145909745,510.16985233617,516.71049146868,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 55-tet"},"fj-5tet":{frequencies:[261.6255653006,300.51585203447,345.20039866051,396.52624740872,455.42228033808,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 5-tet"},"fj-60tet":{frequencies:[261.6255653006,264.66772303665,267.70988077271,270.8594087818,274.08392555301,277.19851561611,280.31310567921,283.6903720127,286.94416839421,290.29686012806,293.6613488068,297.10021822272,300.51585203447,304.05133264664,307.52478728316,311.12229387098,314.76825825228,318.50068819203,322.00069575458,325.79787377056,329.64821227876,333.44434793214,337.35928157183,341.25073734861,345.20039866051,348.83408706747,353.19451315581,357.34223553253,361.51896296083,365.74186169574,370.01329949656,374.3258088147,378.66858135613,383.09457776159,387.59343007496,391.99491478937,396.52624740872,401.15920012759,405.78659107848,410.48149038542,415.52295665389,420.18651396763,425.14154361347,429.81342870813,434.91003062957,440.00663255101,444.76346101102,450.23934493592,455.42228033808,460.95932933915,466.16918908107,470.92601754108,477.08191319521,482.55382044333,488.36772189445,490.54793493862,499.46698830115,505.41302387616,511.35905945117,517.30509502619,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 60-tet"},"fj-66tet":{frequencies:[261.6255653006,264.37951861955,267.19206668997,270.06509966514,272.83808952777,275.76748774928,278.68810216803,281.58005756929,284.57517629188,287.55242312318,290.69507255622,293.6613488068,296.76929795292,299.91223339337,302.93486508491,306.29334474217,309.48390041656,312.81317590289,316.13089140489,319.38705374359,322.78478835788,326.18252297218,329.64821227876,332.97799220076,336.37572681506,340.11323489078,343.8507429665,347.40443916965,351.12904816659,354.74652922115,358.52392281934,362.25078272391,366.27579142084,370.01329949656,373.75080757229,377.90359432309,381.83190611439,385.89770881839,389.97018224052,392.4383479509,398.12586024004,402.50086969323,406.65712867376,411.12588832951,415.52295665389,419.69101100305,424.01384721132,428.62060698183,433.03541842858,437.71969579139,442.27178896054,446.94367405519,451.89870370104,456.45311392871,461.28718092474,466.16918908107,470.92601754108,475.68284600109,481.05345877852,485.87604984397,491.34557385722,496.41773928832,501.44900015948,506.89953276991,512.35006538034,517.80059799077,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 66-tet"},"fj-72tet":{frequencies:[195.99771799087,197.9006084568,199.84081050049,201.76235675531,203.68390301012,205.67661764474,207.66424882366,209.67197738558,211.67753543014,213.81569235368,215.817711945,217.77524221208,219.99743856118,222.13074705632,223.99739198957,226.48625190056,228.66400432268,230.8417567448,233.07836734049,235.19726158904,237.57299150408,239.92824098882,242.11482810637,244.5635242187,246.9571246685,249.45164107929,251.74018824515,254.18454051941,256.66367832138,259.11562717437,261.33029065449,264.17083729204,266.68541956135,269.28382123963,271.86780237443,274.39680518722,277.19677258709,279.99673998696,282.60136082405,285.0875898049,288.0572521987,290.83532347032,293.66437746429,296.5093682426,299.34196929515,302.30156503677,304.88533909691,307.99641398565,311.29049327962,313.59634878539,317.15994365795,320.28895378996,323.39623468494,326.46784071315,329.63252571192,332.8263135694,335.99608798435,339.22681959958,342.55457018224,345.87832586624,349.232297511,352.79589238357,355.99585512627,359.32914964993,362.95873702013,366.4305162438,367.49572123288,373.6206499201,376.91868844398,380.79556638226,384.45706221286,388.2262490973,391.99543598174],description:"Franck Jedrzejewski continued fractions approx. of 72-tet"},"fj-78tet":{frequencies:[138.59131548844,139.82873794816,141.06616040788,142.33702671786,143.60064014465,144.89092073791,146.18536017274,147.4753741736,148.781853392,150.14059177914,151.48353088271,152.80580938469,154.18283848089,155.56168065029,156.95883922787,158.39007484393,159.76498868806,161.21846903757,162.6138101731,164.12129465736,165.53962683341,167.02030328094,168.55700532378,170.00534699915,171.58924774759,173.06676710248,174.62505751543,176.17540104463,177.75842638735,179.35346710269,180.93866188769,182.53490332624,184.15558359423,185.8383548595,187.50589742554,188.98815748424,190.84705739392,192.48793817839,194.02784168382,196.00771761937,197.74614527009,199.57149430335,201.28738678083,203.10796235375,204.87411854813,206.71247055903,207.88697323266,210.45347907504,212.31010032272,214.18657848213,216.10849194808,217.78635291041,220.11561871693,221.7461047815,223.87827886594,225.96410133985,228.00506741647,230.00260868294,232.05987709692,234.17153306667,236.2351968553,238.37706264012,240.41350645954,242.53480210477,244.7463656498,246.9445257794,249.1343885566,251.39820018833,253.59261982991,255.8608901325,258.1602935569,260.55167311827,262.84559834014,265.13121223875,267.51346943117,269.88835121433,272.23294113801,274.70778605744,277.18263097688],description:"Franck Jedrzejewski continued fractions approx. of 78-tet"},"fj-7tet":{frequencies:[261.6255653006,288.87822835275,318.85615771011,352.18826098158,388.70083987518,429.33426100611,473.88781639354,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 7-tet"},"fj-84tet":{frequencies:[97.99885899544,98.81551615374,99.63217331203,100.44883047033,101.26548762862,102.12512674262,102.98185182572,103.83212441184,104.68059938149,105.53723276432,106.39876119505,107.33208366167,108.20707347413,109.09306944775,109.9987192806,110.89344570537,111.83399203009,112.76581035092,113.67867643471,114.64017467391,115.58839778949,116.53918367025,117.50574088079,118.47623251688,119.43610940069,120.45693084856,121.43336875522,122.4985737443,123.47856233425,124.48503710232,125.50731064328,126.58185953578,127.62642101732,128.62350243151,129.74496824748,130.66514532725,131.9215409554,132.99845149381,134.10370178323,135.17083999371,136.34623860235,137.19840259362,138.59838629355,139.73911375276,140.87335980595,142.09834554339,143.22910160872,144.41937115117,145.59830479323,146.83218873215,148.0408295463,149.25980062382,150.498247743,151.74016876713,153.01576229113,154.29607586516,155.64524663982,156.7981743927,158.13452246991,159.45577056885,160.81864040277,162.07503603092,163.33143165907,164.81626285597,166.17197829662,167.54643634704,168.96354999214,170.33135015874,171.49800324202,173.20728566636,174.61614875551,176.03498745477,177.50736723702,178.95443816559,180.52421393897,181.99788099153,183.48722535316,183.74786061645,186.51395744293,188.05186455882,189.60648805639,191.21728584476,192.8364644749,194.36440367429,195.99771799088],description:"Franck Jedrzejewski continued fractions approx. of 84-tet"},"fj-8tet":{frequencies:[261.6255653006,285.40970760065,311.12229387098,339.29565499922,370.01329949656,403.52417698906,440.00663255101,479.64686971777,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 8-tet"},"fj-90tet":{frequencies:[69.29565774422,69.83283338565,70.37840239647,70.9071846685,71.46114704873,72.0131345185,72.59545097014,73.14541650779,73.69538204544,74.24534758309,74.83931036376,75.40998048636,76.00168913882,76.58993750677,77.19009976571,77.78084032514,78.38361285822,78.99704982841,79.59636362512,80.23707738804,80.84493403492,81.4527906818,82.08870225085,82.70772053342,83.37133822351,83.99473665966,84.69469279849,85.2869633775,85.97794571968,86.61957218027,87.31252875772,87.95218098305,88.65767976099,89.35492709123,90.08435506749,90.74431371267,91.43177063473,92.14038007748,92.85618137725,93.5491379547,94.28753430771,95.03404490636,95.75399979201,96.51895185802,97.25706350066,98.00385880968,98.74631228551,99.50145727375,100.29634673506,101.05616754365,101.84361819984,102.66023369514,103.42635484212,103.94348661633,105.02623126858,105.83336819117,106.60870422188,107.47897935838,108.27446522534,109.14066094715,110.05780935847,110.87305239075,111.72157064884,112.60544383436,113.39289449054,114.33783527796,115.19278170468,116.11704811194,116.93642244337,117.80261816517,118.79255613295,119.69249974002,120.62577459179,121.5942673625,122.52275717094,123.4722628897,124.41720367712,125.39214258478,126.36267000417,127.35418180019,128.32529211893,129.35189445588,130.27583655913,131.29703572589,132.29171023897,133.26088027735,134.39157865546,135.4415128637,136.49144707195,137.52522844622,138.59131548844],description:"Franck Jedrzejewski continued fractions approx. of 90-tet"},"fj-96tet":{frequencies:[48.99942949772,49.35708956705,49.70956615711,50.0646344868,50.44058918883,50.81422318282,51.17718191984,51.5338827476,51.91606220592,52.2660581309,52.67438671005,53.04896912563,53.45392308842,53.81904551389,54.21213476343,54.59936429746,54.9993596403,55.39065943221,55.80490581685,56.20522795327,56.62156297514,57.01751796098,57.44760699733,57.85474808165,58.26959183513,58.69162434342,59.11042288614,59.54361052887,59.98206024721,60.41025554513,60.85413018265,61.24928687215,61.73928116713,62.19158359326,62.61038213598,63.09515579158,63.54613512986,63.99925485416,64.47293354963,64.92424408448,65.33257266363,65.89578449693,66.3533941115,66.81740386053,67.32095530991,67.84536391992,68.30223505743,68.78766064103,69.29919314678,69.78706625433,70.30352927934,70.77695371893,71.27189745123,71.86582992999,72.36838818125,72.90159022832,73.41609436608,73.94459360565,74.47913283653,75.03037641838,75.5753912592,76.10549687944,76.66039776256,77.21122223883,77.82262331991,78.34524166943,78.94352530188,79.48796340741,80.07223844749,80.64489438166,81.23589627254,81.66571582953,82.40813142798,82.999033639,83.58726208435,84.21776944921,84.8067048999,85.43490271397,86.04777863014,86.69129834212,87.30807437776,87.94769397027,88.57589178434,89.20408959841,89.83228741249,90.46048522656,91.16172929808,91.87393030822,92.49330511929,93.09891604567,93.82869478287,94.4988997456,95.19889159557,95.91377688915,96.59887529551,97.28872233605,97.99885899544],description:"Franck Jedrzejewski continued fractions approx. of 96-tet"},"fj-9tet":{frequencies:[261.6255653006,282.55561052465,305.22982618403,329.64821227876,355.98232655655,384.51030051755,415.52295665389,448.50096908674,484.4917875937,523.2511306012],description:"Franck Jedrzejewski continued fractions approx. of 9-tet"},flavel:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Bill Flavel's just tuning. Tuning List 6-5-98"},fogliano:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord with D-/D and Bb-/Bb"},fogliano1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.1, Musica theorica (1529)"},fogliano2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Fogliano's Monochord no.2"},"fokker-h":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker-H 5-limit per.bl. synt.comma&small diesis, KNAW B71, 1968"},"fokker-ht":{frequencies:[261.6255653006,272.31140503734,279.67242998298,290.89121260742,305.67073265504,313.92185180985,326.66733279836,335.5942968927,349.22294231864,363.36596605244,376.74379448613,392.00137290182,407.92073675044,419.068143928,436.08264938702,447.85404100892,470.60848490625,489.4864783277,502.71810253025,523.2511306012],description:"Tempered version of Fokker-H per.bl. with better 6 tetrads, OdC"},"fokker-k":{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Fokker-K 5-limit per.bl. of 225/224 & 81/80 & 10976/10935, KNAW B71, 1968"},"fokker-l":{frequencies:[261.6255653006,271.31540105247,282.62020942966,291.99281841585,301.39265122629,313.95067836072,325.57848126297,339.14425131559,350.39138209902,363.36884069528,376.74081403286,390.69417751556,403.65087217807,420.46965851882,436.04260883433,454.2110508691,468.83301301868,484.38104661368,504.56359022259,523.2511306012],description:"Fokker-L 7-limit periodicity block 10976/10935 & 225/224 & 15625/15552, 1969"},"fokker-lt":{frequencies:[261.6255653006,272.07297743248,282.57734531132,291.77233860052,302.20925621315,313.90139500947,326.42149564976,339.58797317787,349.9403315901,363.14714144228,376.97081214523,391.19775936204,403.12344267272,419.38375585596,436.11106867998,452.98371913917,469.18728997524,484.4545223075,503.15865298196,523.2511306012],description:"Tempered version of Fokker-L per.bl. with more triads"},"fokker-m":{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker-M 7-limit periodicity block 81/80 & 225/224 & 1029/1024, KNAW B72, 1969"},"fokker-n":{frequencies:[261.6255653006,265.7783520514,273.37201925287,277.71125765371,286.15296204753,290.69507255622,299.00064605783,303.74668805875,313.95067836072,318.93402246168,328.62879235146,333.84512238879,343.38355445704,348.83408706747,358.80077526939,364.4960256705,375.57576268738,381.53728273004,392.4383479509,398.6675280771,410.05802887931,416.56688648057,429.2294430713,436.04260883433,450.69091522486,457.84473927605,470.92601754108,478.40103369253,492.94318852719,500.76768358318,515.07533168556,523.2511306012],description:"Fokker-N 7-limit periodicity block 81/80 & 2100875/2097152 & 1029/1024, 1969"},"fokker-n2":{frequencies:[261.6255653006,265.7783520514,272.52663052146,279.06726965397,286.15296204753,290.69507255622,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"Fokker-N different block shape"},"fokker-p":{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.31310567921,286.15296204753,290.69507255622,299.00064605783,306.17666156322,312.97980223949,320.35783506196,327.03195662575,334.88072358477,341.85740532612,350.39138209902,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.69417751556,400.44729382745,408.78994578219,418.60090448096,427.32175665765,437.39523080459,447.11400319927,457.84473927605,470.92601754108,478.40103369253,488.36772189445,500.76768358318,510.98743222773,523.2511306012],description:"Fokker-P 7-limit periodicity block 65625/65536 & 6144/6125 & 2401/2400, 1969"},"fokker-q":{frequencies:[261.6255653006,265.7783520514,269.10058145205,272.52663052146,274.70684356563,279.06726965397,284.76252005507,286.15296204753,290.69507255622,294.32876096318,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,318.93402246168,321.92208230347,327.03195662575,332.22294006425,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,381.53728273004,387.59343007496,392.4383479509,398.6675280771,401.85686830172,408.78994578219,412.06026534844,418.60090448096,425.24536328225,429.2294430713,436.04260883433,439.53094970501,448.50096908674,454.2110508691,457.84473927605,465.11211608996,470.92601754108,478.40103369253,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-Q 7-limit per.bl. 225/224 & 4000/3969 & 6144/6125, KNAW B72, 1969"},"fokker-r":{frequencies:[261.6255653006,264.95644634031,268.26840191956,272.52663052146,275.55899540689,279.06726965397,282.62020942966,287.04062021552,290.69507255622,294.32876096318,298.07600213285,301.80195215951,306.17666156322,310.07474405997,313.95067836072,317.94773560837,322.92069774245,327.03195662575,331.19555792538,334.88072358477,340.1962906258,344.44874425862,348.83408706747,353.19451315581,357.69120255941,363.36884069528,367.91095120397,372.08969287196,376.74081403286,382.72082695402,387.59343007496,392.4383479509,397.43466951046,402.40260287934,408.78994578219,413.33849311034,418.60090448096,423.93031414449,430.56093032327,436.04260883433,441.49314144476,447.11400319927,453.59505416773,459.26499234482,465.11211608996,470.92601754108,476.92160341255,484.38104661368,490.54793493862,496.79333688808,502.32108537715,510.29443593869,516.67311638793,523.2511306012],description:"Fokker-R 7-limit per.bl. 4375/4374 & 65625/65536 & 6144/6125, 1969"},"fokker-s":{frequencies:[261.6255653006,265.7783520514,269.10058145205,273.37201925287,273.85732695955,278.20426865732,282.55561052465,286.15296204753,290.69507255622,295.2417807931,299.00064605783,303.74668805875,304.28591884395,309.04519901133,313.95067836072,317.94773560837,322.92069774245,328.04642310345,332.22294006425,333.84512238879,338.01818641865,343.38355445704,348.83408706747,353.19451315581,358.80077526939,364.4960256705,369.13660007139,370.8542388136,375.57576268738,381.53728273004,387.59343007496,392.4383479509,398.6675280771,404.99558407833,410.05802887931,412.06026534844,417.30640298598,423.93031414449,430.56093032327,436.04260883433,442.96392008567,449.89223739901,450.69091522486,457.84473927605,463.67378109554,470.92601754108,478.40103369253,484.4917875937,492.06963465517,499.88026377668,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Fokker-S 7-limit per.bl. 4375/4374 & 323/322 & 64827/65536, 1969"},fokker_12:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Fokker's 7-limit 12-tone just scale"},fokker_12a:{frequencies:[261.6255653006,274.70684356563,293.02063313667,309.04519901133,327.03195662575,348.83408706747,367.91095120397,390.69417751556,412.06026534844,439.53094970501,465.11211608996,490.54793493862,523.2511306012],description:"Fokker's 7-limit periodicity block of 2048/2025 & 3969/4000 & 225/224"},fokker_12b:{frequencies:[261.6255653006,275.93321340298,293.02063313667,309.04519901133,332.22294006425,348.83408706747,367.91095120397,392.4383479509,412.06026534844,439.53094970501,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit semitone scale KNAW B72, 1969"},fokker_12c:{frequencies:[261.6255653006,275.93321340298,293.02063313667,311.45900631024,332.22294006425,348.83408706747,372.08969287196,392.4383479509,412.06026534844,442.96392008567,467.18850946536,496.11959049595,523.2511306012],description:"Fokker's 7-limit complementary semitone scale, KNAW B72, 1969"},fokker_12t:{frequencies:[261.6255653006,279.53180800295,293.53544531438,305.4439412874,326.66157401657,349.08351368992,366.63408494061,391.81886165309,419.06057467847,436.03416050506,457.88164994338,489.21957814041,523.2511306012],description:"Tempered version of fokker_12 with egalised 225/224, see also lumma"},fokker_12t2:{frequencies:[261.6255653006,279.53060025556,293.5302824794,305.44678713816,326.66192308793,349.10467831311,366.62831408589,391.81689264402,419.03095498017,436.04260883433,457.88067400285,489.21694446174,523.2511306012],description:"Another tempered version of fokker_12 with egalised 225/224"},fokker_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 3125/3072. KNAW B71, 1968"},fokker_22a:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,502.32108537715,523.2511306012],description:"Fokker's 22-tone periodicity block of 2048/2025 & 2109375/2097152 = semicomma"},fokker_31:{frequencies:[261.6255653006,265.7783520514,275.93321340298,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,315.35224388912,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,406.97310157871,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,482.88312345521,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone just system"},fokker_31a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,476.92160341255,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone first alternate septimal tuning"},fokker_31b:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.92208230347,327.03195662575,336.37572681506,343.38355445704,348.83408706747,357.69120255941,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,480.53675259294,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"Fokker's 31-tone second alternate septimal tuning"},fokker_31c:{frequencies:[261.6255653006,269.46602871384,272.52663052146,279.06726965397,287.4304306281,294.32876096318,297.67175429757,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,383.2405741708,392.4383479509,396.89567239676,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,465.11211608996,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & 2109375/2097152 = semicomma"},fokker_31d:{frequencies:[261.6255653006,266.13928761861,272.52663052146,279.06726965397,287.4304306281,294.32876096318,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,399.20893142792,408.78994578219,418.60090448096,425.82286018978,436.04260883433,443.56547936435,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Fokker's 31-tone periodicity block of 81/80 & W\xEF\xBF\xBDrschmidt's comma"},fokker_31d2:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Reduced version of fokker_31d by Prooijen expressibility"},fokker_41:{frequencies:[261.6255653006,264.89588486686,271.31540105247,274.70684356563,280.31310567921,283.8170195002,290.69507255622,294.32876096318,300.33547037059,305.22982618403,311.45900631024,313.95067836072,321.55899383997,325.57848126297,329.64821227876,336.37572681506,341.85740532612,348.83408706747,353.19451315581,361.75386806997,366.27579142084,373.75080757229,378.42269266694,387.59343007496,392.4383479509,400.44729382745,406.97310157871,415.27867508032,420.46965851882,425.72552925031,436.04260883433,439.53094970501,448.50096908674,455.80987376816,465.11211608996,470.92601754108,482.33849075995,488.36772189445,498.33441009638,504.56359022259,516.79124009995,523.2511306012],description:"Fokker's 7-limit supracomma per.bl. 10976/10935 & 225/224 & 496125/262144"},fokker_41a:{frequencies:[261.6255653006,264.59711493117,272.83435407277,275.93321340298,279.06726965397,287.4304306281,291.02331101095,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.77913876369,367.91095120397,372.08969287196,376.315896791,388.03108134794,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 34171875/33554432"},fokker_41b:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,287.4304306281,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.42486507835,313.95067836072,323.35923445661,327.03195662575,331.11985608357,340.65828815182,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,383.2405741708,388.03108134794,392.4383479509,397.34382730029,408.78994578219,413.89982010446,418.60090448096,431.14564594215,436.04260883433,441.49314144476,454.2110508691,459.88868900496,465.11211608996,470.92601754108,485.03885168492,490.54793493862,496.67978412536,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 41-tone periodicity block of schisma & 3125/3072"},fokker_53:{frequencies:[261.6255653006,263.718569823,268.26840191956,272.52663052146,274.70684356563,279.06726965397,282.55561052465,286.15296204753,290.69507255622,294.32876096318,299.00064605783,300.46061014991,305.22982618403,309.04519901133,313.95067836072,317.87506184023,321.92208230347,327.03195662575,329.64821227876,334.88072358477,340.65828815182,343.38355445704,348.83408706747,353.19451315581,357.69120255941,360.55273217989,366.27579142084,373.75080757229,376.74081403286,381.53728273004,386.30649876417,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.83341578697,429.2294430713,436.04260883433,439.53094970501,448.50096908674,450.69091522486,457.84473927605,465.11211608996,470.92601754108,476.92160341255,480.73697623985,490.54793493862,498.33441009638,502.32108537715,508.71637697339,515.07533168556,523.2511306012],description:"Fokker's 53-tone system, degree 37 has alternatives"},fokker_53a:{frequencies:[261.6255653006,264.89588486686,269.46602871384,272.52663052146,275.93321340298,279.38237857051,283.88190679319,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.42486507835,313.95067836072,319.36714514233,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,359.28803828513,363.36884069528,367.91095120397,372.50983809402,378.50920905758,383.2405741708,388.03108134794,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,425.82286018978,431.14564594215,436.04260883433,441.49314144476,447.01180571282,454.2110508691,459.88868900496,465.63729761752,470.92601754108,479.0507177135,484.4917875937,490.54793493862,496.67978412536,504.67894541011,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & kleisma"},fokker_53b:{frequencies:[261.6255653006,264.59711493117,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,323.35923445661,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,388.03108134794,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.35538388988,431.14564594215,436.04260883433,441.49314144476,446.50763144636,451.5790761492,459.88868900496,465.11211608996,470.92601754108,476.27480687611,485.03885168492,490.54793493862,496.11959049595,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"Fokker's 53-tone periodicity block of schisma & 2109375/2097152"},fokker_av:{frequencies:[261.6255653006,267.53238172257,273.57240048543,279.74894499065,286.06477437084,292.52336378682,299.12777114678,305.88111195206,312.78710209553,319.84901131344,327.07017092477,334.45455423048,342.00545991849,349.72704272607,357.62295854304,365.69693211485,373.95340598657,382.39606841888,391.02956482064,399.85798283974,408.88548711149,418.11704484248,427.5567798744,437.20988623572,447.08093432269,457.17458061119,467.49637893146,478.0512162812,488.84407170063,499.88088374606,511.16658268681,522.70737825664],description:"Fokker's suggestion for a shrinked octave by averaging approximations"},fokker_bosch:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Scale of "Naar Den Bosch toe", genus diatonicum cum septimis. 1/1=D'},fokker_sr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,296.75121990114,305.22982618403,315.35224388912,325.57848126297,336.37572681506,347.28371334717,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,446.50763144636,461.31528248922,474.80195184183,490.54793493862,506.45541529795,523.2511306012],description:"Fokker's 7-limit sruti scale, KNAW B72, 1969"},fokker_sr2:{frequencies:[261.6255653006,270.30192333353,279.06726965397,288.32205155576,296.75121990114,306.59245933664,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,372.08969287196,381.53728273004,394.1903048614,406.97310157871,420.46965851882,434.10464168396,448.50096908674,461.31528248922,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Fokker's complementary 7-limit sruti scale, KNAW B72, 1969"},fokker_sra:{frequencies:[261.6255653006,269.76956886185,278.7476190342,287.42460593148,296.37169586701,305.59729331129,315.11006948887,325.59707150921,336.43308557971,346.90573279191,357.7043774887,368.83916960349,381.11429755927,392.97780480816,406.05627704035,419.57000893919,433.5334812886,447.02871783796,460.94403787128,475.29252052682,490.08765232515,506.39798251136,523.2511306012],description:"Two-step approximation 9-13 to Fokker's 7-limit sruti scale"},fokker_srb:{frequencies:[261.6255653006,269.31534001393,278.64197723942,286.83190328195,296.76515515861,305.48776291796,316.06708432391,325.35701999957,336.62443200122,346.51859521924,358.51885197895,369.0565423573,381.83730669135,393.06038214356,406.67242132093,418.62545783369,433.12283887627,445.85331391262,461.29362042034,474.85209942927,491.29666030217,505.73699464332,523.2511306012],description:"Two-step maximally even approximation 11-11 to Fokker's 7-limit sruti scale"},fokker_uv:{frequencies:[220,220.05029721079,220.09166666667,220.14198483463,220.15668113546,220.24841308594,220.29876708984,220.3905582428,220.5253936656,220.68244897959,220.7744,220.82487425697,220.98214285714,221.03266460905,221.0236875,221.07421875,221.28224372864,221.41762468656,221.66763848397,221.71831695641,221.76,221.81069958848,222.01040039062,222.06115722656,222.40609622534,222.44790857143,222.4987654321,222.65722615577,222.75,222.80092592593,223.00151824951,223.05250167847,223.14544022083,223.18896568405,223.23999196793,223.44097959184,223.49206349206,223.58518518519,223.79557291667,223.88882107205,224.18534499514,224.23659907493,224.33003099121,224.48979591837,224.58333333333,224.79466029576,224.83692169189,224.88832473755,225.18617242815,225.28,225.33150434385,225.49198250729,225.5859375,225.67993164062,225.9788277551,226.03049186753,226.28571428571,226.4317558299,226.68743133545,227.08224,227.1341563786,227.29591836735,227.390625,227.44261188272,228.096,228.14814814815,229.16666666667,231,232.03125,233.6237037037,233.84353741497],description:"Table of Unison Vectors, Microsons and Minisons, from article KNAW, 1969"},foote:{frequencies:[261.6255653006,276.70272600503,293.15632631094,310.58830860439,328.48713220126,349.43001184052,368.92737853004,391.76907592069,414.58565256441,438.98455767189,465.89457252293,492.17459484008,523.2511306012],description:"Ed Foote, piano temperament. TL 9 Jun 1999, almost equal to Coleman"},forster:{frequencies:[261.6255653006,279.06726965397,283.42769574232,287.78812183066,299.00064605783,309.19384990071,319.76457981184,327.03195662575,336.37572681506,340.11323489078,343.38355445704,353.19451315581,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,387.59343007496,392.4383479509,398.6675280771,402.50086969323,406.97310157871,418.60090448096,428.11456140098,441.49314144476,442.75095666255,448.50096908674,457.84473927605,465.11211608996,483.00104363188,490.54793493862,507.3950357345,523.2511306012],description:"Cris Forster's Chrysalis tuning, XH 7+8"},fortuna11:{frequencies:[261.6255653006,274.70684356563,299.00064605783,305.22982618403,332.97799220076,343.38355445704,373.75080757229,398.6675280771,411.12588832951,448.50096908674,457.84473927605,498.33441009638,523.2511306012],description:"11-limit scale from Clem Fortuna"},fortuna_a1:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,320.24370022528,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,479.82340237272,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or G major, superset of Basandida, trivalent"},fortuna_a2:{frequencies:[261.6255653006,277.18263097687,285.30470202322,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,428.11456140098,440,466.16376151809,493.88330125613,523.2511306012],description:"Clem Fortuna, Arabic mode of 24-tET, try C or F minor"},fortuna_bag:{frequencies:[261.6255653006,266.17557513191,291.58269109838,303.42373253797,318.96815495553,348.01136516401,359.18086083642,388.55281975337,398.8194592997,432.92801877123,462.35552488468,479.64686971777,523.2511306012],description:"Bagpipe tuning from Fortuna, try key of G with F natural"},fortuna_eth:{frequencies:[261.6255653006,280.31310567921,288.69027895239,305.7551787248,323.91736656265,346.02090894595,368.95913055213,385.17097113699,414.24047839262,422.62591317789,469.58434797544,484.00729580611,523.2511306012],description:"Ethiopian Tunings from Fortuna"},fortuna_sheng:{frequencies:[261.6255653006,275.29257244317,286.94416839421,312.81317590289,320.2657782128,348.83408706747,367.19377586049,382.62738925213,417.81993264424,433.74764773521,467.75479856774,484.77678276288,523.2511306012],description:"Sheng scale on naturals starting on d, from Fortuna"},"francis_r12-14p":{frequencies:[261.6255653006,277.2273508585,293.19140419912,311.27759533081,328.56574776048,349.51003591412,369.636465861,391.67937618637,415.43871422078,438.93656251816,466.46466724696,492.84862139436,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cornet-ton"},"francis_r12-2":{frequencies:[261.6255653006,277.2831963903,293.15801965318,311.35818177599,328.6319369554,349.45847225471,369.71092870521,391.50168688506,415.45657533448,438.80025285527,466.56783666625,492.94847466277,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R12-2, fifths beat ratios 0, 1, 2. C=279.331 Cornet-ton"},"francis_r2-1":{frequencies:[261.6255653006,276.41735337657,293.40958958006,310.96959408698,328.77281747949,349.18425877583,368.55655650762,391.91325216238,414.62612565656,439.06418506387,465.92902003736,492.10921220871,523.2511306012],description:"J. Charles Francis, Bach WTC temperament R2-1, fifths beat ratios 0, 1, 2. C=249.072 Cammerton"},"francis_r2-14p":{frequencies:[261.6255653006,276.42350693124,293.47533146651,310.97644498676,328.88393162803,349.17189700163,368.56467609256,392.05867944486,414.6352601896,439.36162975058,466.01338145177,492.37181018521,523.2511306012],description:"Bach WTC theoretical temperament, 1/14 Pyth. comma, Cammerton"},francis_seal:{frequencies:[261.6255653006,275.89934348748,293.01242796531,310.38672525582,327.92787107993,349.18506556371,367.865749003,391.38524198103,413.84896721463,437.93907827641,465.58008765101,490.83740312498,523.2511306012],description:"J. Charles Francis, Bach tuning interpretion as beats/sec. from seal"},francis_suppig:{frequencies:[261.6255653006,276.33536163417,293.13939342657,310.64213412049,328.58201670643,349.47038191026,368.45885450371,391.47500324588,414.51381656966,438.73106346722,465.97531289569,491.91879926026,523.2511306012],description:"J. Charles Francis, Suppig Calculus musicus, 5ths beat ratios 0, 1, 2."},efg333:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,523.2511306012],description:"Genus primum [333]"},efg333333333337:{frequencies:[261.6255653006,275.01702890535,279.38237857051,289.72987407313,294.32876096318,309.39415751852,314.30517589183,325.94610833227,331.11985608357,343.38355445704,353.59332287831,366.6893718738,372.50983809402,386.30649876417,392.4383479509,412.52554335802,419.07356785577,434.59481110969,441.49314144476,457.84473927605,471.45776383774,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:"Genus [333333333337]"},efg333333355:{frequencies:[261.6255653006,264.89588486686,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.42486507835,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,397.34382730029,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Genus [333333355]"},efg33335:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Genus [33335]"},efg3333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Genus [3333555]"},efg33335555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Genus bis-ultra-chromaticum [33335555]"},efg333355577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,278.20426865732,279.06726965397,281.68182201554,284.8811711051,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,317.94773560837,320.49131749323,321.92208230347,325.57848126297,327.03195662575,333.84512238879,343.38355445704,348.83408706747,352.10227751942,356.10146388137,357.69120255941,360.55273217989,363.36884069528,366.27579142084,367.91095120397,372.08969287196,375.57576268738,381.53728273004,392.4383479509,400.61414686654,402.40260287934,406.97310157871,408.78994578219,412.06026534844,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,445.12682985172,450.69091522486,457.84473927605,459.88868900496,465.11211608996,469.46970335923,470.92601754108,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,508.71637697339,515.07533168556,523.2511306012],description:"Genus [333355577]"},efg33337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,386.30649876417,392.4383479509,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33337]"},efg3335:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonicum veterum correctum [3335]"},efg33355:{frequencies:[261.6255653006,272.52663052146,290.69507255622,310.07474405997,327.03195662575,348.83408706747,363.36884069528,387.59343007496,408.78994578219,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Genus diatonico-chromaticum hodiernum correctum [33355]"},efg333555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Genus diatonico-hyperchromaticum [333555]"},efg33355555:{frequencies:[261.6255653006,272.52663052146,279.06726965397,287.4304306281,294.32876096318,306.59245933664,313.95067836072,319.36714514233,327.03195662575,340.65828815182,348.83408706747,359.28803828513,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,425.82286018978,436.04260883433,459.88868900496,470.92601754108,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"Genus [33355555]"},efg333555777:{frequencies:[261.6255653006,262.79353657426,267.07609791103,268.26840191956,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,281.68182201554,286.15296204753,294.32876096318,299.00064605783,300.46061014991,305.22982618403,306.59245933664,311.45900631024,312.97980223949,313.95067836072,318.93402246168,320.49131749323,321.92208230347,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,350.39138209902,352.10227751942,357.69120255941,358.80077526939,360.55273217989,366.27579142084,367.91095120397,373.75080757229,375.57576268738,381.53728273004,392.4383479509,398.6675280771,400.61414686654,402.40260287934,408.78994578219,412.06026534844,417.30640298598,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,448.50096908674,450.69091522486,457.84473927605,459.88868900496,467.18850946536,469.46970335923,470.92601754108,476.92160341255,478.40103369253,480.73697623985,488.36772189445,490.54793493862,498.33441009638,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333555777]"},efg333557:{frequencies:[261.6255653006,265.7783520514,279.06726965397,280.31310567921,290.69507255622,299.00064605783,313.95067836072,318.93402246168,327.03195662575,332.22294006425,348.83408706747,358.80077526939,372.08969287196,373.75080757229,392.4383479509,398.6675280771,418.60090448096,425.24536328225,436.04260883433,448.50096908674,465.11211608996,478.40103369253,490.54793493862,498.33441009638,523.2511306012],description:"Genus diatonico-enharmonicum [333557]"},efg33357:{frequencies:[261.6255653006,274.70684356563,279.06726965397,305.22982618403,313.95067836072,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,406.97310157871,418.60090448096,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Genus diatonico-enharmonicum [33357]"},efg3335711:{frequencies:[261.6255653006,265.58571790036,269.80136421624,275.93321340298,286.15296204753,294.32876096318,295.09524211152,303.52653474327,314.76825825228,321.92208230347,327.03195662575,331.98214737546,337.2517052703,343.38355445704,354.11429053382,359.73515228832,367.91095120397,379.40816842909,386.30649876417,392.4383479509,393.46032281536,404.70204632437,429.2294430713,441.49314144476,442.64286316727,449.66894036041,457.84473927605,472.15238737843,482.88312345521,490.54793493862,505.87755790546,515.07533168556,523.2511306012],description:"Genus [3 3 3 5 7 11], expanded hexany 1 3 5 7 9 11"},efg333577:{frequencies:[261.6255653006,267.07609791103,281.68182201554,286.15296204753,294.32876096318,300.46061014991,305.22982618403,321.92208230347,327.03195662575,333.84512238879,343.38355445704,348.83408706747,367.91095120397,375.57576268738,381.53728273004,392.4383479509,400.61414686654,429.2294430713,436.04260883433,450.69091522486,457.84473927605,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Genus [333577]"},efg3337:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,348.83408706747,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus [3337]"},efg33377:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,515.07533168556,523.2511306012],description:"Genus [33377] Bi-enharmonicum simplex"},efg335:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Genus secundum [335]"},efg3355:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Genus chromaticum veterum correctum [3355]"},efg33555:{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,367.91095120397,392.4383479509,408.78994578219,418.60090448096,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Genus bichromaticum [33555]"},efg335555577:{frequencies:[261.6255653006,267.07609791103,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,300.46061014991,305.22982618403,306.59245933664,312.97980223949,313.95067836072,320.49131749323,327.03195662575,333.84512238879,334.88072358477,341.85740532612,343.38355445704,348.83408706747,357.69120255941,366.27579142084,375.57576268738,381.53728273004,384.58958099188,390.69417751556,392.4383479509,400.61414686654,408.78994578219,417.30640298598,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,446.50763144636,457.84473927605,469.46970335923,476.92160341255,480.73697623985,488.36772189445,490.54793493862,500.76768358318,502.32108537715,512.78610798918,523.2511306012],description:"Genus [335555577]"},efg33557:{frequencies:[261.6255653006,274.70684356563,279.06726965397,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,429.2294430713,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Genus chromatico-enharmonicum [33557]"},efg335577:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Genus chromaticum septimis triplex [335577]"},efg3357:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,343.38355445704,348.83408706747,381.53728273004,392.4383479509,429.2294430713,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum vocale [3357]"},efg33577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,523.2511306012],description:"Genus [33577]"},efg337:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,515.07533168556,523.2511306012],description:"Genus quintum [337]"},efg3377:{frequencies:[261.6255653006,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [3377]"},efg33777:{frequencies:[261.6255653006,267.07609791103,299.00064605783,300.46061014991,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777]"},efg33777a:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,457.84473927605,523.2511306012],description:"Genus [33777] with comma discarded which disappears in 31-tET"},efg355:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Genus tertium [355]"},efg3555:{frequencies:[261.6255653006,306.59245933664,327.03195662575,383.2405741708,392.4383479509,408.78994578219,490.54793493862,510.98743222773,523.2511306012],description:"Genus enharmonicum veterum correctum [3555]"},efg35555:{frequencies:[261.6255653006,306.59245933664,313.95067836072,327.03195662575,334.88072358477,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Genus [35555]"},efg35557:{frequencies:[261.6255653006,268.26840191956,274.70684356563,286.15296204753,306.59245933664,313.95067836072,327.03195662575,343.38355445704,357.69120255941,366.27579142084,392.4383479509,408.78994578219,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus [35557]"},efg3557:{frequencies:[261.6255653006,274.70684356563,286.15296204753,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus enharmonicum instrumentale [3557]"},efg35577:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,358.80077526939,366.27579142084,373.75080757229,392.4383479509,418.60090448096,429.2294430713,448.50096908674,457.84473927605,478.40103369253,490.54793493862,523.2511306012],description:"Genus [35577]"},efg357:{frequencies:[261.6255653006,286.15296204753,327.03195662575,343.38355445704,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Genus sextum [357] & 7-limit Octony, see ch.6 p.118"},efg35711:{frequencies:[261.6255653006,269.80136421624,286.15296204753,295.09524211152,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,392.4383479509,393.46032281536,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,523.2511306012],description:"Genus [3 5 7 11]"},efg3571113:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.01701053212,278.99913799634,286.15296204753,292.28481123426,295.09524211152,314.76825825228,318.85615771011,319.68651228748,327.03195662575,337.2517052703,343.38355445704,348.74892249543,359.73515228832,365.35601404283,371.99885066179,383.62381474497,392.4383479509,393.46032281536,398.57019713763,425.14154361347,429.2294430713,438.4272168514,449.66894036041,457.84473927605,464.99856332724,472.15238737843,479.52976843121,490.54793493862,511.49841965996,523.2511306012],description:"Genus [3 5 7 11 13]"},efg3577:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,429.2294430713,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Genus [3577]"},efg35777:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,300.46061014991,327.03195662575,343.38355445704,373.75080757229,375.57576268738,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777]"},efg35777a:{frequencies:[261.6255653006,280.31310567921,286.15296204753,299.00064605783,327.03195662575,343.38355445704,373.75080757229,392.4383479509,400.61414686654,429.2294430713,448.50096908674,457.84473927605,490.54793493862,500.76768358318,523.2511306012],description:"Genus [35777] with comma discarded which disappears in 31-tET"},efg377:{frequencies:[261.6255653006,300.46061014991,343.38355445704,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus octavum [377]"},efg3777:{frequencies:[261.6255653006,262.90303388117,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Genus [3777]"},efg37777:{frequencies:[261.6255653006,262.90303388117,299.00064605783,300.46061014991,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777]"},efg37777a:{frequencies:[261.6255653006,299.00064605783,343.38355445704,350.53737850823,392.4383479509,400.61414686654,448.50096908674,457.84473927605,523.2511306012],description:"Genus [37777] with comma discarded that disappears in 31-tET"},efg555:{frequencies:[261.6255653006,327.03195662575,408.78994578219,510.98743222773,523.2511306012],description:"Genus quartum [555]"},efg55557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,366.27579142084,408.78994578219,418.60090448096,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [55557]"},efg5557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,357.69120255941,408.78994578219,447.11400319927,457.84473927605,510.98743222773,523.2511306012],description:"Genus [5557]"},efg55577:{frequencies:[261.6255653006,286.15296204753,291.99281841585,299.00064605783,327.03195662575,357.69120255941,373.75080757229,408.78994578219,447.11400319927,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"Genus [55577]"},efg557:{frequencies:[261.6255653006,286.15296204753,327.03195662575,366.27579142084,418.60090448096,457.84473927605,523.2511306012],description:"Genus septimum [557]"},efg5577:{frequencies:[261.6255653006,293.02063313667,320.49131749323,334.88072358477,366.27579142084,400.61414686654,418.60090448096,457.84473927605,512.78610798918,523.2511306012],description:"Genus [5577]"},efg55777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,320.49131749323,327.03195662575,366.27579142084,373.75080757229,400.61414686654,418.60090448096,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"Genus [55777]"},efg577:{frequencies:[261.6255653006,286.15296204753,327.03195662575,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus nonum [577]"},efg5777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,373.75080757229,400.61414686654,457.84473927605,500.76768358318,523.2511306012],description:"Genus [5777]"},efg57777:{frequencies:[261.6255653006,286.15296204753,299.00064605783,327.03195662575,350.53737850823,373.75080757229,400.61414686654,438.17172313528,457.84473927605,500.76768358318,523.2511306012],description:"Genus [57777]"},efg777:{frequencies:[261.6255653006,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus decimum [777]"},efg77777:{frequencies:[261.6255653006,299.00064605783,341.71502406609,350.53737850823,400.61414686654,457.84473927605,523.2511306012],description:"Genus [77777]"},eikohole1:{frequencies:[261.6255653006,277.4816601673,305.22982618403,332.97799220076,436.04260883433,475.68284600109,523.2511306012],description:"First eikohole ball <6 9 13 17 20|-epimorphic"},eikohole2:{frequencies:[261.6255653006,266.38239376061,274.70684356563,285.40970760065,299.68019298069,313.95067836072,332.97799220076,348.83408706747,366.27579142084,380.54627680087,392.4383479509,399.57359064092,418.60090448096,428.11456140098,443.97065626768,470.92601754108,488.36772189445,499.46698830115,523.2511306012],description:"Second eikohole ball"},eikohole4:{frequencies:[261.6255653006,274.70684356563,279.79400733536,287.78812183066,305.22982618403,313.95067836072,319.76457981184,335.75280880244,348.83408706747,359.73515228832,366.27579142084,373.05867644715,383.71749577421,392.4383479509,406.97310157871,418.60090448096,419.69101100305,431.68218274599,447.67041173658,457.84473927605,470.92601754108,479.64686971777,488.36772189445,503.62921320365,523.2511306012],description:"Fourth eikohole ball"},eikohole5:{frequencies:[261.6255653006,266.38239376061,274.70684356563,279.06726965397,285.40970760065,287.78812183066,294.32876096318,295.98043751179,299.68019298069,305.22982618403,313.95067836072,321.08592105074,325.57848126297,332.97799220076,342.49164912079,348.83408706747,353.19451315581,355.17652501415,363.24871876447,366.27579142084,374.60024122586,380.54627680087,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Fifth eikohole ball"},eikohole6:{frequencies:[261.6255653006,266.38239376061,272.43653907335,274.70684356563,279.06726965397,285.40970760065,287.78812183066,293.02063313667,294.32876096318,295.98043751179,299.00064605783,299.68019298069,305.22982618403,310.77945938738,313.95067836072,317.12189733406,321.08592105074,325.57848126297,329.64821227876,332.97799220076,336.37572681506,342.49164912079,348.83408706747,349.6268918108,353.19451315581,355.17652501415,356.76213450082,363.24871876447,366.27579142084,374.60024122586,380.54627680087,383.71749577421,392.4383479509,399.57359064092,406.97310157871,412.06026534844,418.60090448096,428.11456140098,431.68218274599,439.53094970501,443.97065626768,448.50096908674,449.52028947103,456.65553216105,457.84473927605,465.11211608996,466.16918908107,470.92601754108,475.68284600109,484.33162501929,488.36772189445,499.46698830115,507.3950357345,513.73747368118,523.2511306012],description:"Sixth eikohole ball"},eikosany:{frequencies:[261.6255653006,269.80136421624,274.70684356563,287.78812183066,294.32876096318,305.22982618403,323.76163705949,335.75280880244,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,412.06026534844,419.69101100305,431.68218274599,457.84473927605,470.92601754108,479.64686971777,503.62921320365,523.2511306012],description:"3)6 1.3.5.7.9.11 Eikosany (1.3.5 tonic)"},ekring1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,376.74081403286,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Single-tie circular mirroring of 3:4:5"},ekring2:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,336.37572681506,343.38355445704,384.42940207435,400.61414686654,448.50096908674,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Single-tie circular mirroring of 6:7:8"},ekring3:{frequencies:[261.6255653006,266.96486255163,299.00064605783,305.10270005901,327.03195662575,333.70607818954,341.71502406609,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,523.2511306012],description:"Single-tie circular mirroring of 4:5:7"},ekring4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,376.74081403286,392.4383479509,401.85686830172,436.04260883433,446.50763144636,465.11211608996,502.32108537715,523.2511306012],description:"Single-tie circular mirroring of 4:5:6"},ekring5:{frequencies:[261.6255653006,263.718569823,269.10058145205,305.22982618403,322.92069774245,366.27579142084,373.75080757229,376.74081403286,384.42940207435,439.53094970501,448.50096908674,512.78610798918,523.2511306012],description:"Single-tie circular mirroring of 3:5:7"},ekring5bp:{frequencies:[261.6255653006,282.55561052465,336.37572681506,363.28578496026,366.27579142084,395.57785473451,432.48307733364,512.78610798918,560.62621135843,605.4763082671,610.45965236807,659.29642455751,784.8766959018],description:"Single-tie BP circular mirroring of 3:5:7"},ekring6:{frequencies:[261.6255653006,288.32205155576,299.00064605783,336.37572681506,348.83408706747,384.42940207435,392.4383479509,406.97310157871,432.48307733364,465.11211608996,494.26637409559,512.57253609913,523.2511306012],description:"Single-tie circular mirroring of 6:7:9"},ekring7:{frequencies:[261.6255653006,266.96486255163,290.69507255622,296.62762505737,322.99452506247,336.37572681506,343.24053756638,406.97310157871,415.27867508032,432.48307733364,470.92601754108,480.53675259294,523.2511306012],description:"Single-tie circular mirroring of 5:7:9"},ekring7bp:{frequencies:[261.6255653006,311.45900631024,336.37572681506,400.44729382745,432.48307733364,436.04260883433,470.92601754108,514.86080634958,610.45965236807,667.41215637908,720.80512888941,726.73768139056,784.8766959018],description:"Single-tie BP circular mirroring of 5:7:9"},ellis:{frequencies:[261.6255653006,277.10015133873,293.57875905702,310.98767008297,329.52610437773,349.11112716429,369.96685849926,391.93834696391,415.15022554673,439.86813926913,465.98150356841,493.78915701915,523.2511306012],description:"Alexander John Ellis' imitation equal temperament (1875)"},ellis_24:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,294.32876096318,298.00787047521,306.59245933664,310.42486507835,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,397.34382730029,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,523.2511306012],description:"Ellis, from p.421 of Helmholtz, 24 tones of JI for 1 manual harmonium"},ellis_eb:{frequencies:[261.6255653006,277.21587437848,293.6537610003,311.19285946782,329.68548178616,349.2169654334,370.02116610622,391.93834696391,415.32381240723,439.98064151826,466.28928903228,494.02822100775,523.2511306012],description:"Ellis' new equal beating temperament for pianofortes (1885)"},ellis_harm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,353.19451315581,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ellis's Just Harmonium"},ellis_mteb:{frequencies:[261.6255653006,273.31920907322,292.34465012884,313.05587813274,326.9349299255,350.18846153218,365.78692922515,391.15004079048,408.78346942429,437.23842445073,468.2723780569,489.17031487243,523.2511306012],description:"Ellis' equal beating meantone tuning (1885)"},enh14:{frequencies:[261.6255653006,267.70988077271,274.08392555301,348.83408706747,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"14/11 Enharmonic"},enh15:{frequencies:[261.6255653006,270.64713651786,280.31310567921,356.76213450082,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Tonos-15 Enharmonic"},enh15_inv:{frequencies:[261.6255653006,331.39238271409,340.11323489078,348.83408706747,383.71749577421,488.36772189445,505.80942624783,523.2511306012],description:"Inverted Enharmonic Tonos-15 Harmonia"},enh15_inv2:{frequencies:[261.6255653006,270.34641747729,279.06726965397,348.83408706747,383.71749577421,392.4383479509,401.15920012759,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-15"},enh17:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,404.33041910093,413.73345210327,423.58424858192,523.2511306012],description:"Tonos-17 Enharmonic"},enh17_con:{frequencies:[261.6255653006,269.55361273395,277.97716313189,370.63621750918,378.52209447746,386.75083566176,494.18162334558,523.2511306012],description:"Conjunct Tonos-17 Enharmonic"},enh19:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,382.37582620857,389.87339142835,397.67085925691,523.2511306012],description:"Tonos-19 Enharmonic"},enh19_con:{frequencies:[261.6255653006,268.69652652494,276.16031892841,355.06326719367,361.51896296083,368.21375857121,451.89870370104,523.2511306012],description:"Conjunct Tonos-19 Enharmonic"},enh2:{frequencies:[261.6255653006,266.71168334607,277.18263097687,349.22823143301,391.99543598175,399.61600264311,415.30469757995,523.2511306012],description:"1:2 Enharmonic. New genus 2 + 4 + 24 parts"},enh21:{frequencies:[261.6255653006,268.0066766494,274.70684356563,343.38355445704,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Tonos-21 Enharmonic"},enh21_inv:{frequencies:[261.6255653006,336.37572681506,342.60490694126,348.83408706747,398.6675280771,498.33441009638,510.79277034879,523.2511306012],description:"Inverted Enharmonic Tonos-21 Harmonia"},enh21_inv2:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,398.6675280771,411.12588832951,423.58424858192,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-21"},enh23:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,376.08675011961,388.21858076863,401.15920012759,523.2511306012],description:"Tonos-23 Enharmonic"},enh23_con:{frequencies:[261.6255653006,267.43946675172,273.51763645063,334.29933343966,343.8507429665,353.96400011258,462.87600014722,523.2511306012],description:"Conjunct Tonos-23 Enharmonic"},enh25:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,408.78994578219,421.97671822677,436.04260883433,523.2511306012],description:"Tonos-25 Enharmonic"},enh25_con:{frequencies:[261.6255653006,269.71707762948,278.32506946872,363.36884069528,373.75080757229,384.74347838324,503.12608711654,523.2511306012],description:"Conjunct Tonos-25 Enharmonic"},enh27:{frequencies:[261.6255653006,269.10058145205,277.01530443593,353.19451315581,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Tonos-27 Enharmonic"},enh27_inv:{frequencies:[261.6255653006,329.45441556372,339.14425131559,348.83408706747,387.59343007496,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Enharmonic Tonos-27 Harmonia"},enh27_inv2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,387.59343007496,397.28326582684,406.97310157871,523.2511306012],description:"Inverted harmonic form of the enharmonic Tonos-27"},enh29:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,379.35706968587,389.08417403679,399.32323124828,523.2511306012],description:"Tonos-29 Enharmonic"},enh29_con:{frequencies:[261.6255653006,266.21548749886,270.96933548991,344.87006335079,352.8902973822,361.29244731988,474.19633710734,523.2511306012],description:"Conjunct Tonos-29 Enharmonic"},enh31:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,368.65420565085,377.22755927063,386.2091678247,523.2511306012],description:"Tonos-31 Enharmonic. Tone 24 alternates with 23 as MESE or A"},enh31_con:{frequencies:[261.6255653006,270.34641747729,279.66870773512,337.93302184661,352.6257619269,360.46188996972,368.65420565085,450.57736246214,523.2511306012],description:"Conjunct Tonos-31 Enharmonic"},enh33:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,392.4383479509,401.56482115906,411.12588832951,523.2511306012],description:"Tonos-33 Enharmonic"},enh33_con:{frequencies:[261.6255653006,269.80136421624,278.50463402967,359.73515228832,367.38909169871,375.37581108347,479.64686971777,523.2511306012],description:"Conjunct Tonos-33 Enharmonic"},enh_invcon:{frequencies:[261.6255653006,283.42769574232,370.63621750918,381.53728273004,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Enharmonic Conjunct Phrygian Harmonia"},enh_mod:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Enharmonic After Wilson's Purvi Modulations, See page 111"},enh_perm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Permuted Enharmonic, After Wilson's Marwa Permutations, See page 110."},enn45ji:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.92069774245,329.64821227876,336.37572681506,339.14425131559,346.06556256693,348.83408706747,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,392.4383479509,395.57785473451,403.65087217807,406.97310157871,415.27867508032,423.93031414449,427.32175665765,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.78610798918,523.2511306012],description:"Detempered Ennealimma[45], Hahn reduced"},enn72synch:{frequencies:[195.99771799087,197.54967854522,199.11392792408,201.62391554947,203.22042578925,204.82957760946,207.41161549338,209.05395423619,211.68924370912,213.36545381699,215.05493658943,217.76587316352,219.49019959291,221.22817968434,224.01693484168,225.790758792,228.63703016722,230.44743589451,232.27217821307,235.20015301436,237.06252857463,238.93964952543,241.95167308427,243.86750892427,246.94165062806,248.89699839908,250.8678291188,254.03021536301,256.04169222048,258.06909647124,261.3222603528,263.39147750593,266.71173418544,268.8236265844,270.95224149283,274.36780754746,276.54032271274,278.73004041423,282.24365173996,284.47852987378,288.0646054292,290.34557537779,292.64460663558,296.33362372129,298.68006816723,301.0450940916,304.84000597616,307.25380610435,311.12698372207,313.59056753865,316.0736586482,320.05801564518,322.59231767928,325.14668697146,329.24541662461,331.85246687263,336.03572815421,338.69654584276,341.37843257302,345.68177614255,348.4189737305,351.17784515594,355.60471802638,358.42048803112,362.93866010991,365.81250216232,368.70910003837,373.35696816148,376.31330506793,379.29305101359,384.07434037944,387.11553797119,391.99543598174],description:"Poptimal synchonized beating ennealimmal tuning, TM 10-10-2005"},ennea45:{frequencies:[261.6255653006,267.02028728287,269.13615104392,274.68574138534,276.8623300691,282.57123430547,288.39787286736,290.68311542614,296.67700440585,299.02785016604,305.1938252949,311.48692526882,313.95512370264,320.42888174436,322.96795420876,329.62755691287,336.42448069667,339.09030198792,346.08234767737,348.824677577,356.01744619623,363.3585507705,366.23777597441,373.78960287068,376.751482929,384.52012478698,392.44893391322,395.5586690753,403.715093104,406.91412394911,415.30469757995,423.86828492968,427.22700928979,436.03643483576,439.49155400205,448.55387459245,457.80308677504,461.43068321685,470.94538888861,474.67712392136,484.46499932732,494.45467284607,498.37269363637,508.649143962,512.67967026301,523.2511306012],description:"Ennealimmal-45, in a 7-limit least-squares tuning, g=48.999, G.W. Smith"},epimore_enh:{frequencies:[261.6255653006,265.11390617127,279.06726965397,348.83408706747,392.4383479509,397.67085925691,418.60090448096,523.2511306012],description:"New Epimoric Enharmonic, Dorian mode of the 4th new Enharmonic on Hofmann's list"},eratos_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,392.4383479509,413.09299784305,436.04260883433,523.2511306012],description:"Dorian mode of Eratosthenes's Chromatic. same as Ptol. Intense Chromatic"},eratos_diat:{frequencies:[261.6255653006,275.62199471997,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Dorian mode of Eratosthenes's Diatonic, Pythagorean"},eratos_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,392.4383479509,402.50086969323,413.09299784305,523.2511306012],description:"Dorian mode of Eratosthenes's Enharmonic"},erlangen:{frequencies:[261.6255653006,275.62199471997,293.99679436797,310.07474405997,327.03195662575,348.83408706747,367.49599295996,392.4383479509,413.43299207996,440.99519155196,465.11211608996,490.54793493862,523.2511306012],description:"Anonymus: Pro clavichordiis faciendis, Erlangen 15th century"},erlangen2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Revised Erlangen"},erlich1:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,433.12277132725,461.29357245868,491.2966347616,523.2511306012],description:"Asymmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich10:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Canonical JI interpretation of the Pentachordal decatonic mode of 22-tET"},erlich10s1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Superparticular version of erlich10 using 50/49 decatonic comma"},erlich10s2:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,470.92601754108,523.2511306012],description:"Other superparticular version of erlich10 using 50/49 decatonic comma"},erlich11:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Canonical JI interpretation of the Symmetrical decatonic mode of 22-tET"},erlich11s1:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Superparticular version of erlich11 using 50/49 decatonic comma"},erlich11s2:{frequencies:[261.6255653006,280.31310567921,305.22982618403,311.45900631024,348.83408706747,373.75080757229,392.4383479509,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Other superparticular version of erlich11 using 50/49 decatonic comma"},erlich12:{frequencies:[261.6255653006,267.01308914069,282.57123920205,288.39008844866,305.19382000629,311.47852302926,329.62755691287,336.41541160581,356.01745236555,363.34874301751,384.52011812375,392.4383479509,415.30469757995,423.85685859121,448.5538823653,457.7907297806,484.46499093218,494.44133512215,523.2511306012],description:"Two 9-tET scales 3/2 shifted, Paul Erlich, TL 5-12-2001"},erlich13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Just scale by Paul Erlich (2002)"},erlich2:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,476.05893615592,523.2511306012],description:"Asymmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich3:{frequencies:[261.6255653006,278.64199172491,296.7651860139,326.1838132033,347.39918201406,369.99442271164,394.05928374402,419.68935090103,461.29357245868,491.2966347616,523.2511306012],description:"Symmetrical Major decatonic mode of 22-tET, Paul Erlich"},erlich4:{frequencies:[261.6255653006,278.64199172491,296.7651860139,316.06713361714,347.39918201406,369.99442271164,394.05928374402,419.68935090103,446.98642698175,491.2966347616,523.2511306012],description:"Symmetrical Minor decatonic mode of 22-tET, Paul Erlich"},erlich5:{frequencies:[261.6255653006,269.33066959279,278.10477655849,287.16472157287,295.62197660533,306.17967660611,315.19693888202,326.45372959864,335.05049156411,348.07025322573,357.23626005287,368.87410717392,380.89108570115,393.29954676976,406.11224388345,419.34234602259,433.00345117936,444.40607048653,461.67529188567,473.83294924974,490.75518955849,505.2083639382,523.2511306012],description:"Unequal 22-note compromise between decatonic & Indian srutis, Paul Erlich"},erlich6:{frequencies:[261.6255653006,274.70684356563,280.31310567921,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Scale of consonant tones against 1/1-3/2 drone. TL 23-9-1998"},erlich7:{frequencies:[261.6255653006,272.64118737561,277.98432293805,281.84855879469,292.47977325983,303.51199286577,307.73108663824,313.76190292287,326.97270111135,337.05955506058,340.85784563832,350.05627231138,365.1325261687,373.60234843661,378.13992750117,391.18115131013,406.9458559663,413.62886206386,420.42161880722,437.36472209676,452.44848028305,457.94368329907,468.56640608675,488.7466646507,501.93603498211,507.59230220159,523.2511306012],description:"Meantone-like circle of sinuoidally varying fifths, TL 08-12-99"},erlich8:{frequencies:[261.6255653006,263.902226729,277.18263097687,279.59466973861,293.66476791741,296.22023396764,311.12698372208,313.83440569119,329.62755691287,332.49597057,349.22823143301,352.26720984209,369.99442271164,373.21410818061,391.99543598175,395.40657391157,415.30469757995,418.91867232636,440,443.82887286778,466.16376151809,470.22031101449,493.88330125613,498.18106573801,523.2511306012],description:"Two 12-tET scales 15 cents shifted, Paul Erlich"},erlich9:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,302.70726563706,308.34441624714,319.76457981184,332.97799220076,345.34574619679,356.76213450082,369.97554688974,383.71749577421,396.40237166758,411.12588832951,428.11456140098,436.04260883433,452.23847716247,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"11-limit periodicity block, u.v.: 9801/9800 243/242 126/125 100/99"},erlich_bpf:{frequencies:[261.6255653006,269.93113880221,277.4816601673,282.55561052465,293.6613488068,301.87565226992,311.45900631024,319.76457981184,328.70904358281,336.37572681506,347.05432131712,356.76213450082,366.27579142084,377.90359432309,388.47432423422,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,591.67627844905,610.45965236807,624.69777837082,642.17184210147,659.29642455751,680.22646978156,699.2537836216,726.73768139056,740.02659899313,760.72664372021,784.8766959018],description:"Erlich's 39-tone Triple Bohlen-Pierce scale"},erlich_bpp:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.6613488068,299.68019298069,311.45900631024,319.76457981184,323.65460841914,336.37572681506,345.34574619679,356.76213450082,366.27579142084,380.67211882362,385.30310526088,400.44729382745,411.12588832951,419.55227017296,436.04260883433,447.67041173658,458.69417292962,470.92601754108,489.43558134466,499.46698830115,512.78610798918,528.59042785223,539.42434736524,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.27431887171,642.17184210147,659.29642455751,685.20981388252,699.2537836216,720.80512888941,740.02659899313,764.49028821604,784.8766959018],description:"Periodicity block for erlich_bpf, 1625/1617 1331/1323 275/273 245/243"},erlich_bpp2:{frequencies:[261.6255653006,268.60224704195,277.4816601673,282.55561052465,293.92501780685,299.68019298069,311.45900631024,319.76457981184,326.02570445152,336.37572681506,345.34574619679,356.76213450082,366.27579142084,377.90359432309,385.30310526088,400.44729382745,411.12588832951,422.62591317789,436.04260883433,447.67041173658,458.69417292962,470.92601754108,485.87604984397,499.46698830115,512.78610798918,528.59042785223,543.37617408586,560.62621135843,575.57624366132,594.60355750136,610.45965236807,629.83932387181,642.17184210147,659.29642455751,685.20981388252,698.62650953896,726.73768139056,740.02659899313,764.49028821604,784.8766959018],description:"Improved shape for erlich_bpp"},erlich_bppe:{frequencies:[261.6255653006,269.03526454087,276.77324548748,284.61195549492,292.79795257063,301.09050901183,309.7504615497,318.52314490095,327.68449417797,337.10934179701,346.6568752383,356.62740568226,366.72772736951,377.27553481706,387.96064596243,399.11915372018,410.59860200806,422.22748385656,434.37157296247,446.67374500165,459.5209564409,472.53540627884,486.12644973042,499.89441151621,514.27235352402,529.06383329425,544.0478609495,559.69574261012,575.54731703113,592.10118472076,608.870542156,626.38285104305,644.39884822068,662.64936456684,681.70845767885,701.01565227402,721.17823493702,741.60327945962,762.93324174612,784.8766959018],description:"LS optimal 3:5:7:11:13 tempering, virtually equal, g=780.2702 cents"},erlich_bppm:{frequencies:[261.6255653006,269.3148593258,276.83859227209,284.97500405989,292.93622770824,301.54575630263,309.96990811138,319.08006614158,327.99406628962,337.15709295818,347.06629484351,356.76213450082,367.24753706379,377.50717076432,388.60227773252,399.45849178361,410.61798882758,422.6862401977,434.49464068244,447.26463523836,459.75967424319,473.27221959449,486.49381977384,500.79209531182,514.78250488433,529.16376146212,544.7161244152,559.93362036345,576.39032675477,592.49269103014,609.9063234692,626.94500947499,644.45969779399,663.40066444061,681.93379843592,701.97614206495,721.5869464624,742.79471409673,763.54584931731,784.8766959018],description:"MM optimal 3:5:7:11:13 tempering, g=780.352 cents"},erlich_paj:{frequencies:[261.6255653006,269.74106841426,278.59741216196,287.23937405609,296.67040683594,305.87298460253,315.91563888094,325.71519477697,336.4093235789,346.84458402385,358.23265591403,369.99442271164,381.47147728046,393.99623872149,406.21781843768,419.55531290213,432.56972318844,446.77218107119,460.63084592459,475.75462791404,490.51231476219,506.61748047856,523.2511306012],description:"Erlich's Pajara or Twintone, with RMS optimal generator"},erlich_paj2:{frequencies:[261.6255653006,270.25447814202,278.68577354399,287.87753105276,296.85845221806,306.64959036092,316.21614384055,326.645747324,336.83612131731,347.94582350257,358.80069640371,369.99442271164,382.1975482805,394.12120058634,407.1203087173,419.82124923186,433.66800958456,447.19715926063,461.9468459571,476.35821106408,492.06970256841,507.42081104304,523.2511306012],description:"Erlich's Pajara or Twintone with minimax optimal generator"},escapade:{frequencies:[261.6255653006,270.11362843741,278.8770761192,287.9248395776,297.26614463769,306.91051483225,316.86778450163,327.1481015562,337.76194863153,348.72014864112,360.03386958939,371.71464785337,383.77439429365,392.56657056143,405.30282760495,418.45229174958,432.02837124332,446.04490958069,460.51619165905,475.45697355792,490.88248752006,506.80846290374,523.2511306012],description:"Escapade temperament, g=55.275493, 5-limit"},"et-mix6":{frequencies:[261.6255653006,293.66476791741,300.52885648597,311.12698372208,329.62755691287,345.21700307457,369.99442271164,396.55020354877,415.30469757995,440,455.51656649021,466.16376151809,523.2511306012],description:"Mix of equal temperaments from 1-6 (= 4-6)"},euler:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Euler's Monochord (a mode of Ellis's duodene) (1739), genus [33355]"},euler20:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,489.33808574423,509.07699553894,513.57043963064,523.2511306012],description:"Genus [3333555] tempered by 225/224-planar"},euler24:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,308.1508239679,320.58100381398,326.62388782443,329.50688232588,342.79852229325,366.55580177366,381.34192228364,384.70789368407,391.95955371998,407.7704102616,411.36965665618,427.96347506501,439.87918162894,457.62301915088,480.28481865546,489.33808574423,493.65730140218,509.07699553894,513.57043963064,523.2511306012],description:"Genus [33333555] tempered by 225/224-planar"},euler_diat:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Euler's genus diatonicum veterum correctum"},euler_enh:{frequencies:[261.6255653006,267.90457886781,275.62199471997,348.83408706747,392.4383479509,401.85686830172,413.43299207996,523.2511306012],description:"Euler's Old Enharmonic, From Tentamen Novae Theoriae Musicae"},euler_gm:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,348.83408706747,361.75386806997,372.08969287196,385.87079260796,523.2511306012],description:"Euler's Genus Musicum, Octony based on Archytas's Enharmonic"},exptriad2:{frequencies:[261.6255653006,306.59245933664,327.03195662575,367.91095120397,392.4383479509,459.88868900496,490.54793493862,523.2511306012],description:"Two times expanded major triad"},exptriad3:{frequencies:[261.6255653006,269.46602871384,275.93321340298,279.06726965397,287.4304306281,294.32876096318,297.67175429757,303.14928230307,306.59245933664,313.95067836072,323.35923445661,327.03195662575,344.91651675372,348.83408706747,359.28803828513,367.91095120397,372.08969287196,378.93660287884,383.2405741708,392.4383479509,404.19904307077,408.78994578219,418.60090448096,431.14564594215,436.04260883433,446.50763144636,459.88868900496,490.54793493862,505.24880383846,517.37477513058,523.2511306012],description:"Three times expanded major triad"},iivv17:{frequencies:[261.6255653006,269.80136421624,277.97716313189,283.42769574232,294.32876096318,305.22982618403,318.85615771011,327.03195662575,343.38355445704,348.83408706747,359.73515228832,367.91095120397,370.63621750918,392.4383479509,416.96574469783,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"17-limit IIVV"},"indian-ayyar":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Carnatic sruti system, C.Subrahmanya Ayyar, 1976. alt:21/20 25/16 63/40 40/21"},"indian-dk":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,465.11211608996,523.2511306012],description:"Raga Darbari Kanada"},"indian-ellis":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,367.68998366571,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Ellis's Indian Chromatic, theoretical #74 of App.XX, p.517 of Helmholtz"},"indian-hahn":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Indian shrutis Paul Hahn proposal"},"indian-hrdaya1":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,328.55303549378,348.83408706747,375.07381928051,392.4383479509,428.11456140098,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Bhatkande's interpretation"},"indian-hrdaya2":{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,330.47439827444,348.83408706747,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"From Hrdayakautaka of Hrdaya Narayana (17th c) Levy's interpretation"},"indian-invrot":{frequencies:[261.6255653006,267.90457886781,279.06726965397,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Inverted and rotated North Indian gamut"},"indian-magrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Ma-grama (Sa Ri Ga Ma Pa Dha Ni Sa)"},"indian-newbengali":{frequencies:[261.6255653006,269.13627541126,277.02257024271,285.46954808622,294.32876096318,303.84527498141,313.95067836072,324.71413568646,336.35938765066,348.83408706747,358.01090280364,367.91095120397,377.98706287655,388.6137256405,400.23209335925,412.19781491431,425.25755219187,438.98455767189,453.41648894489,469.13512554326,485.39868175205,503.9696508909,523.2511306012],description:"Modern Bengali scale,S.M. Tagore: The mus. scales of the Hindus,Calcutta 1884"},"indian-old2ellis":{frequencies:[261.6255653006,270.06509966514,277.97716313189,285.40970760065,294.32876096318,305.22982618403,316.13089140489,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,415.52295665389,428.11456140098,441.49314144476,457.84473927605,474.19633710734,490.54793493862,505.80942624783,523.2511306012],description:"Ellis Old Indian Chrom2, Helmholtz, p. 517. This is a 4 cent appr. to #73"},"indian-oldellis":{frequencies:[261.6255653006,269.44737349144,277.4816601673,285.79952600623,294.32876096318,304.84150796353,315.71315096976,327.03195662575,337.72216249472,348.83408706747,359.25382662183,369.99442271164,381.0561299374,392.4383479509,404.18156579781,416.22249025095,428.71043212875,441.49314144476,457.27414749797,473.58203588493,490.54793493862,506.59641128799,523.2511306012],description:"Ellis Old Indian Chromatic, Helmholtz, p. 517. This is a 0.5 cent appr. to #73"},"indian-raja":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:"A folk scale from Rajasthan, India"},"indian-sagrama":{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Indian mode Sa-grama (Sa Ri Ga Ma Pa Dha Ni Sa), inverse of Didymus' diatonic"},"indian-srutiharm":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"B. Chaitanya Deva's sruti harmonium. The Music of India, 1981, p. 109"},"indian-srutivina":{frequencies:[261.6255653006,268.56758546278,278.98051393788,288.52577197574,297.52863491406,305.33829130574,314.01573591759,327.57422802312,336.57725592546,350.35262131413,358.2707318239,366.40588882483,378.77125721528,394.82459335461,403.28512412878,416.95215854696,428.77531684666,444.28620821491,453.93981227417,469.5594057965,487.34812384257,504.37765306036,529.32520658991],description:"Raja S.M. Tagore's sruti vina, measured by Ellis and Hipkins, 1886. 1/1=241.2"},"indian-srutivina2":{frequencies:[261.6255653006,275.04226095704,278.87560257317,292.29229825722,294.20896982953,310.50067090621,313.3756771183,327.75070817877,332.5423844325,351.70909240436,354.58409877157,369.9174668925,374.70914348171,393.87585105695,414.95923028882,421.66757847392,437.95928040996,441.79262140873,467.66767825558,473.41768959156,493.54273382289,499.29274676062,523.2511306012],description:"S. Ramanathan's sruti vina, 1973. In B.C. Deva, The Music of India, p. 110"},"indian-vina":{frequencies:[261.6255653006,276.70272600503,292.81785438923,313.29104303136,329.05685050583,352.26720984209,369.14054089803,390.18821123181,411.0090584005,435.70052664441,465.35666077712,491.60634075178,525.37110555681],description:"Observed South Indian tuning of a vina, Ellis"},"indian-vina2":{frequencies:[261.6255653006,277.02257024271,292.81785438923,308.97787266236,326.21810583671,344.81842302716,363.84824628932,386.37547528213,409.11417474979,432.19134773437,455.25352578019,480.93331155807,507.76825077597,539.82938999168,571.59905201246,602.44805673853,637.90290877605,678.5727631795,715.19510239543,756.4109196702,799.53998816902,846.10508618474,890.73947019126,943.16064703194,1001.55531043729],description:"Observed tuning of old vina in Tanjore Palace, Ellis and Hipkins. 1/1=210.7 Hz"},"indian-vina3":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Tuning of K.S. Subramanian's vina (1983)"},indian:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.50983809402,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale"},indian2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Indian shruti scale with tritone 64/45 schisma lower (Mr.Devarajan, Madurai)"},indian2_sm:{frequencies:[261.6255653006,275.80107697063,279.12844116922,290.7446524607,294.25230137258,310.19560923413,313.9379197281,327.00276442799,330.9478443499,348.87940629173,353.08841191408,367.78254402461,372.21960384438,392.38737044642,413.64787586584,418.63827382983,436.06032987759,441.3211172644,465.23297251763,470.84571179248,490.44043044945,496.35728163707,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 289-equal (schismic) temperament"},indian3:{frequencies:[261.6255653006,270.06509966514,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"Indian shruti scale with 32/31 and 31/16 and tritone schisma lower"},indian4:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,330.74639366397,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.89982010446,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"Indian shruti scale according to Firoze Framjee: Text book of Indian music"},indian5:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"23 Shrutis, Amit Mitra, 1/1 no. 12:2, Table C."},indian6:{frequencies:[146.8323839587,148.66778875818,150.35636117371,151.0621234143,152.23581568838,152.95039995698,154.68761437624,154.86227995644,156.62120955595,158.5789746754,159.32333328852,163.14709328744,165.18643195354,167.06262352634,169.15090632042,169.94488884109,172.0691999516,174.02356617327,176.19886075044,178.40134650982,179.23874994958,180.42763340845,181.27454809716,183.54047994838,185.62513725149,185.83473594773,187.94545146714,188.82765426788,190.29476961048,191.18799994622,193.3595179703,193.57784994555,195.77651194493,198.22371834425,200.47514823161,202.98108758451,203.93386660931,206.48303994192,208.82827940793,209.0640779412,211.43863290053,212.43111105136,214.08161581178,215.0864999395,217.52945771659,220.24857593805,223.00168313728,225.53454176056,226.59318512145,228.35372353257,229.42559993547,232.03142156437,232.29341993466,234.93181433392,237.86846201309,238.98499993278,240.57017787793,241.69939746288,244.72063993117,247.77964793031,250.59393528951,253.72635948063,254.91733326163,258.1037999274,261.03534925991,264.29829112566,267.60201976473,270.64145011268,271.91182214574,275.31071992256,278.43770587724,278.75210392159,281.9181772007,283.24148140181,285.44215441571,286.78199991934,290.03927695546,293.6647679174],description:"Shrutis calculated by generation method, Amit Mitra, 1/1 no. 12:2, Table B."},indian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"North Indian Gamut, modern Hindustani gamut out of 22 or more shrutis"},indian_12c:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,328.55303549378,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,470.92601754108,492.82955324067,523.2511306012],description:"Carnatic gamut. Kuppuswami: Carnatic music and the Tamils, p. v"},indian_a:{frequencies:[261.6255653006,290.79521372391,318.76727400207,355.94891173479,388.6137256405,432.69092326853,486.52148746092,523.2511306012],description:"One observed indian mode"},indian_b:{frequencies:[261.6255653006,290.79521372391,305.95868600104,356.15457528086,388.83826257328,432.94092754357,461.60862817266,523.2511306012],description:"Observed Indian mode"},indian_c:{frequencies:[261.6255653006,278.94941459687,313.65318017499,356.15457528086,388.83826257328,422.07621250312,470.76384471612,523.2511306012],description:"Observed Indian mode"},indian_d:{frequencies:[261.6255653006,289.28740724512,320.24370022528,344.61930560862,391.31674786192,442.03793673691,485.39868175205,523.2511306012],description:"Indian D (Ellis, correct)"},indian_e:{frequencies:[261.6255653006,275.58617649731,323.21709932123,347.81902735497,393.58362272115,410.77171881178,488.21056770985,523.2511306012],description:"Observed Indian mode"},indian_g:{frequencies:[261.6255653006,275.48458755707,279.57748987366,290.07776015425,294.38747470873,309.98198497505,314.58741860623,326.40257913196,331.25197518754,348.79929894143,353.98144532328,367.27615246113,372.73281132023,392.47748849606,413.26809526256,419.40806105693,435.16003737285,441.62525396027,465.0193523796,471.92819182319,489.65270022124,496.92751979948,523.2511306012],description:"Shruti/Mathieu's Magic Mode scale in 94-et (garibaldi) temperament"},indian_rat:{frequencies:[261.6255653006,269.55361273395,277.4816601673,285.40970760065,294.32876096318,302.93486508491,315.75499260417,327.03195662575,337.58137458142,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,404.33041910093,416.22249025095,428.77523202043,441.49314144476,457.84473927605,473.41768959156,490.54793493862,506.37206187213,523.2511306012],description:"Indian Raga, From Fortuna, after Helmholtz, ratios by JC"},indian_rot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,510.98743222773,523.2511306012],description:"Rotated North Indian Gamut"},ionic:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ancient greek Ionic"},iran_diat:{frequencies:[261.6255653006,297.21429859784,337.6441411202,347.13660997509,394.35734781054,448.00148789644,460.59652406882,523.2511306012],description:"Iranian Diatonic from Dariush Anooshfar, Safi-a-ddin Armavi's scale from 125 ET"},iraq:{frequencies:[261.6255653006,290.3675288125,326.6631048533,348.83408706747,387.1561215731,435.55129321875,465.11211608996,516.20736538157,523.2511306012],description:"Iraq 8-tone scale, Ellis"},isfahan_5:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,523.2511306012],description:"Isfahan (IG #2, DF #8), from Rouanet"},islamic:{frequencies:[261.6255653006,283.42769574232,305.22982618403,330.6656450327,348.83408706747,523.2511306012],description:"Islamic Genus (DF#7), from Rouanet"},italian:{frequencies:[261.6255653006,274.68983337859,292.34127285051,309.02606224197,326.6631048533,348.44038788768,366.66693712906,391.11111150212,411.56972129721,437.02884834934,464.06284405662,489.44164088633,523.2511306012],description:"Italian organ temperament, G.C. Klop (1974), 1/12 P.comma, also d'Alembert/Rousseau (1752/67)"},iter1:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,631.61998662719],description:"McLaren style, IE= 2.414214, PD=5, SD=0"},iter10:{frequencies:[261.6255653006,277.06070189651,293.38358189778,297.59908052943,301.91391280887,310.68035879446,328.97472072452,338.5155215149,348.35227203008,368.89204707385,413.65123162392,438.0707139917,463.89070822207,520.1365405381,535.27989222422,550.79066379074,583.29634230953,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter11:{frequencies:[261.6255653006,278.87608544381,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #2"},iter12:{frequencies:[261.6255653006,297.26403435806,306.90779184711,316.86440944623,337.75715313333,360.02747892105,383.76621672426,396.21625406084,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #4"},iter13:{frequencies:[261.6255653006,297.26403435806,337.75715313333,383.76621672426,409.07019206122,436.04260883433],description:"Binary 5/3 Scale #6"},iter14:{frequencies:[261.6255653006,280.22072913446,300.13755324878,344.3186075731,368.79121945838,395.0032340925,453.14877154631,519.85349135637,596.37732215892,638.76512932755,684.16567043124,784.8766959018],description:"Binary Divided 3/1 Scale #2"},iter15:{frequencies:[261.6255653006,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale"},iter16:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,324.90175210669,339.28638158975,369.99442271164,403.48177901006,440,459.48046426806,479.82340237272,523.2511306012],description:"Binary Division Scale 4+2"},iter17:{frequencies:[261.6255653006,278.49896488475,296.46060526524,301.12918013362,305.87127435301,315.58067012184,335.93387506143,346.5975621448,357.59974896504,380.66295170881,431.34763334053,459.16716607109,488.78090454553,553.8613271114,571.44277158458,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #2"},iter18:{frequencies:[261.6255653006,296.46060526524,335.93387506143,357.59974896504,380.66295170881,431.34763334053,488.78090454553,553.8613271114,589.58231097183,627.60710380636,711.17202040031],description:"Binary E Scale #4"},iter19:{frequencies:[261.6255653006,322.51878830959,331.06584352035,339.83940187549,358.09020513941,397.58488163802,418.936859706,441.43552612833,490.12256936272,604.19836236377,670.83693141722,744.82523718317,918.18295398723,967.49323514067,1019.45167961503,1131.88958971281,1395.33634826987],description:"Binary Kidjel Ratio scale #2, IE=16/3"},iter2:{frequencies:[261.6255653006,264.43874342211,268.51044859798,278.54662176283,304.33994330886,376.91818729747,466.76379263857,529.06503205232,631.63886479716],description:"Iterated 1 + SQR(2) Scale, IE=2.414214, PD=5, SD=1"},iter20:{frequencies:[261.6255653006,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale #2"},iter21:{frequencies:[261.6255653006,265.58958666715,269.61366892789,277.84567157694,295.07138236029,304.08067308856,313.36504071103,332.79286022776,353.42515415018,375.3365967665,386.79659161311,398.60648967463,423.31905787312],description:"Binary PHI Scale 5+2 #2"},iter22:{frequencies:[261.6255653006,301.8727519909,307.3207469799,312.86706369289,324.26179396336,348.311367392,360.99698978488,374.14462916403,401.89387036212,463.7192413329,498.11197631533,535.05552246568,617.36582527423,639.85050556571,663.15408964479,712.33833913185,821.92095613931],description:"Binary PI Scale #2"},iter23:{frequencies:[261.6255653006,280.22072913446,282.63618845904,285.07246866924,290.00821285991,300.13755151512,305.33413252207,310.62068712289,321.46997343155,344.3186075731,356.34488692223,368.79121945838,395.00323181087,401.84231702948,408.7998141568,423.07827792492,453.14877154631],description:"Binary SQR(3) Scale #2"},iter24:{frequencies:[261.6255653006,289.31157243481,292.97226416221,296.67927674571,304.23460945445,319.92739457651,328.07477344771,336.42963427227,353.78307729046,391.22147055517,411.40114203819,432.62170761687,478.4030399831,490.58621022536,503.07964402145,529.02909391167,585.01254970054],description:"Binary SQR(5) Scale #2"},iter25:{frequencies:[261.6255653006,295.4600775297,299.98610231105,304.581459303,313.98443628203,333.67021037701,343.97120738708,354.59021667251,376.82183739983,425.55401329039,452.23482674104,480.58843796626,542.7401414615,559.49550492793,576.76813324226,612.92956630767,692.19618110881],description:"Binary SQR(7) Scale #2"},iter26:{frequencies:[261.6255653006,266.56189672137,275.04226095704,276.16031892841,278.32506946872,283.8915708581,299.68019298069,302.93486508491,309.19384990071,326.13597866239,377.90359432309,389.87339142835,411.92110281371,477.08191319521,486.74523776856,503.12608711654,552.32063785682,711.29450566101],description:"E Scale"},iter27:{frequencies:[261.6255653006,264.53251602616,264.59858308811,264.97973921471,266.91093025617,277.4816601673,277.93638607994,279.98525409362,291.05844139692,358.0999925052,361.3330282979,375.61956161015,462.09190754392,465.48964215821,480.4396744611,568.53247844169,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=3"},iter28:{frequencies:[261.6255653006,265.20947715403,272.47639519786,295.60291144354,377.3445653374,784.8766959018],description:"McLaren 3-Division Scale"},iter29:{frequencies:[261.6255653006,264.46932144517,267.35459227799,273.20191774753,285.29018929764,311.12229387098,370.01329949656,523.2511306012],description:"Iterated Binary Division of the Octave, IE=2, PD=6, SD=0"},iter3:{frequencies:[261.6255653006,291.72408166262,314.40967058055,328.65360269166,338.82655178274,356.71329642628,384.4758307461,404.77917650282,417.30358762823,426.15298265459,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter30:{frequencies:[261.6255653006,263.40533105094,266.47048317654,274.97380842818,299.54231389489,377.98194879009,711.1793535636],description:"Iterated E-scale, IE= 2.71828, PD=5, SD=0"},iter31:{frequencies:[261.6255653006,264.53251602616,277.4816601673,358.0999925052,1395.33634826987],description:"Iterated Kidjel Ratio Scale, IE=16/3, PD=3, SD=0"},iter32:{frequencies:[261.6255653006,264.32273607689,265.98599138894,268.74462830198,273.21657135822,280.65287914064,293.09931751721,314.43072526953,352.25402909754,423.30428543018],description:"Iterated PHI scale, IE= 1.61803339, PD=8, SD=0"},iter33:{frequencies:[261.6255653006,264.70351312767,271.46111286829,293.79264300149,376.62581378438,821.87425059077],description:"Iterated PI Scale, IE= 3.14159, PD=4, SD=0"},iter34:{frequencies:[261.6255653006,263.41752122732,264.70351312767,267.00143308075,271.01725226011,278.10591587072,290.81088732616,314.21361862735,359.24704489038,453.1728541814],description:"Iterated SQR3 Scale, IE= 1.73205, PD=8, SD=0"},iter35:{frequencies:[261.6255653006,263.32443260775,265.41724016003,270.17542037578,281.14986121856,307.30621955943,374.94109676838,585.0238335194],description:"Iterated SQR 5 Scale, IE= 2.23607, PD=6, SD=0"},iter36:{frequencies:[261.6255653006,263.60757715894,266.85807660661,275.72514666411,300.63990398578,377.90359432309,692.2176415245],description:"Iterated SQR 7 Scale, IE= 2.64575, PD=5, SD=0"},iter37:{frequencies:[261.6255653006,295.02271214403,313.28742377221,326.0879260201,332.68289475257,342.82647426905,364.05069339959,375.15068445646,382.73792346942,386.58911684499,392.4383479509],description:"Iterated 3/2 scale, IE=3/2, PD=3, SD=2"},iter4:{frequencies:[261.6255653006,267.82522324611,277.41331493081,278.97828136646,281.37089098366,287.35922746131,302.93486508491,307.2300216374,313.76772341995,330.79094463294,377.42704502382,390.96854140427,412.14986314478,470.26367433779,480.2976795817,495.79659597089,536.59937372878,654.0639132515],description:"Iterated 5/2 Scale, IE=5/2, PD=4, SD=3"},iter5:{frequencies:[261.6255653006,292.148547919,314.45380444784,328.62723446295,338.43307070995,355.46951807147,382.59222452561,401.8431885336,413.81298563886,422.03832066739,436.04260883433],description:"Iterated 5/3 Scale, analog of Hexachord, IE=5/3, PD=3, SD=2"},iter6:{frequencies:[261.6255653006,276.4345595629,292.10621368514,326.13597866239,344.58001283494,364.1180547998,406.52587839016,453.84026633778,506.69255051888,535.41976154541,565.73733351326,631.63886479716],description:"Iterated binary 1+SQR(2) scale, IE= 2.414214, G=2, PD=4, SD=2"},iter7:{frequencies:[261.6255653006,279.30296836145,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=3, SD=2"},iter8:{frequencies:[261.6255653006,298.19688088025,308.09852755794,318.34159693919,339.84351781315,362.8203594263,387.34174602946,400.24806631808,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=2"},iter9:{frequencies:[261.6255653006,298.19688088025,339.84351781315,387.34174602946,413.53718386224,441.49314144476],description:"Iterated 27/16 Scale, analog of Hexachord, IE=27/16, PD=2, SD=12"},ives:{frequencies:[261.6255653006,302.26980244078,349.22823143301,375.37611551499,433.69180740168,501.06699929295,578.9091089468,622.25396744417],description:`Charles Ives' stretched major scale, "Scrapbook" pp. 108-110`},ives2a:{frequencies:[261.6255653006,303.72829164664,352.60650301302,379.92060676531,441.0602510811,512.03893786214,594.44004134205,640.48740045057],description:"Speculation by Joe Monzo for Ives' other stretched scale"},ives2b:{frequencies:[261.6255653006,300.81831683262,345.88232658126,370.885984045,426.44646246473,490.3301667422,563.78395315523,604.53960488156],description:"Alt. speculation by Joe Monzo for Ives' other stretched scale"},abell1:{frequencies:[261.6255653006,273.68256372566,292.6487650037,305.95868600104,327.16162250699,342.04121835587,365.95599773772,391.31674786192,409.35055662695,437.71854962063,457.62637091093,489.33987776603,523.2511306012],description:"Ross Abell's French Baroque Meantone 1, a'=520"},abell2:{frequencies:[261.6255653006,275.90473010106,294.68429813772,308.79945157961,330.00857764288,348.01999353916,369.14054089803,392.90218486657,412.67427966689,441.52756934418,463.21121723949,493.59810545034,523.2511306012],description:"Ross Abell's French Baroque Meantone 2, a'=520"},abell3:{frequencies:[261.6255653006,275.90505521365,293.49576926806,308.08682543008,329.24698751194,350.03632176331,368.71497179837,392.44893164635,412.28324979826,440.25465969448,462.14293627657,492.7440237889,523.2511306012],description:"Ross Abell's French Baroque Meantone 3, a' = 520"},abell4:{frequencies:[261.6255653006,274.95017225036,292.98704147282,308.2648062752,328.10786809908,346.01554587335,367.43868454848,391.54284657258,411.48414905414,438.47771564426,461.87534079415,491.0387427573,523.2511306012],description:"Ross Abell's French Baroque Meantone 4, a'=520"},abell5:{frequencies:[261.6255653006,277.98432293805,295.87822452474,311.66659310186,331.15428443044,349.43001184052,371.27895029721,395.6350356808,416.26536455926,442.29334161825,466.70260620202,495.88429116026,523.2511306012],description:"Ross Abell's French Baroque Meantone 5, a'=520"},abell6:{frequencies:[261.6255653006,277.02257024271,293.32570896007,311.66659310186,330.00857764288,349.43001184052,369.99442271164,391.76907592069,414.82519580403,440.76312290327,466.70260620202,494.16866184506,523.2511306012],description:"Ross Abell's French Baroque Meantone 6, a'=520"},abell7:{frequencies:[261.6255653006,277.50302994288,294.34406205295,310.05056613125,328.86683469969,348.82502010853,369.99442271164,392.44854854484,416.26536455926,438.47771564426,465.08793784701,493.31307433255,523.2511306012],description:"Ross Abell's French Baroque Meantone 7, a'=520"},abell8:{frequencies:[261.6255653006,277.82379926216,294.68429813772,311.48661940174,329.62755691287,350.03605285217,371.27895029721,392.44854854484,415.30469757995,441.01779121056,467.78216486233,494.45418731234,523.2511306012],description:"Ross Abell's French Baroque Meantone 8, a'=520"},abell9:{frequencies:[261.6255653006,276.06414495892,293.32570896007,309.69258848748,330.19925313612,348.62358905703,369.14054089803,391.99543598175,412.67427966689,440,464.55095742407,493.88330125613,523.2511306012],description:"Ross Abell's French Baroque Meantone 9, a'=520"},"ad-dik":{frequencies:[261.6255653006,269.0348830679,275.62199471997,285.40970760065,294.32876096318,300.46061014991,310.07474405997,321.08592105074,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.49599295996,378.42269266694,392.4383479509,400.61414686654,413.43299207996,428.11456140098,441.49314144476,453.48431318771,470.92601754108,479.64686971777,490.54793493862,508.71637697339,523.2511306012],description:"Amin Ad-Dik, d'Erlanger, vol 5, p.42"},adjeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Soeroepan adjeng"},aeolic:{frequencies:[261.6255653006,294.32876096318,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Ancient Greek Aeolic, also tritriadic scale of the 54:64:81 triad"},agricola:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.42486507835,331.11985608357,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Agricola's Monochord, Rudimenta musices (1539)"},"al-din":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012,551.24398943995,580.73440862809,588.65752192635,620.14948811994,653.3262097066,688.27781763329,697.66817413493,734.99198591993,774.31254483746,784.8766959018,826.86598415992,871.10161294214,917.70375684439,930.22423217991,979.98931455991,1032.41672644994,1046.5022612024,1102.48797887989],description:"Safi al-Din's complete lute tuning on 5 strings 4/3 apart"},"al-din_19":{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic scale by Safi al-Din"},"al-farabi":{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Al-Farabi Syn Chrom"},"al-farabi_19":{frequencies:[261.6255653006,275.62199471997,285.40970760065,294.32876096318,310.07474405997,326.6631048533,331.11985608357,336.87132687997,348.83408706747,367.49599295996,380.54627680087,392.4383479509,413.43299207996,435.55080647107,441.49314144476,455.28980211491,465.11211608996,489.99465727995,507.3950357345,523.2511306012],description:"Arabic scale by Al Farabi"},"al-farabi_22":{frequencies:[261.6255653006,275.62199471997,277.01530443593,285.40970760065,294.32876096318,310.07474405997,321.08592105074,326.6631048533,331.11985608357,348.83408706747,367.49599295996,369.35373924791,380.54627680087,392.4383479509,413.43299207996,428.11456140098,435.55080647107,441.49314144476,465.11211608996,489.99465727995,492.47165233054,507.3950357345,523.2511306012],description:"Al-Farabi 22 note ud scale"},"al-farabi_9":{frequencies:[261.6255653006,294.32876096318,321.08592105074,331.11985608357,348.83408706747,392.4383479509,428.11456140098,441.49314144476,465.11211608996,523.2511306012],description:"Al-Farabi 9 note ud scale"},"al-farabi_blue":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.81054504865,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Another tuning from Al Farabi, c700 AD"},"al-farabi_chrom":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Al Farabi's Chromatic c700 AD"},"al-farabi_chrom2":{frequencies:[261.6255653006,279.06726965397,325.57848126297,348.83408706747,392.4383479509,418.60090448096,488.36772189445,523.2511306012],description:"Al-Farabi's Chromatic permuted"},"al-farabi_diat":{frequencies:[261.6255653006,299.00064605783,341.71502406609,348.83408706747,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Diatonic"},"al-farabi_diat2":{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Old Phrygian, permuted form of Al-Farabi's reduplicated 10/9 diatonic genus, same as ptolemy_diat"},"al-farabi_div":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al Farabi's 10 intervals for the division of the tetrachord"},"al-farabi_div2":{frequencies:[261.6255653006,275.62199471997,277.01530443593,279.38237857051,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,314.30517589183,321.08592105074,331.11985608357,348.83408706747],description:"Al-Farabi's tetrachord division, incl. extra 2187/2048 & 19683/16384"},"al-farabi_divo":{frequencies:[261.6255653006,275.62199471997,277.01530443593,284.45195690401,288.32205155576,294.32876096318,310.07474405997,311.64221749042,321.08592105074,331.11985608357,348.83408706747,367.49599295996,369.35373924791,379.26927587201,392.4383479509,413.43299207996,415.52295665389,426.67793535601,432.48307733364,441.49314144476,465.11211608996,467.46332623563,481.6288815761,496.67978412536,523.2511306012],description:"Al Farabi's theoretical octave division with identical tetrachords, 10th c."},"al-farabi_dor":{frequencies:[261.6255653006,282.55561052465,313.95067836072,348.83408706747,392.4383479509,423.83341578697,470.92601754108,523.2511306012],description:"Dorian mode of Al-Farabi's 10/9 Diatonic"},"al-farabi_dor2":{frequencies:[261.6255653006,267.07609791103,305.22982618403,348.83408706747,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"Dorian mode of Al-Farabi's Diatonic"},"al-farabi_g1":{frequencies:[261.6255653006,294.32876096318,331.11985608357,367.91095120397,392.4383479509,441.49314144476,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus conjunctum medium, Land"},"al-farabi_g10":{frequencies:[261.6255653006,294.32876096318,343.38355445704,367.91095120397,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Al-Farabi's Greek genus chromaticum forte"},"al-farabi_g11":{frequencies:[261.6255653006,294.32876096318,353.19451315581,372.50983809402,392.4383479509,470.92601754108,496.67978412536,523.2511306012],description:"Al-Farabi's Greek genus chromaticum mollissimum"},"al-farabi_g12":{frequencies:[261.6255653006,294.32876096318,367.91095120397,380.17464957743,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Al-Farabi's Greek genus mollissimum ordinantium"},"al-farabi_g3":{frequencies:[261.6255653006,294.32876096318,336.37572681506,378.42269266694,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus conjunctum primum"},"al-farabi_g4":{frequencies:[261.6255653006,294.32876096318,336.37572681506,384.42940207435,392.4383479509,448.50096908674,512.57253609913,523.2511306012],description:"Al-Farabi's Greek genus forte duplicatum primum"},"al-farabi_g5":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Al-Farabi's Greek genus conjunctum tertium, or forte aequatum"},"al-farabi_g6":{frequencies:[261.6255653006,294.32876096318,336.37572681506,373.75080757229,392.4383479509,448.50096908674,498.33441009638,523.2511306012],description:"Al-Farabi's Greek genus forte disjunctum primum"},"al-farabi_g7":{frequencies:[261.6255653006,294.32876096318,343.38355445704,374.60024122586,392.4383479509,457.84473927605,499.46698830115,523.2511306012],description:"Al-Farabi's Greek genus non continuum acre"},"al-farabi_g8":{frequencies:[261.6255653006,294.32876096318,353.19451315581,378.42269266694,392.4383479509,470.92601754108,504.56359022259,523.2511306012],description:"Al-Farabi's Greek genus non continuum mediocre"},"al-farabi_g9":{frequencies:[261.6255653006,294.32876096318,367.91095120397,383.71749577421,392.4383479509,490.54793493862,511.62332769895,523.2511306012],description:"Al-Farabi's Greek genus non continuum laxum"},"al-hwarizmi":{frequencies:[261.6255653006,294.32876096318,302.73815413355,311.64221749042,321.08592105074,331.11985608357,348.83408706747],description:"Al-Hwarizmi's tetrachord division"},"al-kindi":{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747],description:"Al-Kindi's tetrachord division"},"al-kindi2":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,523.2511306012],description:"Arabic mode by al-Kindi"},"al-mausili":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Arabic mode by Ishaq al-Mausili, ? - 850 AD"},albion:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Terry Riley's Harp of New Albion scale, inverse Malcolm's Monochord, 1/1 on C#"},alembert:{frequencies:[261.6255653006,273.70610837433,292.50627485027,307.8325111191,327.03195662575,347.99121610009,365.92863081328,391.22147055517,409.45161370755,437.39890198442,462.86717295458,489.22460251523,523.2511306012],description:"Jean-Le Rond d'Alembert modified meantone (1752)"},alembert2:{frequencies:[261.6255653006,274.99999938609,292.5775112526,309.28790118232,327.03195662575,348.53877105022,367.08095907728,391.31674786192,412.03444522126,437.50542525192,464.32494005553,489.99429388332,523.2511306012],description:"d'Alembert (?)"},alves:{frequencies:[261.6255653006,267.07609791103,294.32876096318,305.22982618403,327.03195662575,336.37572681506,348.83408706747,359.73515228832,392.4383479509,425.14154361347,448.50096908674,457.84473927605,504.56359022259,523.2511306012],description:'Bill Alves, tuning for "Instantaneous Motion", 1/1 vol. 6/3'},alves_22:{frequencies:[261.6255653006,269.80136421624,279.06726965397,287.78812183066,297.30177875068,305.22982618403,317.12189733406,327.03195662575,336.37572681506,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,406.97310157871,418.60090448096,431.68218274599,448.50096908674,460.46099492906,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"11-limit rational interpretation of 22-tET, Bill Alves, tuning list 9-1-98"},amity:{frequencies:[261.6255653006,265.19165427121,275.22357733525,278.97501409741,282.77758484276,286.63198489776,290.53892403345,294.49911672845,305.63971046081,309.80573452349,314.02854360428,318.30891171173,322.64762154083,327.04547204619,339.41726037801,344.04368955469,348.73317930436,353.48658917459,358.304790429,371.85908609843,376.92771379174,382.0654272409,387.27317253358,392.55190203235,397.90258328792,412.95482206782,418.58360545772,424.28911201625,430.07238503487,435.93448947821,452.42543551278,458.59222335614,464.84306764133,471.17911410024,477.60152408164,484.11147196776,502.42490579041,509.27320879713,516.21486058423,523.2511306012],description:"Amity temperament, g=339.508826, 5-limit"},angklung:{frequencies:[261.6255653006,294.70472480469,326.28010551578,372.13971319976,421.00655337609,533.77627782773,589.40944960937,672.10704388342,757.81210779894],description:"Scale of an anklung set from Tasikmalaya. 1/1=174 Hz"},appunn:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.38237857051,287.10624449997,290.69507255622,294.32876096318,302.46583782713,306.24666079997,310.07474405997,322.99452506247,327.03195662575,331.11985608357,340.27406755552,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.50983809402,382.80832599996,387.59343007496,392.4383479509,408.78994578219,413.89982010446,419.07356785577,430.65936674996,436.04260883433,441.49314144476,453.6987567407,459.36999119996,465.11211608996,484.4917875937,490.54793493862,496.67978412536,510.41110133328,516.79124009995,523.2511306012],description:"Probable tuning of A. Appunn's 36-tone harmonium w. 3 manuals 80/81 apart,1887"},arabic:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,387.15627241873,392.4383479509,413.43299207996,435.55080647107,441.49314144476,465.11211608996,489.99465727995,516.20836322497,523.2511306012],description:"Arabic 17-tone Pythagorean mode, Safi al-Din"},arabic_s:{frequencies:[261.6255653006,275.62199471997,290.69507255622,294.32876096318,310.07474405997,327.03195662575,331.11985608357,348.83408706747,367.91095120397,387.59343007496,392.4383479509,413.43299207996,436.04260883433,441.49314144476,465.11211608996,490.54793493862,516.79124009995,523.2511306012],description:"Schimatically altered Arabic 17-tone Pythagorean mode"},arch_chrom:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,441.49314144476,523.2511306012],description:"Archytas' Chromatic"},arch_chromc2:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,331.11985608357,343.38355445704,348.83408706747,361.75386806997,392.4383479509,406.97310157871,422.04617941496,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:"Product set of 2 of Archytas' Chromatic"},arch_dor:{frequencies:[261.6255653006,271.31540105247,294.32876096318,348.83408706747,392.4383479509,406.97310157871,465.11211608996,441.49314144476,523.2511306012],description:"Dorian mode of Archytas' Chromatic with added 16/9"},arch_enh:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Archytas' Enharmonic"},arch_enh2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,406.97310157871,465.11211608996,418.60090448096,523.2511306012],description:"Archytas' Enharmonic with added 16/9"},arch_enh3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,358.80077526939,448.50096908674,523.2511306012],description:"Complex 9 of p. 113 based on Archytas's Enharmonic"},arch_enhp:{frequencies:[261.6255653006,269.10058145205,279.06726965397,348.83408706747,392.4383479509,403.65087217807,418.60090448096,523.2511306012],description:"Permutation of Archytas's Enharmonic with the 36/35 first"},arch_enht:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 113 based on Archytas's Enharmonic"},arch_enht2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,490.54793493862,508.71637697339,523.2511306012],description:"Complex 5 of p. 113 based on Archytas's Enharmonic"},arch_enht3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 113 based on Archytas's Enharmonic"},arch_enht4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,339.14425131559,348.83408706747,436.04260883433,523.2511306012],description:"Complex 8 of p. 113 based on Archytas's Enharmonic"},arch_enht5:{frequencies:[261.6255653006,263.77886213435,271.31540105247,279.06726965397,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 10 of p. 113 based on Archytas's Enharmonic"},arch_enht6:{frequencies:[261.6255653006,271.31540105247,279.06726965397,289.40309445597,297.67175429757,348.83408706747,372.08969287196,523.2511306012],description:"Complex 2 of p. 113 based on Archytas's Enharmonic"},arch_enht7:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,287.04062021552,348.83408706747,358.80077526939,523.2511306012],description:"Complex 11 of p. 113 based on Archytas's Enharmonic"},arch_mult:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,490.54793493862,504.56359022259,523.2511306012],description:"Multiple Archytas"},arch_ptol:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"Archytas/Ptolemy Hybrid 1"},arch_ptol2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,470.92601754108,523.2511306012],description:"Archytas/Ptolemy Hybrid 2"},arch_sept:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,310.07474405997,348.83408706747,361.75386806997,392.4383479509,406.97310157871,418.60090448096,441.49314144476,465.11211608996,523.2511306012],description:"Archytas Septimal"},ariel1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 1"},ariel2:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Ariel 2"},ariel3:{frequencies:[261.6255653006,279.06726965397,290.69507255622,310.07474405997,322.99452506247,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,465.11211608996,484.4917875937,523.2511306012],description:"Ariel's 12-tone JI scale"},ariel_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,302.80736724606,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Ariel 19-tone scale"},ariel_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Ariel's 31-tone system"},arist_archenh:{frequencies:[261.6255653006,271.89678302796,279.86396690685,349.22823143301,391.99543598175,407.38487419079,419.32216217931,523.2511306012],description:"PsAristo Arch. Enharmonic, 4 + 3 + 23 parts, similar to Archytas' enharmonic"},arist_chrom:{frequencies:[261.6255653006,277.18263097687,329.62755691287,349.22823143301,391.99543598175,415.30469757995,493.88330125613,523.2511306012],description:"Dorian, Neo-Chromatic,6+18+6 parts = Athanasopoulos' Byzant.liturg. 2nd chromatic"},arist_chrom2:{frequencies:[261.6255653006,282.57123920205,336.03572815422,349.22823143301,391.99543598175,423.37848741825,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 18 + 4 parts"},arist_chrom3:{frequencies:[261.6255653006,279.86388595857,299.37253740865,349.22869576324,391.99491478937,419.32387668214,448.55625766774,523.2511306012],description:"PsAristo 3 Chromatic, 7 + 7 + 16 parts"},arist_chrom4:{frequencies:[261.6255653006,275.85166538713,290.85115308106,349.22823143301,391.99543598175,413.31050241775,435.7843409791,523.2511306012],description:"PsAristo Chromatic, 5.5 + 5.5 + 19 parts"},arist_chromenh:{frequencies:[261.6255653006,269.29177952703,293.66476791741,349.22823143301,391.99543598175,403.48177901006,440,523.2511306012],description:"Aristoxenos' Chromatic/Enharmonic, 3 + 9 + 18 parts"},arist_chrominv:{frequencies:[261.6255653006,311.12698372208,329.62755691287,349.22823143301,391.99543598175,466.16376151809,493.88330125613,523.2511306012],description:"Aristoxenos' Inverted Chromatic, Dorian mode, 18 + 6 + 6 parts"},arist_chromrej:{frequencies:[261.6255653006,277.18263097687,285.30470202322,349.22823143301,391.99543598175,415.30469757995,427.47405410759,523.2511306012],description:"Aristoxenos Rejected Chromatic, 6 + 3 + 21 parts"},arist_chromunm:{frequencies:[261.6255653006,273.20871865617,282.57118533961,349.22823143301,391.99543598175,409.35055662695,423.37840671577,523.2511306012],description:"Unmelodic Chromatic, genus of Aristoxenos, Dorian Mode, 4.5 + 3.5 + 22 parts"},arist_diat:{frequencies:[261.6255653006,293.66476791741,311.12698372208,349.22823143301,391.99543598175,440,466.16376151809,523.2511306012],description:"Phrygian octave species on E, 12 + 6 + 12 parts"},arist_diat2:{frequencies:[261.6255653006,279.86396690685,311.12698372208,349.22823143301,391.99543598175,419.32216217931,466.16376151809,523.2511306012],description:"PsAristo 2 Diatonic, 7 + 11 + 12 parts"},arist_diat3:{frequencies:[261.6255653006,286.68133251996,314.13668154225,349.22823143301,391.99543598175,429.53666932309,470.6732130613,523.2511306012],description:"PsAristo Diat 3, 9.5 + 9.5 + 11 parts"},arist_diat4:{frequencies:[261.6255653006,282.57123920205,305.19382000629,349.22823143301,391.99543598175,423.37848741825,457.27406033445,523.2511306012],description:"PsAristo Diatonic, 8 + 8 + 14 parts"},arist_diatdor:{frequencies:[261.6255653006,299.37379946195,305.19382000629,349.22823143301,391.99543598175,448.5538823653,457.27406033445,523.2511306012],description:"PsAristo Redup. Diatonic, 14 + 2 + 14 parts"},arist_diatinv:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,493.88330125613,523.2511306012],description:"Lydian octave species on E, major mode, 12 + 12 + 6 parts"},arist_diatred:{frequencies:[261.6255653006,299.37379946195,342.56848033562,349.22823143301,391.99543598175,448.5538823653,513.27277840175,523.2511306012],description:"Aristo Redup. Diatonic, Dorian Mode, 14 + 14 + 2 parts"},arist_diatred2:{frequencies:[261.6255653006,271.89678302796,308.14612137864,349.22823143301,391.99543598175,407.38487419079,461.69751437372,523.2511306012],description:"PsAristo 2 Redup. Diatonic 2, 4 + 13 + 13 parts"},arist_diatred3:{frequencies:[261.6255653006,282.57123920205,314.13668154225,349.22823143301,391.99543598175,423.37848741825,470.6732130613,523.2511306012],description:"PsAristo 3 Redup. Diatonic, 8 + 11 + 11 parts"},arist_enh:{frequencies:[261.6255653006,269.29177952703,277.18263097687,349.22823143301,391.99543598175,403.48177901006,415.30469757995,523.2511306012],description:"Aristoxenos' Enharmonion, Dorian mode"},arist_enh2:{frequencies:[261.6255653006,270.59109411209,279.86402025325,349.22823143301,391.99543598175,405.42855124795,419.32224210861,523.2511306012],description:"PsAristo 2 Enharmonic, 3.5 + 3.5 + 23 parts"},arist_enh3:{frequencies:[261.6255653006,267.99870394401,274.52693220706,349.22823143301,391.99543598175,401.54435471309,411.32564531909,523.2511306012],description:"PsAristo Enharmonic, 2.5 + 2.5 + 25 parts"},arist_hemchrom:{frequencies:[261.6255653006,273.20871865617,285.30470202322,349.22823143301,391.99543598175,409.35055662695,427.47405410759,523.2511306012],description:"Aristoxenos's Chromatic Hemiolion, Dorian Mode"},arist_hemchrom2:{frequencies:[261.6255653006,273.20871865617,293.66476791741,349.22823143301,391.99543598175,409.35055662695,440,523.2511306012],description:"PsAristo C/H Chromatic, 4.5 + 7.5 + 18 parts"},arist_hemchrom3:{frequencies:[261.6255653006,271.81876914348,282.83844897362,348.83408706747,392.4383479509,407.72815371522,424.25767346043,523.2511306012],description:"Dorian mode of Aristoxenos' Hemiolic Chromatic according to Ptolemy's interpret"},arist_hypenh2:{frequencies:[261.6255653006,267.3544191957,273.20871865617,349.22823143301,391.99543598175,400.57901831518,409.35055662695,523.2511306012],description:"PsAristo 2nd Hyperenharmonic, 37.5 + 37.5 + 425 cents"},arist_hypenh3:{frequencies:[261.6255653006,265.43099677612,269.29177952703,349.22823143301,391.99543598175,397.69714089209,403.48177901006,523.2511306012],description:"PsAristo 3 Hyperenharmonic, 1.5 + 1.5 + 27 parts"},arist_hypenh4:{frequencies:[261.6255653006,266.71168334607,271.8968348557,349.22823143301,391.99543598175,399.61600264311,407.38495184466,523.2511306012],description:"PsAristo 4 Hyperenharmonic, 2 + 2 + 26 parts"},arist_hypenh5:{frequencies:[261.6255653006,265.12453591719,268.67030163715,349.22823143301,391.99543598175,397.23796841836,402.55061428954,523.2511306012],description:"PsAristo Hyperenharmonic, 23 + 23 + 454 cents"},arist_intdiat:{frequencies:[261.6255653006,275.39533189537,307.79478270659,348.83408706747,392.4383479509,413.09299784305,461.69217405988,523.2511306012],description:"Dorian mode of Aristoxenos's Intense Diatonic according to Ptolemy"},arist_penh2:{frequencies:[261.6255653006,269.29177952703,339.28638158975,349.22823143301,391.99543598175,403.48177901006,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 3 + 24 + 3 parts"},arist_penh3:{frequencies:[261.6255653006,329.62755691287,339.28638158975,349.22823143301,391.99543598175,493.88330125613,508.3551866238,523.2511306012],description:"Permuted Aristoxenos's Enharmonion, 24 + 3 + 3 parts"},arist_pschrom2:{frequencies:[261.6255653006,278.52001838539,296.50560089735,349.22823143301,391.99543598175,417.30851459865,444.25644015807,523.2511306012],description:"PsAristo 2 Chromatic, 6.5 + 6.5 + 17 parts"},arist_softchrom:{frequencies:[261.6255653006,271.89678302796,282.57123920205,349.22823143301,391.99543598175,407.38487419079,423.37848741825,523.2511306012],description:"Aristoxenos's Chromatic Malakon, Dorian Mode"},arist_softchrom2:{frequencies:[261.6255653006,277.18263097687,324.90175210669,349.22823143301,391.99543598175,415.30469757995,486.80259447109,523.2511306012],description:"Aristoxenos' Soft Chromatic, 6 + 16.5 + 9.5 parts"},arist_softchrom3:{frequencies:[261.6255653006,281.2143451833,329.62755691287,349.22823143301,391.99543598175,421.34544350737,493.88330125613,523.2511306012],description:"Aristoxenos's Chromatic Malakon, 9.5 + 16.5 + 6 parts"},arist_softchrom4:{frequencies:[261.6255653006,277.18263097687,297.93622032612,349.22823143301,391.99543598175,415.30469757995,446.39994737251,523.2511306012],description:"PsAristo S. Chromatic, 6 + 7.5 + 16.5 parts"},arist_softchrom5:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,392.4383479509,405.97070477679,420.46965851882,523.2511306012],description:"Dorian mode of Aristoxenos' Soft Chromatic according to Ptolemy's interpretati"},arist_softdiat:{frequencies:[261.6255653006,277.18263097687,302.26980244078,349.22823143301,391.99543598175,415.30469757995,452.89298412314,523.2511306012],description:"Aristoxenos's Diatonon Malakon, Dorian Mode"},arist_softdiat2:{frequencies:[261.6255653006,277.18263097687,320.24370022528,349.22823143301,391.99543598175,415.30469757995,479.82340237272,523.2511306012],description:"Dorian Mode, 6 + 15 + 9 parts"},arist_softdiat3:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Dorian Mode, 9 + 15 + 6 parts"},arist_softdiat4:{frequencies:[261.6255653006,285.30470202322,302.26980244078,349.22823143301,391.99543598175,427.47405410759,452.89298412314,523.2511306012],description:"Dorian Mode, 9 + 6 + 15 parts"},arist_softdiat5:{frequencies:[261.6255653006,302.26980244078,320.24370022528,349.22823143301,391.99543598175,452.89298412314,479.82340237272,523.2511306012],description:"Dorian Mode, 15 + 6 + 9 parts"},arist_softdiat6:{frequencies:[261.6255653006,302.26980244078,329.62755691287,349.22823143301,391.99543598175,452.89298412314,493.88330125613,523.2511306012],description:"Dorian Mode, 15 + 9 + 6 parts"},arist_softdiat7:{frequencies:[261.6255653006,275.39533189537,299.00064605783,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Dorian mode of Aristoxenos's Soft Diatonic according to Ptolemy"},arist_synchrom:{frequencies:[261.6255653006,277.18263097687,293.66476791741,349.22823143301,391.99543598175,415.30469757995,440,523.2511306012],description:"Aristoxenos's Chromatic Syntonon, Dorian Mode"},arist_syndiat:{frequencies:[261.6255653006,277.18263097687,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Aristoxenos's Diatonon Syntonon, Dorian Mode"},arist_unchrom:{frequencies:[261.6255653006,271.89678302796,293.66476791741,349.22823143301,391.99543598175,407.38487419079,440,523.2511306012],description:"Aristoxenos's Unnamed Chromatic, Dorian Mode, 4 + 8 + 18 parts"},arist_unchrom2:{frequencies:[261.6255653006,282.57123920205,293.66476791741,349.22823143301,391.99543598175,423.37848741825,440,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 8 + 4 + 18 parts"},arist_unchrom3:{frequencies:[261.6255653006,311.12698372208,323.3415889232,349.22823143301,391.99543598175,466.16376151809,484.46499093218,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 4 + 8 parts"},arist_unchrom4:{frequencies:[261.6255653006,311.12698372208,336.03572815422,349.22823143301,391.99543598175,466.16376151809,503.48470957687,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 18 + 8 + 4 parts"},arith13:{frequencies:[261.6255653006,269.80136421624,294.32876096318,318.85615771011,327.03195662575,343.38355445704,367.91095120397,371.99885066179,392.4383479509,449.66894036041,457.84473927605,490.54793493862,523.2511306012],description:"The first 13 terms of the arithmetic series, octave reduced"},arith22:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,312.72430852337,318.85615771011,327.03195662575,343.38355445704,349.51540364377,367.91095120397,371.99885066179,388.35044849308,392.4383479509,429.2294430713,449.66894036041,457.84473927605,472.15238737843,490.54793493862,517.11928141447,523.2511306012],description:"The first 22 terms of the arithmetic series, octave reduced"},arnautoff_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,523.2511306012],description:"Philip Arnautoff, transposed Archytas enharmonic (2005), 1/1 vol 12/1"},"aron-neidhardt":{frequencies:[261.6255653006,275.62199471997,292.53519855339,310.07474405997,327.04005607367,348.83408706747,367.49599295996,391.42133845759,413.43299207996,437.43855491017,465.11211608996,489.99465727995,523.2511306012],description:"Aron-Neidhardt equal beating well temperament"},art_nam:{frequencies:[261.6255653006,287.78812183066,317.68818643644,324.77656382143,348.83408706747,353.19451315581,392.4383479509,431.68218274599,473.41768959156,523.2511306012],description:"Artificial Nam System"},artusi:{frequencies:[261.6255653006,276.63528606528,292.50629850443,309.28767786778,327.03195662575,349.91920725962,369.99442271164,391.22137338448,413.66637442451,437.39882871549,462.49310482954,489.02679755603,523.2511306012],description:"Lute tuning of Giovanni Maria Artusi (1603). 1/4-comma w. acc. 1/2-way naturals"},astro:{frequencies:[13.75,13.8316453704,13.91377553836,13.99639338254,14.07098381034,14.15453513289,14.23858257025,14.32312915102,14.40817767355,14.49373120103,14.57979273211,14.66636528323,14.75345188876,14.84105560105,14.92917949063,15.01782664621,15.10700017487,15.1875093157,15.27769039377,15.36840704189,15.45966226264,15.55145934276,15.64380149972,15.73669197012,15.83013400973,15.92413089371,16.01868591662,16.11380239262,16.20948365552,16.30573305894,16.39263055969,16.48996755631,16.58788242969,16.68637870643,16.78545983879,16.88512929958,16.98539058219,17.08624720077,17.18770269033,17.28976060687,17.39242452751,17.49569805061,17.59958489756,17.69337767194,17.7984382082,17.90412257766,18.01043448453,18.11737765504,18.22495583753,18.33317280261,18.44203234327,18.55153827502,18.66169443603,18.77250468726,18.88397302169,18.99610312873,19.09733831271,19.21073534981,19.32480572095,19.43955342429,19.55498248173,19.67109693902,19.78790086598,19.90539835657,20.02359352906,20.14249064253,20.26209363229,20.38240680608,20.50343438087,20.62518059864,20.73509756099,20.85821935885,20.98207223488,21.1066605301,21.23198861133,21.35806087129,21.4848817288,21.61245575376,21.74078716869,21.86988059568,21.99974055944,22.13037161156,22.26177833063,22.38041714879,22.51330859954,22.64698913914,22.78146345308,22.91673625467,23.0528122852,23.18969644807,23.32739327396,23.46590772227,23.60524464792,23.74540893465,23.88640549521,24.02823927151,24.15629202037,24.29972834105,24.44401636439,24.58916114767,24.73516777819,24.8820415172,25.02978722599,25.17841022592,25.32791572621,25.478308967,25.62959521956,25.78177978645,25.93486800174,26.07308167197,26.22789959273,26.38363679833,26.54029874734,26.69789108494,26.85641902723,27.01588828389,27.17630444429,27.33767313101,27.5],description:"Astro temperament, g=132.194511, 5-limit"},athan_chrom:{frequencies:[261.6255653006,285.30470202322,329.62755691287,349.22823143301,391.99543598175,427.47405410759,493.88330125613,523.2511306012],description:"Athanasopoulos's Byzantine Liturgical mode Chromatic"},auftetf:{frequencies:[261.6255653006,264.29521392612,269.80136421624,287.78812183066,359.73515228832,380.54627680087,384.42940207435,392.4383479509,418.60090448096],description:"5/4 C.I. again"},augmented:{frequencies:[261.6255653006,312.71213182188,329.62755691287,393.99259743989,415.30469757995,496.39956701727,523.2511306012],description:"Augmented temperament, g=91.2, oct=1/3, 5-limit"},augteta:{frequencies:[261.6255653006,280.76889934699,302.93486508491,328.90071066361,359.73515228832,380.54627680087,408.39112632289,440.63253103259,478.40103369253],description:"Linear Division of the 11/8, duplicated on the 16/11"},augteta2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,373.75080757229,402.50086969323,436.04260883433,475.68284600109],description:"Linear Division of the 7/5, duplicated on the 10/7"},augtetb:{frequencies:[261.6255653006,270.8594087818,280.76889934699,302.93486508491,359.73515228832,380.54627680087,295.48299139832,408.39112632289,440.63253103259],description:"Harmonic mean division of 11/8"},augtetc:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,359.73515228832,380.54627680087,407.72815371522,439.09185784716,475.68284600109],description:"11/10 C.I."},augtetd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,359.73515228832,380.54627680087,395.18267206244,410.98997894494,428.11456140098],description:"11/9 C.I."},augtete:{frequencies:[261.6255653006,269.80136421624,278.50463402967,287.78812183066,359.73515228832,380.54627680087,392.4383479509,405.0976494977,418.60090448096],description:"5/4 C.I."},augtetg:{frequencies:[261.6255653006,278.50463402967,297.71185016965,319.76457981184,359.73515228832,380.54627680087,405.0976494977,433.03541842858,465.11211608996],description:"9/8 C.I."},augteth:{frequencies:[261.6255653006,278.50463402967,287.78812183066,319.76457981184,359.73515228832,380.54627680087,405.0976494977,418.60090448096,465.11211608996],description:"9/8 C.I. A gapped version of this scale is called AugTetI"},augtetj:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. comprised of 11:10:9:8 subharmonic series on 1 and 8:9:10:11 on 16/11"},augtetk:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,418.60090448096,465.11211608996],description:"9/8 C.I. This is the converse form of AugTetJ"},augtetl:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,380.54627680087,428.11456140098,475.68284600109],description:"9/8 C.I. This is the harmonic form of AugTetI"},avg_bac:{frequencies:[261.6255653006,290.69507255622,307.79478270659,348.83408706747,392.4383479509,436.04260883433,461.69217405988,523.2511306012],description:"Average Bac System"},avicenna:{frequencies:[261.6255653006,290.69507255622,299.00064605783,348.83408706747,392.4383479509,436.04260883433,448.50096908674,523.2511306012],description:"Soft diatonic of Avicenna (Ibn Sina)"},avicenna_17:{frequencies:[261.6255653006,278.99913799634,283.42769574232,294.32876096318,310.07474405997,318.85615771011,331.11985608357,348.83408706747,371.99885066179,377.90359432309,392.4383479509,413.43299207996,425.14154361347,441.49314144476,465.11211608996,495.99846754905,503.87145909745,523.2511306012],description:"Tuning by Avicenna (Ibn Sina), Ahmed Mahmud Hifni, Cairo, 1977"},avicenna_19:{frequencies:[261.6255653006,275.62199471997,283.49690885483,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,358.80077526939,372.50983809402,377.99587847311,392.4383479509,413.43299207996,425.24536328225,441.49314144476,465.11211608996,478.40103369253,496.67978412536,503.45611792634,523.2511306012],description:"Arabic scale by Ibn Sina"},avicenna_chrom:{frequencies:[261.6255653006,269.10058145205,299.00064605783,348.83408706747,392.4383479509,403.65087217807,448.50096908674,523.2511306012],description:"Dorian mode a chromatic genus of Avicenna"},avicenna_chrom2:{frequencies:[261.6255653006,271.8968348557,323.34165055711,349.22823143301,391.99543598175,407.38495184466,484.46508327871,523.2511306012],description:"Dorian Mode, a 1:2 Chromatic, 4 + 18 + 8 parts"},avicenna_chrom3:{frequencies:[261.6255653006,290.69507255622,339.14425131559,348.83408706747,392.4383479509,436.04260883433,508.71637697339,523.2511306012],description:"Avicenna's Chromatic permuted"},avicenna_diat:{frequencies:[261.6255653006,281.75060878526,305.22982618403,348.83408706747,392.4383479509,422.62591317789,457.84473927605,523.2511306012],description:"Dorian mode a soft diatonic genus of Avicenna"},avicenna_diff:{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,310.68035879446,343.38355445704,367.91095120397,392.4383479509,400.61414686654,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"Difference tones of Avicenna's Soft diatonic reduced by 2/1"},avicenna_enh:{frequencies:[261.6255653006,268.33391312882,279.06726965397,348.83408706747,392.4383479509,402.50086969323,418.60090448096,523.2511306012],description:"Dorian mode of Avicenna's (Ibn Sina) Enharmonic genus"},awad:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,307.79478270659,317.12189733406,327.03195662575,337.58137458142,348.83408706747,358.80077526939,369.35373924791,380.54627680087,392.4383479509,402.50086969323,413.09299784305,424.25767346043,436.04260883433,448.50096908674,461.69217405988,475.68284600109,490.54793493862,506.37206187213,523.2511306012],description:"d'Erlanger vol.5, p.37, after Mans.ur 'Awad"},awraamoff:{frequencies:[261.6255653006,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Awraamoff Septimal Just"},ayers:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,537.78588422901,569.42034800719,605.00911975764,645.34306107481,691.43899400873,744.62660893248,806.67882634352,880.01326510202,968.01459161222,1075.57176845802,1210.01823951527,1382.87798801746,1613.35765268703,1936.02918322444,2420.03647903055,3226.71530537407,4840.0729580611,9680.1459161222],description:"Lydia Ayers, algorithmic composition, subharmonics 1-37"},ayers_19:{frequencies:[261.6255653006,268.89294211451,276.57559760349,284.71017400359,293.33775503401,302.50455987882,312.26277148781,322.67153053741,333.7981350387,345.71949700436,358.52392281934,372.31330446624,387.20583664489,403.33941317176,420.87590939662,440.00663255101,460.95932933915,484.00729580611,509.48136400643,523.2511306012],description:"Scale for NINETEEN, for 19 for the 90's CD. Repeats at 37/19 (or 2/1)"},ayers_ap:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Lydia Ayers' Appetizer, ICMC 96, Balinese Slendro from Singaraja,"},ayers_me:{frequencies:[261.6255653006,280.31310567921,299.00064605783,308.34441624714,336.37572681506,392.4383479509,420.46965851882,448.50096908674,504.56359022259,523.2511306012],description:"Scale for Merapi (1996), Lydia Ayers. Slendro 0 2 4 5 7 9, Pelog 0 1 3 6 8 9"},h10_27:{frequencies:[261.6255653006,281.00523680435,300.3849083081,319.76457981184,348.83408706747,368.21375857121,397.28326582684,426.35277308246,455.42228033808,484.4917875937,523.2511306012],description:"10-tET harmonic approximation, fundamental=27"},h12_24:{frequencies:[261.6255653006,272.52663052146,294.32876096318,316.13089140489,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,468.74580449691,490.54793493862,523.2511306012],description:"12-tET harmonic approximation, fundamental=24"},h14_27:{frequencies:[261.6255653006,271.31540105247,290.69507255622,300.3849083081,319.76457981184,339.14425131559,348.83408706747,368.21375857121,387.59343007496,406.97310157871,426.35277308246,455.42228033808,474.80195184183,494.18162334558,523.2511306012],description:"14-tET harmonic approximation, fundamental=27"},h15_24:{frequencies:[261.6255653006,272.52663052146,283.42769574232,305.22982618403,316.13089140489,327.03195662575,348.83408706747,359.73515228832,381.53728273004,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"15-tET harmonic approximation, fundamental=24"},hahn9:{frequencies:[261.6255653006,286.15296204753,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,457.84473927605,490.54793493862,523.2511306012],description:"Paul Hahn's just version of 9 out of 31 scale. TL 6-8-'98"},hahn_7:{frequencies:[261.6255653006,274.70684356563,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Paul Hahn's scale with 32 consonant 7-limit dyads. TL '99, see also smithgw_hahn12"},hahn_g:{frequencies:[261.6255653006,280.50183143454,294.66523452594,309.54379154736,331.87735433448,348.63486612079,373.78884718875,392.66259958718,420.99317852788,442.25042328711,464.58101193362,498.10049926644,523.2511306012],description:'fourth of sqrt(2)-1 octave "recursive" meantone, Paul Hahn'},hahnmaxr:{frequencies:[261.6255653006,275.93321340298,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Paul Hahn's hahn_7 marvel projected to the 5-limit"},halfefg357777:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.35783506196,341.71502406609,375.57576268738,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Half genus [357777]"},hamilton:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,479.64686971777,523.2511306012],description:"Elsie Hamilton's gamut, from article The Modes of Ancient Greek Music (1953)"},hamilton_jc:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,338.57426097725,411.12588832951,383.71749577421,442.75095666255,426.35277308246,479.64686971777,523.2511306012],description:"Chalmers' permutation of Hamilton's gamut. Diatonic notes on white"},hamilton_jc2:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,319.76457981184,359.73515228832,383.71749577421,411.12588832951,426.35277308246,442.75095666255,460.46099492906,479.64686971777,523.2511306012],description:"EH gamut, diatonic notes on white and drops 17 for 25. JC Dorian Harmonia on C"},hammond:{frequencies:[261.6255653006,226.52945288223,240.12209418,254.35818848669,269.43528366778,285.40970760065,302.50455987882,320.49131749323,339.40613876835,359.73515228832,381.06332337261,403.65087217807,427.65717404906,453.05890576445],description:'Hammond organ pitch wheel ratios, 1/1=320 Hz. Do "del 0" to get 12-tone scale'},hammond12:{frequencies:[261.6255653006,277.32410877127,293.76579515365,311.17877832054,329.62811300357,349.37146352202,370.1449018936,391.99018843668,415.46876743159,440.10130305006,466.18833124791,493.91391932426,523.2511306012],description:"Hammond organ scale, 1/1=277.0731707 Hz, A=440, see hammond for the ratios"},handblue:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Handy Blues" of Pitch Palette, 7-limit'},handel:{frequencies:[261.6255653006,276.07055536165,292.89641271707,310.57937447136,328.79480940231,349.02322090701,368.4933346061,391.37619916626,414.10583283548,438.86859125239,465.61660972366,492.3908742288,523.2511306012],description:"Well temperament according to Georg Friedrich H\xEF\xBF\xBDndel's rules (c. 1780)"},hanson_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"JI version of Hanson's 19 out of 53-tET scale"},"harm-doreninv1":{frequencies:[261.6255653006,321.08592105074,327.03195662575,332.97799220076,380.54627680087,499.46698830115,511.35905945117,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Dorian Harmonia"},"harm-dorinv1":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Dorian Harmonia"},"harm-lydchrinv1":{frequencies:[261.6255653006,322.00069575458,342.12573923925,362.25078272391,402.50086969323,483.00104363188,503.12608711654,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Lydian Harmonia"},"harm-lydeninv1":{frequencies:[261.6255653006,342.12573923925,352.18826098158,362.25078272391,402.50086969323,503.12608711654,513.18860885887,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Lydian Harmonia"},"harm-mixochrinv1":{frequencies:[261.6255653006,336.37572681506,355.06326719367,373.75080757229,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"1st Inverted Schlesinger's Chromatic Mixolydian Harmonia"},"harm-mixoeninv1":{frequencies:[261.6255653006,355.06326719367,364.40703738298,373.75080757229,411.12588832951,504.56359022259,513.90736041189,523.2511306012],description:"1st Inverted Schlesinger's Enharmonic Mixolydian Harmonia"},harm10:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,331.11985608357,343.38355445704,367.91095120397,392.4383479509,400.61414686654,408.78994578219,441.49314144476,457.84473927605,515.07533168556,523.2511306012],description:"6/7/8/9/10 harmonics"},harm11s:{frequencies:[261.6255653006,65.40639132515,95.13656920022,104.65022612024,116.27802902249,130.8127826503,149.50032302891,174.41704353373,196.21917397545,209.30045224048,261.6255653006,327.03195662575,348.83408706747,392.4383479509,457.84473927605,523.2511306012,588.65752192635,654.0639132515,719.47030457665,1046.5022612024],description:"Harm. 1/4-11/4 and subh. 4/1-4/11. Joseph Pehrson 1999"},harm12s:{frequencies:[261.6255653006,294.32876096318,299.00064605783,327.03195662575,348.83408706747,359.73515228832,380.54627680087,392.4383479509,418.60090448096,457.84473927605,465.11211608996,523.2511306012],description:"Harmonics 1 to 12 and subharmonics mixed"},"harm15-30":{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,366.27579142084,383.71749577421,418.60090448096,436.04260883433,453.48431318771,488.36772189445,523.2511306012],description:"Harmonics 15 to 30"},harm15:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991],description:"Fifth octave of the harmonic overtone series"},"harm16-32":{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Harmonics 16-32 & Tom Stone's Guitar Scale"},harm16:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,2093.0045224048,1395.33634826987,1046.5022612024,837.20180896192,697.66817413493,598.00129211566,523.2511306012,465.11211608996,418.60090448096,380.54627680087,348.83408706747,322.00069575458,299.00064605783,279.06726965397,261.6255653006],description:"First 16 harmonics and subharmonics"},"harm1c-dorian":{frequencies:[261.6255653006,309.19384990071,321.08592105074,332.97799220076,380.54627680087,475.68284600109,499.46698830115,523.2511306012],description:"Harm1C-Dorian"},"harm1c-hypod":{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"HarmC-Hypodorian"},"harm1c-hypol":{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"HarmC-Hypolydian"},"harm1c-lydian":{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,382.37582620857,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"Harm1C-Lydian"},"harm1c-mix":{frequencies:[261.6255653006,299.00064605783,373.75080757229,392.4383479509,411.12588832951,485.87604984397,504.56359022259,523.2511306012],description:"Harm1C-Con Mixolydian"},"harm1c-mixolydian":{frequencies:[261.6255653006,280.31310567921,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"Harm1C-Mixolydian"},harm24:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"Harmonics 12 to 24"},harm24_2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 12 to 24, mode 9"},harm3:{frequencies:[261.6255653006,327.03195662575,392.4383479509,457.84473927605],description:"Third octave of the harmonic overtone series"},"harm30-60":{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,357.55493924415,366.27579142084,374.99664359753,383.71749577421,392.4383479509,401.15920012759,409.88005230427,418.60090448096,427.32175665765,436.04260883433,444.76346101102,453.48431318771,462.20516536439,470.92601754108,479.64686971777,488.36772189445,497.08857407114,505.80942624783,514.53027842451,523.2511306012],description:"Harmonics 30-60"},harm30:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,310.07474405997,322.00069575458,334.88072358477,348.83408706747,364.00078650518,398.6675280771,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024,1196.00258423131,1395.33634826987,1674.40361792384,2093.0045224048,2790.67269653973,4186.0090448096,8372.0180896192,8633.6436549198,8895.2692202204,9156.894785521,9418.5203508216,9680.1459161222,9941.7714814228,10203.3970467234,10465.022612024,10726.6481773246,10988.2737426252,11249.8993079258,11511.5248732264,11773.150438527,12034.7760038276,12296.4015691282,12558.0271344288,12819.6526997294,13081.27826503,13342.9038303306,13604.5293956312,13866.1549609318,14127.7805262324,14389.406091533,14651.0316568336,14912.6572221342,15174.2827874348,15435.9083527354,15697.533918036,15959.1594833366,16220.7850486372],description:"First 30 harmonics and subharmonics"},"harm32-64":{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,335.20775554139,343.38355445704,351.55935337268,359.73515228832,367.91095120397,376.08675011961,384.26254903526,392.4383479509,400.61414686654,408.78994578219,416.96574469783,425.14154361347,433.31734252912,441.49314144476,449.66894036041,457.84473927605,466.02053819169,474.19633710734,482.37213602298,490.54793493862,498.72373385427,506.89953276991,515.07533168556,523.2511306012],description:"Harmonics 32-64"},harm37odd:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Odd harmonics until 37"},harm4:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862],description:"Fourth octave of the harmonic overtone series"},"harm6-12":{frequencies:[261.6255653006,269.80136421624,286.15296204753,294.32876096318,314.76825825228,327.03195662575,331.11985608357,343.38355445704,359.73515228832,367.91095120397,392.4383479509,400.61414686654,404.70204632437,408.78994578219,441.49314144476,449.66894036041,457.84473927605,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"First 12 harmonics of 6th through 12th harmonics"},harm6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:"Harmonics 6-12"},"harm60-30":{frequencies:[261.6255653006,280.31310567921,290.69507255622,313.95067836072,327.03195662575,348.83408706747,373.75080757229,392.4383479509,413.09299784305,436.04260883433,448.50096908674,490.54793493862,523.2511306012],description:"Harmonics 60 to 30 (Perkis)"},harm7lim:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,3139.5067836072,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,7325.5158284168,7848.766959018,8372.0180896192,9156.894785521,9418.5203508216,10465.022612024,10988.2737426252,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14651.0316568336,15697.533918036,16482.4106139378,16744.0361792384,18313.789571042,18837.0407016432,19621.917397545,20930.045224048,21191.6707893486,21976.5474852504,23546.300877054,25116.0542688576,25639.3053994588,26162.55653006,27470.684356563,29302.0633136672,31395.067836072],description:"7-limit harmonics"},harm8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Harmonics 8-16"},harm9:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,356.10146388137,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"6/7/8/9 harmonics, First 9 overtones of 5th through 9th harmonics"},harm_bastard:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:`Schlesinger's "Bastard" Hypodorian Harmonia & inverse 1)7 from 1.3.5.7.9.11.13`},harm_bastinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,425.14154361347,457.84473927605,523.2511306012],description:`Inverse Schlesinger's "Bastard" Hypodorian Harmonia & 1)7 from 1.3.5.7.9.11.13`},harm_darreg:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,5232.511306012,6279.0135672144,7325.5158284168,8372.0180896192,9418.5203508216,10465.022612024,11511.5248732264,12558.0271344288,13604.5293956312,14651.0316568336,15697.533918036],description:"Darreg Harmonics 4-15"},harm_mean:{frequencies:[261.6255653006,270.06509966514,279.06726965397,299.00064605783,348.83408706747,392.4383479509,405.0976494977,418.60090448096,448.50096908674,523.2511306012],description:"Harm. Mean 9-tonic 8/7 is HM of 1/1 and 4/3, etc."},"harmc-hypop":{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,363.36884069528,377.90359432309,406.97310157871,465.11211608996,494.18162334558,523.2511306012],description:"HarmC-Hypophrygian"},"harmd-15":{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,383.71749577421,418.60090448096,453.48431318771,523.2511306012],description:"HarmD-15-Harmonia"},"harmd-conmix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-ConMixolydian"},"harmd-hypod":{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"HarmD-Hypodorian"},"harmd-hypol":{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"HarmD-Hypolydian"},"harmd-hypop":{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,406.97310157871,436.04260883433,465.11211608996,523.2511306012],description:"HarmD-Hypophrygian"},"harmd-lyd":{frequencies:[261.6255653006,281.75060878526,301.87565226992,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"HarmD-Lydian"},"harmd-mix":{frequencies:[261.6255653006,299.00064605783,336.37572681506,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"HarmD-Mixolydian. Harmonics 7-14"},"harmd-phr":{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,348.83408706747,327.03195662575,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"HarmD-Phryg (with 5 extra tones)"},"harme-hypod":{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,376.08675011961,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"HarmE-Hypodorian"},"harme-hypol":{frequencies:[261.6255653006,281.24748269815,274.70684356563,340.11323489078,366.27579142084,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"HarmE-Hypolydian"},"harme-hypop":{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,363.36884069528,377.90359432309,406.97310157871,494.18162334558,508.71637697339,523.2511306012],description:"HarmE-Hypophrygian"},"harmjc-15":{frequencies:[261.6255653006,280.31310567921,301.87565226992,313.95067836072,327.03195662575,356.76213450082,373.75080757229,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Rationalized JC Sub-15 Harmonia on C. MD=15, No planetary assignment."},"harmjc-17-2":{frequencies:[261.6255653006,277.97716313189,296.50897400735,317.68818643644,342.12573923925,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,468.17206422213,494.18162334558,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-17":{frequencies:[261.6255653006,269.55361273395,277.97716313189,296.50897400735,317.68818643644,342.12573923925,355.81076880882,370.63621750918,386.75083566176,404.33041910093,423.58424858192,444.76346101102,523.2511306012],description:"Rationalized JC Sub-17 Harmonia on C. MD=17, No planetary assignment."},"harmjc-19-2":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,368.21375857121,382.37582620857,397.67085925691,414.24047839262,432.2509339749,451.89870370104,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-19":{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,414.24047839262,432.2509339749,451.89870370104,473.41768959156,497.08857407114,523.2511306012],description:"Rationalized JC Sub-19 Harmonia on C. MD=19, No planetary assignment."},"harmjc-21":{frequencies:[261.6255653006,268.0066766494,274.70684356563,289.16509849014,305.22982618403,343.38355445704,366.27579142084,392.4383479509,406.97310157871,422.62591317789,439.53094970501,457.84473927605,523.2511306012],description:"Rationalized JC Sub-21 Harmonia on C. MD=21, No planetary assignment."},"harmjc-23-2":{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,353.96400011258,376.08675011961,401.15920012759,429.81342870813,462.87600014722,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-23":{frequencies:[261.6255653006,273.51763645063,300.86940009569,316.70463167967,334.29933343966,376.08675011961,401.15920012759,429.81342870813,445.73244458621,462.87600014722,481.3910401531,501.44900015948,523.2511306012],description:"Rationalized JC Sub-23 Harmonia on C. MD=23, No planetary assignment."},"harmjc-25":{frequencies:[261.6255653006,272.52663052146,297.30177875068,311.45900631024,327.03195662575,363.36884069528,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,503.12608711654,523.2511306012],description:"Rationalized JC Sub-25 Harmonia on C. MD=25, No planetary assignment."},"harmjc-27":{frequencies:[261.6255653006,271.68808704293,294.32876096318,307.12566361375,321.08592105074,353.19451315581,371.78369805875,392.4383479509,415.52295665389,441.49314144476,470.92601754108,504.56359022259,523.2511306012],description:"Rationalized JC Sub-27 Harmonia on C. MD=27, No planetary assignment."},"harmjc-hypod16":{frequencies:[261.6255653006,279.06726965397,299.00064605783,310.07474405997,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,418.60090448096,440.63253103259,465.11211608996,523.2511306012],description:"Rationalized JC Hypodorian Harmonia on C. Saturn Scale on C, MD=16. (Steiner)"},"harmjc-hypol20":{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,455.00098313148,575.57624366132,523.2511306012],description:"Rationalized JC Hypolydian Harmonia on C. Mars scale on C., MD=20"},"harmjc-hypop18":{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Rationalized JC Hypophrygian Harmonia on C. Jupiter scale on C, MD =18"},"harmjc-lydian13":{frequencies:[261.6255653006,272.09058791262,283.42769574232,295.75063903546,309.19384990071,340.11323489078,358.01393146398,377.90359432309,400.13321751856,425.14154361347,453.48431318771,485.87604984397,523.2511306012],description:"Rationalized JC Lydian Harmonia on C. Mercury scale on C, MD = 26 or 13"},"harmjc-mix14":{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,332.97799220076,348.83408706747,366.27579142084,385.55346465352,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Rationalized JC Mixolydian Harmonia on C. Moon Scale on C, MD = 14"},"harmjc-phryg12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Rationalized JC Phrygian Harmonia on C. Venus scale on C, MD = 24 or 12"},harmonical:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"See pp 17 and 466-468 Helmholtz. lower 4 oct. Instr. designed & tuned by Ellis"},harmonical_up:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,457.84473927605,392.4383479509,408.78994578219,425.14154361347,474.19633710734,490.54793493862,523.2511306012],description:"Upper 2 octaves of Ellis's Harmonical"},harmsub16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,301.87565226992,327.03195662575,356.76213450082,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"16 harmonics on 1/1 and 16 subharmonics on 15/8"},harrison_16:{frequencies:[261.6255653006,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:'Lou Harrison 16-tone superparticular "Ptolemy Duple"'},harrison_5:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_3:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,406.97310157871,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_5_4:{frequencies:[261.6255653006,279.06726965397,313.95067836072,392.4383479509,490.54793493862,523.2511306012],description:"From Lou Harrison, a pelog style pentatonic"},harrison_8:{frequencies:[261.6255653006,279.06726965397,313.95067836072,327.03195662575,367.91095120397,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:'Lou Harrison 8-tone tuning for "Serenade for Guitar"'},harrison_cinna:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,343.38355445704,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:`Lou Harrison, "Incidental Music for Corneille's Cinna" (1955-56) 1/1=C`},harrison_diat:{frequencies:[261.6255653006,274.70684356563,313.95067836072,348.83408706747,392.4383479509,412.06026534844,470.92601754108,523.2511306012],description:"From Lou Harrison, a soft diatonic"},harrison_joy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Lou Harrison's Joyous 6"},harrison_mid:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Lou Harrison mid mode"},harrison_mid2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"Lou Harrison mid mode 2"},harrison_min:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"From Lou Harrison, a symmetrical pentatonic with minor thirds"},harrison_mix1:{frequencies:[261.6255653006,285.40970760065,313.95067836072,392.4383479509,425.14154361347,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix2:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,490.54793493862,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix3:{frequencies:[261.6255653006,313.95067836072,336.37572681506,392.4383479509,418.60090448096,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_mix4:{frequencies:[261.6255653006,280.31310567921,327.03195662575,392.4383479509,448.50096908674,523.2511306012],description:'A "mixed type" pentatonic, Lou Harrison'},harrison_songs:{frequencies:[261.6255653006,271.31540105247,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'Shared gamut of "Four Strict Songs" (1951-55), each pentatonic'},harrisonj:{frequencies:[261.6255653006,272.17712546173,292.13970819848,313.56642833783,326.21280531667,350.13858362887,364.25994396351,390.97625694066,406.744629928,436.57694340361,468.59728067062,487.49616921257,523.2511306012],description:"John Harrison's temperament (1775), almost 3/10-comma. Third = 1200/pi"},harrisonm_rev:{frequencies:[261.6255653006,257.53766584278,294.32876096318,289.72987407313,331.11985608357,343.38355445704,372.50983809402,392.4383479509,386.30649876417,441.49314144476,457.84473927605,496.67978412536,523.2511306012],description:'Michael Harrison, piano tuning for "Revelation" (2001), 1/1=F'},haverstick13:{frequencies:[261.6255653006,283.85429714132,301.75671459889,307.97166902637,320.78822215662,341.02002673508,362.52783176564,377.61479489998,401.43059675514,426.7484383229,444.50800708553,482.27514684959,502.34551296122,523.2511306012],description:"Neil Haverstick, scale in 34-tET, MMM 21-5-2006"},hawkes:{frequencies:[261.6255653006,274.56549986328,292.86986732103,310.24975557428,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901507992,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1807)"},hawkes2:{frequencies:[261.6255653006,275.15193010334,293.04845178801,312.10900487995,328.24542585003,349.59527202198,367.66978141816,391.58387939843,411.8292495232,438.61558204759,467.14415995873,491.2960898965,523.2511306012],description:"Meantone with fifth tempered 1/6 of 53-tET step by William Hawkes (1808)"},hawkes3:{frequencies:[261.6255653006,274.56549986328,292.86986732103,311.6193417424,327.84547867349,349.70184487387,366.99801003998,391.46454285105,411.84824958905,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"William Hawkes' modified 1/5-comma meantone (1811)"},hbarnes:{frequencies:[261.6255653006,276.71351472429,293.33333347996,310.95136287868,328.88393162803,349.42547049952,369.15973155124,391.77416758435,414.83597850347,439.25532436715,466.16376151809,493.04743111995,523.2511306012],description:"Variation on Barnes with 1/6P -> 1/8P. OdC '99"},hebdome1:{frequencies:[261.6255653006,265.71346475842,267.23182741418,269.80136421624,273.30527803723,280.31310567921,283.42769574232,287.78812183066,289.07289023169,292.28481123426,294.32876096318,300.63580584096,303.67253115248,308.34441624714,311.77046531655,315.35224388912,318.85615771011,323.76163705949,327.03195662575,334.03978426773,336.37572681506,340.11323489078,341.63159754654,346.88746827803,350.74177348112,359.73515228832,364.40703738298,367.91095120397,370.01329949656,375.7947573012,382.62738925213,385.43052030892,389.71308164569,392.4383479509,400.84774112128,404.70204632437,409.95791705585,411.12588832951,417.54973033466,420.46965851882,425.14154361347,431.68218274599,437.28844485957,441.49314144476,445.38637902364,449.66894036041,455.50879672872,462.5166243707,467.65569797482,470.92601754108,478.28423656516,479.64686971777,485.87604984397,490.54793493862,501.0596764016,504.56359022259,510.16985233617,513.90736041189,523.2511306012],description:"Wilson 1.3.5.7.9.11.13.15 hebdomekontany, 1.3.5.7 tonic"},helmholtz:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Helmholtz's Chromatic scale and Gipsy major from Slovakia"},helmholtz_24:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,331.11985608357,344.91651675372,348.83408706747,367.91095120397,372.50983809402,388.03108134794,392.4383479509,408.78994578219,413.89982010446,436.04260883433,441.49314144476,459.88868900496,465.63729761752,490.54793493862,496.67978412536,517.37477513058,523.2511306012],description:"Simplified Helmholtz 24"},helmholtz_hd:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,523.2511306012],description:"Helmholtz Harmonic Decad"},helmholtz_pure:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,327.03195662575,330.74639366397,344.91651675372,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,413.43299207996,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,496.11959049595,516.79124009995,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning untempered"},helmholtz_temp:{frequencies:[261.6255653006,275.81645389904,279.10671937395,290.77707354032,294.24580701304,306.54917537161,310.20605716322,327.03195662575,330.9330448436,344.77062435684,348.88325535732,367.80710710303,372.19474608839,387.75741156435,392.38304142029,408.78994578219,413.66637442451,436.10414127513,441.30625330017,459.75895986689,465.24324076996,490.4788828408,496.3296094287,517.08305349316,523.2511306012],description:"Helmholtz's two-keyboard harmonium tuning"},hem_chrom:{frequencies:[261.6255653006,269.55361273395,285.40970760065,348.83408706747,392.4383479509,404.33041910093,428.11456140098,523.2511306012],description:"Hemiolic Chromatic genus has the strong or 1:2 division of the 12/11 pyknon"},hem_chrom11:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"11'al Hemiolic Chromatic genus with a CI of 11/9, Winnington-Ingram"},hem_chrom13:{frequencies:[261.6255653006,272.09058791262,283.42769574232,348.83408706747,392.4383479509,408.13588186894,425.14154361347,523.2511306012],description:"13'al Hemiolic Chromatic or neutral-third genus has a CI of 16/13"},hem_chrom2:{frequencies:[261.6255653006,269.29177952703,285.30470202322,349.22823143301,391.99543598175,403.48177901006,427.47405410759,523.2511306012],description:"1:2 Hemiolic Chromatic genus 3 + 6 + 21 parts"},hemiwuer24:{frequencies:[261.6255653006,274.60778382002,280.48822448524,286.49458884928,292.62957327549,307.15025309186,313.72755695954,320.44570714783,327.30771955335,350.90592546776,358.42021185082,366.09540888186,373.9349620795,392.49012653442,400.89489544613,409.47964376542,418.24822532303,439.00227453173,448.4030528436,458.00513880662,467.8128437444,491.02635713596,501.54117720983,512.28116095218,523.2511306012],description:"Hemiw\xEF\xBF\xBDrschmidt[24] in 229-tET tuning."},hen12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Adjusted Hahn12"},hen22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,415.27867508032,418.60090448096,436.04260883433,448.50096908674,457.84473927605,484.4917875937,490.54793493862,508.71637697339,523.2511306012],description:"Adjusted Hahn22"},hept_diamond:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,316.53463456122,325.57848126297,327.03195662575,334.88072358477,336.37572681506,348.83408706747,392.4383479509,406.97310157871,408.78994578219,418.60090448096,420.46965851882,432.48307733364,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Inverted-Prime Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondi:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,281.36411960997,289.40309445597,294.32876096318,297.67175429757,327.03195662575,336.37572681506,348.83408706747,361.75386806997,367.91095120397,372.08969287196,378.42269266694,392.4383479509,406.97310157871,418.60090448096,459.88868900496,465.11211608996,473.02836583367,486.54346200035,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Prime-Inverted Heptatonic Diamond based on Archytas's Enharmonic"},hept_diamondp:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,339.14425131559,348.83408706747,358.80077526939,361.75386806997,367.91095120397,372.08969287196,378.42269266694,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,436.04260883433,448.50096908674,465.11211608996,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"Heptatonic Diamond based on Archytas's Enharmonic, 27 tones"},herf:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Sims:Reflections on This and That, 1991. Used by Herf in Ekmelischer Gesang"},heun:{frequencies:[261.6255653006,275.15237829755,293.0485888979,312.10878854255,328.24573110938,349.59519124833,367.67029324081,391.58396987353,411.83001550364,438.61588607285,467.14394139401,491.29666030217,523.2511306012],description:"Well temperament for organ of Jan Heun (1805), subset of 55-tET"},hexagonal13:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 13-tone scale"},hexagonal37:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,313.95067836072,322.99452506247,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,523.2511306012],description:"Star hexagonal 37-tone scale"},hexany1:{frequencies:[261.6255653006,305.22982618403,327.03195662575,381.53728273004,436.04260883433,457.84473927605,523.2511306012],description:"Two out of 1 3 5 7 hexany on 1.3"},hexany10:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"1.3.5.9 Hexany"},hexany11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"1.3.7.9 Hexany on 1.3"},hexany12:{frequencies:[261.6255653006,290.69507255622,305.22982618403,339.14425131559,406.97310157871,436.04260883433,523.2511306012],description:"3.5.7.9 Hexany on 3.9"},hexany13:{frequencies:[261.6255653006,285.40970760065,327.03195662575,356.76213450082,392.4383479509,475.68284600109,523.2511306012],description:"1.3.5.11 Hexany on 1.11"},hexany14:{frequencies:[261.6255653006,287.78812183066,340.11323489078,383.71749577421,453.48431318771,498.83274450648,523.2511306012],description:"5.11.13.15 Hexany (5.15), used in The Giving, by Stephen J. Taylor"},hexany15:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,418.60090448096,523.2511306012],description:"1.3.5.15 2)4 hexany (1.15 tonic) degenerate, symmetrical pentatonic"},hexany16:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,465.11211608996,523.2511306012],description:"1.3.9.27 Hexany, a degenerate pentatonic form"},hexany17:{frequencies:[261.6255653006,327.03195662575,334.88072358477,408.78994578219,418.60090448096,523.2511306012],description:"1.5.25.125 Hexany, a degenerate pentatonic form"},hexany18:{frequencies:[261.6255653006,299.00064605783,341.71502406609,400.61414686654,457.84473927605,523.2511306012],description:"1.7.49.343 Hexany, a degenerate pentatonic form"},hexany19:{frequencies:[261.6255653006,299.00064605783,327.03195662575,418.60090448096,457.84473927605,523.2511306012],description:"1.5.7.35 Hexany, a degenerate pentatonic form"},hexany2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 2"},hexany20:{frequencies:[261.6255653006,279.06726965397,305.22982618403,398.6675280771,436.04260883433,465.11211608996,523.2511306012],description:"3.5.7.105 Hexany"},hexany21:{frequencies:[261.6255653006,279.06726965397,310.07474405997,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany"},hexany21a:{frequencies:[261.6255653006,279.06726965397,310.07474405997,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"3.5.9.135 Hexany + 4/3. Is Didymos Diatonic tetrachord on 1/1 and inv. on 3/2"},hexany22:{frequencies:[261.6255653006,276.76092858245,359.73515228832,380.54627680087,494.63583439645,523.2511306012],description:"1.11.121.1331 Hexany, a degenerate pentatonic form"},hexany23:{frequencies:[261.6255653006,348.83408706747,359.73515228832,380.54627680087,392.4383479509,523.2511306012],description:"1.3.11.33 Hexany, degenerate pentatonic form"},hexany24:{frequencies:[261.6255653006,327.03195662575,359.73515228832,380.54627680087,418.60090448096,523.2511306012],description:"1.5.11.55 Hexany, a degenerate pentatonic form"},hexany25:{frequencies:[261.6255653006,299.00064605783,359.73515228832,380.54627680087,457.84473927605,523.2511306012],description:"1.7.11.77 Hexany, a degenerate pentatonic form"},hexany26:{frequencies:[261.6255653006,294.32876096318,359.73515228832,380.54627680087,465.11211608996,523.2511306012],description:"1.9.11.99 Hexany, a degenerate pentatonic form"},hexany3:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 3"},hexany4:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 4"},hexany49:{frequencies:[261.6255653006,299.00064605783,305.22982618403,392.4383479509,400.61414686654,457.84473927605,523.2511306012],description:"1.3.21.49 2)4 hexany (1.21 tonic)"},hexany5:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 5"},hexany6:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Hexany Cluster 6"},hexany7:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Hexany Cluster 7"},hexany8:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,340.65828815182,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,502.32108537715,523.2511306012],description:"Hexany Cluster 8"},hexany9:{frequencies:[261.6255653006,299.00064605783,313.95067836072,358.80077526939,418.60090448096,448.50096908674,523.2511306012],description:"1.3.5.7 Hexany on 5.7"},hexany_cl:{frequencies:[261.6255653006,294.32876096318,301.39265122629,313.95067836072,327.03195662575,348.83408706747,353.19451315581,376.74081403286,392.4383479509,418.60090448096,470.92601754108,502.32108537715,523.2511306012],description:"Hexany Cluster 1"},hexany_cl2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,490.54793493862,502.32108537715,523.2511306012],description:"Composed of 1.3.5.45, 1.3.5.75, 1.3.5.9, and 1.3.5.25 hexanies"},hexany_flank:{frequencies:[261.6255653006,267.07609791103,299.00064605783,305.22982618403,327.03195662575,348.83408706747,373.75080757229,381.53728273004,427.14378008261,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Hexany Flanker, 7-limit, from Wilson"},hexany_tetr:{frequencies:[261.6255653006,269.10058145205,279.06726965397,336.37572681506,348.83408706747,358.80077526939,523.2511306012],description:"Complex 12 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,339.14425131559,348.83408706747,361.75386806997,523.2511306012],description:"Complex 1 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,358.80077526939,372.08969287196,523.2511306012],description:"Complex 2 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,336.37572681506,348.83408706747,523.2511306012],description:"Complex 9 of p. 115, a hexany based on Archytas's Enharmonic"},hexany_u2:{frequencies:[261.6255653006,274.70684356563,279.06726965397,280.31310567921,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,488.36772189445,490.54793493862,498.33441009638,523.2511306012],description:"Hexany union = genus [335577] minus two corners"},hexany_union:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"The union of all of the pitches of the 1.3.5.7 hexany on each tone as 1/1"},hexany_urot:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,333.84512238879,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,392.4383479509,400.61414686654,406.97310157871,436.04260883433,445.12682985172,448.50096908674,457.84473927605,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Aggregate rotations of 1.3.5.7 hexany, 1.3 = 1/1"},hexanys:{frequencies:[261.6255653006,286.15296204753,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Hexanys 1 3 5 7 9"},hexanys2:{frequencies:[261.6255653006,314.76825825228,425.14154361347,457.84473927605,269.80136421624,371.99885066179,392.4383479509,472.15238737843,318.85615771011,359.73515228832,343.38355445704,292.28481123426,523.2511306012],description:"Hexanys 1 3 7 11 13"},higgs:{frequencies:[261.6255653006,392.4383479509,418.60090448096,422.62591317789,423.58424858192,425.14154361347,436.04260883433,523.2511306012],description:"From Greg Higgs announcement of the formation of an Internet Tuning list"},hinsz_gr:{frequencies:[261.6255653006,274.68983337859,292.34127285051,310.07474405997,326.6631048533,348.83408706747,366.25311135453,391.11111150212,412.03474986192,437.02884834934,465.11211608996,489.99465727995,523.2511306012],description:"Reconstructed Hinsz temperament, organ Pelstergasthuiskerk Groningen. Ortgies,2002"},hipkins:{frequencies:[261.6255653006,275.62199471997,299.00064605783,348.83408706747,392.4383479509,413.43299207996,448.50096908674,523.2511306012],description:"Hipkins' Chromatic"},hirajoshi:{frequencies:[261.6255653006,291.13134764929,317.84796618517,388.16504068057,412.91271853531,523.2511306012],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.112"},hirajoshi2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"Japanese pentatonic koto scale, theoretical. Helmholz/Ellis p.519, nr.110"},hirajoshi3:{frequencies:[261.6255653006,292.47977325983,321.54118165335,396.32121331049,415.54465627623,522.94897617031],description:"Observed Japanese pentatonic koto scale. Helmholtz/Ellis p.519, nr.111"},hirashima:{frequencies:[261.6255653006,277.33928225406,292.50627485027,312.00669222389,327.03195662575,349.91912034749,369.78570985692,391.22147055517,416.00892317314,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Tatsushi Hirashima, temperament of chapel organ of Kobe Shoin Women's Univ."},hjelmboogie:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,367.91095120397,392.4383479509,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:`Paul Hjelmstad's "Boogie Woogie" scale, TL 20-3-2006`},ho_mai_nhi:{frequencies:[261.6255653006,287.78812183066,348.83408706747,392.4383479509,431.68218274599,523.2511306012],description:"Ho Mai Nhi (Nam Hue) dan tranh scale, Vietnam"},hochgartz:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.86458629683,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.49999887294,438.2147004401,465.53241962975,490.54793493862,523.2511306012],description:"Michael Hochgartz, modified 1/5-comma meantone temperament"},hofmann1:{frequencies:[261.6255653006,262.65154790962,279.06726965397,348.83408706747,392.4383479509,393.97732186443,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #1, Dorian mode"},hofmann2:{frequencies:[261.6255653006,263.56353245097,279.06726965397,348.83408706747,392.4383479509,395.34529867646,418.60090448096,523.2511306012],description:"Hofmann's Enharmonic #2, Dorian mode"},hofmann_chrom:{frequencies:[261.6255653006,264.26824777838,290.69507255622,348.83408706747,392.4383479509,396.40237166758,436.04260883433,523.2511306012],description:"Hofmann's Chromatic"},holder:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,409.94826565972,437.46806069696,467.28984664562,489.70152554512,523.2511306012],description:"William Holder's equal beating meantone temperament (1694). 3/2 beats 2.8 Hz"},holder2:{frequencies:[261.6255653006,274.23214485994,292.57879058083,312.45989404005,327.40114268825,349.76744711215,366.57630213591,391.03837375367,410.64811919433,437.46806069696,467.46154552107,489.70152554512,523.2511306012],description:"Holder's irregular e.b. temperament with improved Eb and G#"},hummel:{frequencies:[261.6255653006,277.1703574486,293.54676487235,311.03465677994,329.45811370906,349.13199096171,369.8583804246,391.99149393462,415.308682162,439.8732919971,466.10512967869,493.74031485884,523.2511306012],description:"Johann Nepomuk Hummel's quasi-equal temperament (1829)"},hummel2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"Johann Nepomuk Hummel's temperament according to the second bearing plan"},husmann:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747],description:"Tetrachord division according to Husmann"},hwerck3:{frequencies:[261.6255653006,276.40121172404,293.00227310437,310.60041853231,328.69828757761,349.03110370139,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Variation on Werckmeister III with 1/4P -> 1/6P and 0P -> 1/24P. OdC '99"},hyper_enh:{frequencies:[261.6255653006,264.93728131706,268.33391312882,348.83408706747,392.4383479509,397.40592197559,402.50086969323,523.2511306012],description:"13/10 HyperEnharmonic. This genus is at the limit of usable tunings"},hyper_enh2:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Hyperenharmonic genus from Kathleen Schlesinger's enharmonic Phrygian Harmonia"},hypo_chrom:{frequencies:[261.6255653006,275.39533189537,282.83844897362,290.69507255622,348.83408706747,373.75080757229,387.59343007496,402.50086969323,418.60090448096,427.14378008261,436.04260883433,455.00098313148,523.2511306012],description:"Hypolydian Chromatic Tonos"},hypo_diat:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012],description:"Hypolydian Diatonic Tonos"},hypo_enh:{frequencies:[261.6255653006,268.33391312882,271.81876914348,275.39533189537,348.83408706747,373.75080757229,387.59343007496,402.50086969323,410.39304360878,414.45634107026,418.60090448096,465.11211608996,523.2511306012],description:"Hypolydian Enharmonic Tonos"},hypod_chrom:{frequencies:[261.6255653006,279.06726965397,288.69027895239,299.00064605783,322.00069575458,348.83408706747,364.00078650518,380.54627680087,398.6675280771,408.39112632289,418.60090448096,465.11211608996,523.2511306012],description:"Hypodorian Chromatic Tonos"},hypod_chrom2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chrom2inv:{frequencies:[261.6255653006,327.03195662575,343.38355445704,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypodorian Harmonia"},hypod_chromenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,398.6675280771,418.60090448096,523.2511306012],description:"Schlesinger's Hypodorian Harmonia in a mixed chromatic-enharmonic genus"},hypod_chrominv:{frequencies:[261.6255653006,277.97716313189,294.32876096318,359.73515228832,392.4383479509,408.78994578219,425.14154361347,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypodorian Inverted"},hypod_diat:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,418.60090448096,440.63253103259,465.11211608996,492.47165233054,523.2511306012],description:"Hypodorian Diatonic Tonos"},hypod_diat2:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Schlesinger's Hypodorian Harmonia, a subharmonic series through 13 from 16"},hypod_diatcon:{frequencies:[261.6255653006,279.06726965397,322.00069575458,348.83408706747,364.00078650518,418.60090448096,465.11211608996,523.2511306012],description:"A Hypodorian Diatonic with its own trite synemmenon replacing paramese"},hypod_diatinv:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Inverted Schlesinger's Hypodorian Harmonia, a harmonic series from 8 from 16"},hypod_enh:{frequencies:[261.6255653006,270.06509966514,274.49239638096,279.06726965397,310.07474405997,348.83408706747,364.00078650518,380.54627680087,389.39619021485,393.97732186443,398.6675280771,452.54151835779,523.2511306012],description:"Hypodorian Enharmonic Tonos"},hypod_enhinv:{frequencies:[261.6255653006,343.38355445704,351.55935337268,359.73515228832,392.4383479509,490.54793493862,506.89953276991,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypodorian Harmonia"},hypod_enhinv2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,359.73515228832,392.4383479509,400.61414686654,408.78994578219,523.2511306012],description:"A harmonic form of Schlesinger's Hypodorian enharmonic inverted"},hypodorian_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,784.8766959018,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the Hypodorian Tonos"},hypol_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the chromatic genus"},hypol_chrominv:{frequencies:[261.6255653006,313.95067836072,327.03195662575,340.11323489078,366.27579142084,392.4383479509,470.92601754108,497.08857407114,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypolydian Harmonia"},hypol_chrominv2:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,366.27579142084,392.4383479509,418.60090448096,523.2511306012],description:"harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_chrominv3:{frequencies:[261.6255653006,274.70684356563,287.78812183066,340.11323489078,392.4383479509,418.60090448096,444.76346101102,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypolydian inverted"},hypol_diat:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"Schlesinger's Hypolydian Harmonia, a subharmonic series through 13 from 20"},hypol_diatcon:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,402.50086969323,436.04260883433,475.68284600109,523.2511306012],description:"A Hypolydian Diatonic with its own trite synemmenon replacing paramese"},hypol_diatinv:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Inverted Schlesinger's Hypolydian Harmonia, a harmonic series from 10 from 20"},hypol_enh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the enharmonic genus"},hypol_enhinv:{frequencies:[261.6255653006,327.03195662575,333.57259575826,340.11323489078,366.27579142084,392.4383479509,497.08857407114,510.16985233617,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypolydian Harmonia"},hypol_enhinv2:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,366.27579142084,379.35706968587,392.4383479509,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_enhinv3:{frequencies:[261.6255653006,268.16620443312,274.70684356563,340.11323489078,392.4383479509,405.51962621593,418.60090448096,523.2511306012],description:"A harmonic form of Schlesinger's Hypolydian enharmonic inverted"},hypol_pent:{frequencies:[261.6255653006,272.52663052146,290.69507255622,348.83408706747,373.75080757229,402.50086969323,415.27867508032,436.04260883433,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the pentachromatic genus"},hypol_tri:{frequencies:[261.6255653006,270.64713651786,280.31310567921,348.83408706747,373.75080757229,402.50086969323,413.09299784305,424.25767346043,523.2511306012],description:"Schlesinger's Hypolydian Harmonia in the first trichromatic genus"},hypol_tri2:{frequencies:[261.6255653006,270.64713651786,290.69507255622,348.83408706747,373.75080757229,402.50086969323,413.09299784305,436.04260883433,2093.0045224048],description:"Schlesinger's Hypolydian Harmonia in the second trichromatic genus"},hypolydian_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,366.27579142084,406.97310157871,457.84473927605,488.36772189445,523.2511306012,563.50121757052,610.45965236807,665.95598440153,732.55158284168,813.94620315742,915.6894785521,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypolydian Tonos"},hypop_chrom:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,336.37572681506,362.25078272391,376.74081403286,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012],description:"Hypophrygian Chromatic Tonos"},hypop_chromenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia in a mixed chromatic-enharmonic genus"},hypop_chrominv:{frequencies:[261.6255653006,319.76457981184,334.29933343966,348.83408706747,377.90359432309,465.11211608996,494.18162334558,523.2511306012],description:"Inverted Schlesinger's Chromatic Hypophrygian Harmonia"},hypop_chrominv2:{frequencies:[261.6255653006,276.16031892841,290.69507255622,348.83408706747,377.90359432309,406.97310157871,436.04260883433,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Hypophrygian inverted"},hypop_diat:{frequencies:[261.6255653006,294.32876096318,303.82323712328,313.95067836072,336.37572681506,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012],description:"Hypophrygian Diatonic Tonos"},hypop_diat2:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Schlesinger's Hypophrygian Harmonia"},hypop_diat2inv:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,363.36884069528,377.90359432309,436.04260883433,465.11211608996,523.2511306012],description:"Inverted Schlesinger's Hypophrygian Harmonia, a harmonic series from 9 from 18"},hypop_diatcon:{frequencies:[261.6255653006,294.32876096318,313.95067836072,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012],description:"A Hypophrygian Diatonic with its own trite synemmenon replacing paramese"},hypop_enh:{frequencies:[261.6255653006,269.10058145205,273.00058987889,277.01530443593,313.95067836072,362.25078272391,376.74081403286,392.4383479509,400.78810003496,405.0976494977,409.50088481833,470.92601754108,523.2511306012],description:"Hypophrygian Enharmonic Tonos"},hypop_enhinv:{frequencies:[261.6255653006,334.29933343966,341.56671025356,348.83408706747,377.90359432309,494.18162334558,508.71637697339,523.2511306012],description:"Inverted Schlesinger's Enharmonic Hypophrygian Harmonia"},hypop_enhinv2:{frequencies:[261.6255653006,268.89294211451,276.16031892841,348.83408706747,377.90359432309,392.4383479509,406.97310157871,523.2511306012],description:"A harmonic form of Schlesinger's Hypophrygian enharmonic inverted"},hypophryg_pis:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,377.90359432309,425.14154361347,453.48431318771,523.2511306012,544.18117582525,566.85539148463,618.38769980142,680.22646978156,755.80718864618,850.28308722695,971.75209968794,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Hypophrygian Tonos"},kanzelmeyer_11:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 11 harmonics from 16 to 32. Base 388.3614815 Hz"},kanzelmeyer_18:{frequencies:[261.6255653006,277.97716313189,302.50455987882,310.68035879446,327.03195662575,335.20775554139,351.55935337268,359.73515228832,376.08675011961,384.26254903526,392.4383479509,425.14154361347,433.31734252912,457.84473927605,474.19633710734,482.37213602298,498.72373385427,506.89953276991,523.2511306012],description:"Bruce Kanzelmeyer, 18 harmonics from 32 to 64. Base 388.3614815 Hz"},kayolonian:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"19-tone 5-limit scale of the Kayenian Imperium on Kayolonia (reeks van Sjauriek)"},kayolonian_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"See Barnard: De Keiaanse Muziek, p. 11. (uitgebreide reeks)"},kayolonian_40:{frequencies:[261.6255653006,267.90457886781,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,319.36714514233,327.03195662575,331.11985608357,334.88072358477,340.65828815182,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,401.85686830172,408.78994578219,413.43299207996,418.60090448096,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,490.54793493862,496.11959049595,502.32108537715,510.98743222773,523.2511306012],description:"See Barnard: De Keiaanse Muziek"},kayolonian_f:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"Kayolonian scale F and periodicity block (128/125, 16875/16384)"},kayolonian_p:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale P"},kayolonian_s:{frequencies:[261.6255653006,287.4304306281,306.59245933664,327.03195662575,359.28803828513,392.4383479509,418.60090448096,459.88868900496,490.54793493862,523.2511306012],description:"Kayolonian scale S"},kayolonian_t:{frequencies:[261.6255653006,279.06726965397,297.67175429757,317.51653791741,348.83408706747,381.01984550089,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale T"},kayolonian_z:{frequencies:[261.6255653006,279.06726965397,297.67175429757,327.03195662575,348.83408706747,392.4383479509,418.60090448096,446.50763144636,476.27480687611,523.2511306012],description:"Kayolonian scale Z"},kayoloniana:{frequencies:[261.6255653006,267.90457886781,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:"Amendment by Rasch of Kayolonian scale's note 9"},"kebyar-b":{frequencies:[261.6255653006,280.40333801024,299.48910562989,384.37207420335,402.78320381033,523.2511306012],description:"Gamelan Kebyar tuning begbeg, Andrew Toth, 1993"},"kebyar-s":{frequencies:[261.6255653006,283.00682726281,309.51375468789,385.26118901859,416.26536455926,523.2511306012],description:"Gamelan kebyar tuning sedung, Andrew Toth, 1993"},"kebyar-t":{frequencies:[261.6255653006,293.15632631094,325.27731021818,397.46748834812,422.07621250312,523.2511306012],description:"Gamelan kebyar tuning tirus, Andrew Toth, 1993"},keenan:{frequencies:[261.6255653006,279.77706779472,292.57243455474,305.95298478736,327.17991022208,349.87955533643,365.88099775759,391.26571058456,418.41160951721,437.54730686196,457.55816161244,489.30340830564,523.2511306012],description:"Dave Keenan 31-ET mode has 3 4:5:6:7 tetrads + 3 inv. is Fokker's 12-tone mode"},keenan2:{frequencies:[261.6255653006,278.14493936283,295.70736791055,306.84360659709,326.21810583671,346.81593583087,369.99442271164,393.35634555235,418.19337019276,433.94238997708,461.34206956593,490.47180009913,523.2511306012],description:"Dave Keenan strange 9-limit temperament TL 19-11-98"},keenan3:{frequencies:[261.6255653006,272.10155294862,282.99701916355,314.19580976213,326.77681046955,339.86157848985,377.32935907335,392.4383479509,408.1523292189,453.14877154631,471.29371440761,523.2511306012],description:"Chain of 1/6 kleisma tempered 6/5s, 10 tetrads, Dave Keenan, 30-Jun-99, TD235"},keenan3eb:{frequencies:[261.6255653006,272.52625793573,283.88113057344,314.31833892864,327.41448875753,341.05629284549,377.62371824792,393.35750206077,409.74683779238,453.67913385439,472.5817850056,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 same"},keenan3eb2:{frequencies:[261.6255653006,271.88912362492,282.55531921581,314.13446783,326.45794787121,339.26487744082,377.18204004818,391.97887331053,407.35618327602,452.88341485066,470.6500094,523.2511306012],description:"Chain of 11 equal beating minor thirds, 6/5=3/2 opposite"},keenan3j:{frequencies:[261.6255653006,291.88463270656,302.72962012827,313.97755176024,350.29154279212,363.30663963964,405.32593044476,420.38583225541,436.00528786292,486.43275040712,504.50618240233,523.2511306012],description:"Chain of 11 nearly just 19-tET minor thirds, Dave Keenan, 1-Jul-99"},keenan7:{frequencies:[261.6255653006,269.29177952703,279.86396690685,288.06460709314,296.5055443788,305.19382000629,314.13668154225,326.46944327063,336.03572815422,349.22823143301,359.46139971304,369.99442271164,380.8360868427,391.99543598175,407.38487419079,419.32216217931,435.78442404634,448.5538823653,461.69751437372,475.22628419761,489.15147723638,508.3551866238,523.2511306012],description:"Dave Keenan, 22 out of 72-tET periodicity block. TL 29-04-2001"},keenanmt:{frequencies:[261.6255653006,279.93529690293,292.50627485027,305.64177427204,327.03195662575,349.91912034749,365.63284274659,391.22147055517,418.60090448096,437.39890198442,457.04105241293,489.02683710225,523.2511306012],description:"Dave Keenan 1/4-comma tempered version of keenan with 6 7-limit tetrads"},keenanst:{frequencies:[261.6255653006,268.50609092997,277.46533822773,286.72352888229,294.26410920268,304.08282473376,314.22916151277,322.49311613356,333.25374941849,342.01803421352,353.43015577174,365.22306367425,374.82811589307,387.33500976677,397.52158713557,410.7856943143,424.4923875554,435.65616946139,450.19271626925,462.0323945472,477.44903730562,493.38008744487,506.35555615636,523.2511306012],description:"Dave Keenan, 7-limit temperament, g=260.353"},kelletat:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,327.14272545641,348.82502010853,367.43868454848,391.99543598175,413.39000965417,437.97145880542,465.08793784701,489.90551202062,523.2511306012],description:"Herbert Kelletat's Bach-tuning (1967)"},kellner:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,491.32444638706,523.2511306012],description:"Herbert Anton Kellner's Bach tuning. 5 1/5 Pyth. comma and 7 pure fifths"},kellners:{frequencies:[261.6255653006,275.84425785506,292.86986732103,310.2247482054,327.84547867349,348.89032888179,367.85164222246,391.46454285105,413.69968681881,438.2147004401,465.26210635182,491.68894399626,523.2511306012],description:"Kellner's temperament with 1/5 synt. comma instead of 1/5 Pyth. comma"},kepler1:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.1, Harmonices Mundi (1619)"},kepler2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Kepler's Monochord no.2"},kepler3:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Kepler's choice system, Harmonices Mundi, Liber III (1619)"},kilroy:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Kilroy"},kimball:{frequencies:[261.6255653006,272.52663052146,275.93321340298,290.69507255622,294.32876096318,306.59245933664,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Buzz Kimball 18-note just scale"},kimball_53:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,281.75060878526,283.42769574232,285.40970760065,287.78812183066,296.50897400735,299.00064605783,305.22982618403,307.79478270659,309.19384990071,313.95067836072,317.68818643644,319.76457981184,322.00069575458,327.03195662575,332.97799220076,338.57426097725,340.11323489078,342.12573923925,348.83408706747,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,400.13321751856,402.50086969323,404.33041910093,411.12588832951,418.60090448096,425.14154361347,428.11456140098,430.91269578922,436.04260883433,442.75095666255,444.76346101102,448.50096908674,457.84473927605,461.69217405988,475.68284600109,479.64686971777,483.00104363188,485.87604984397,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Buzz Kimball 53-note just scale"},kirkwood:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Scale based on Kirkwood gaps of the asteroid belt"},"kirn-stan":{frequencies:[261.6255653006,276.16031892841,292.60754013883,310.68035879446,327.03195662575,348.83408706747,368.21375857121,392.4383479509,414.24047839262,437.1900893839,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger temperament improved by Charles Earl Stanhope (1806)"},kirnberger:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's well-temperament, also called Kirnberger III, letter to Forkel 1779"},kirnberger1:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,438.75944753732,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger's temperament 1 (1766)"},kirnberger2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,438.75941205608,465.11211608996,490.54793493862,523.2511306012],description:'Kirnberger 2: 1/2 synt. comma. "Die Kunst des reinen Satzes" (1774)'},kirnberger3:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.22147055517,413.89982010446,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Kirnberger 3: 1/4 synt. comma (1744)"},kirnberger3v:{frequencies:[261.6255653006,275.93321340298,292.50063201309,310.07474405997,327.03195662575,348.83408706747,367.91095120397,391.21579858034,413.43299207996,437.39258595147,465.11211608996,490.54793493862,523.2511306012],description:"Variant well-temperament like Kirnberger 3, Kenneth Scholz, MTO 4.4, 1998"},klais:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,327.21690075602,348.83408706747,367.49599295996,391.99543598175,413.43299207996,438.01699797506,465.11211608996,489.99465727995,523.2511306012],description:"Johannes Klais, Bach temperament"},klonaris:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Johnny Klonaris, 19-limit harmonic scale"},knot:{frequencies:[261.6255653006,268.26840191956,280.31310567921,286.15296204753,294.32876096318,299.00064605783,306.59245933664,327.03195662575,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,459.88868900496,476.92160341255,478.40103369253,490.54793493862,523.2511306012],description:"Smallest knot in 3-D, American Scientist, Nov-Dec '97 p506-510, trefoil knot"},koepf_36:{frequencies:[261.6255653006,272.26348829648,274.95017225036,277.18263097687,288.45311779165,291.29956028699,293.66476791741,305.60543275312,308.62113352716,311.12698372208,323.77767743764,326.97270111135,329.62755691287,343.03050002254,346.41550969045,349.22823143301,363.4281550135,367.0144478307,369.99442271164,385.03871768789,388.83826257328,391.99543598175,407.93431128975,411.95978887118,415.30469757995,432.19134773437,436.45619266906,440,457.89078262597,462.40922843744,466.16376151809,485.11838543951,489.90551202062,493.88330125613,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 36-tone subset of 48-tone scale (1991)"},koepf_48:{frequencies:[261.6255653006,269.44737349144,272.26348829648,274.95017225036,277.18263097687,285.46954808622,288.45311779165,291.29956028699,293.66476791741,302.44445076078,305.60543275312,308.62113352716,311.12698372208,320.42873367481,323.77767743764,326.97270111135,329.62755691287,339.48241770075,343.03050002254,346.41550969045,349.22823143301,359.66909273781,363.4281550135,367.0144478307,369.99442271164,381.0561299374,385.03871768789,388.83826257328,391.99543598175,403.71490654806,407.93431128975,411.95978887118,415.30469757995,427.72104413038,432.19134773437,436.45619266906,440,453.15466093696,457.89078262597,462.40922843744,466.16376151809,480.10063929961,485.11838543951,489.90551202062,493.88330125613,508.64890891624,513.96502576833,519.03680970905,523.2511306012],description:"Siegfried Koepf, 48-tone scale (1991)"},kolinsky:{frequencies:[261.6255653006,277.2273508585,293.75953199293,311.27759533081,329.84032939425,349.51003591412,370.35272620855,392.4383479509,415.84102607989,440.63929776914,466.91639276282,494.76049384407,524.26505360912],description:"Kolinsky's 7th root of 3/2, also invented by Augusto Novaro"},kora1:{frequencies:[261.6255653006,293.66476791741,326.78388880949,349.22823143301,391.99543598175,440,489.62261321254,523.2511306012],description:"Kora tuning Tomora Ba, also called Silaba, 1/1=F, R. King"},kora2:{frequencies:[261.6255653006,298.79793764201,315.65242990842,349.22823143301,391.99543598175,447.69106452518,472.94426956511,523.2511306012],description:"Kora tuning Tomora Mesengo, also called Tomora, 1/1=F, R. King"},kora3:{frequencies:[261.6255653006,291.13134764929,330.58093469714,349.22823143301,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Hardino, 1/1=F, R.King"},kora4:{frequencies:[261.6255653006,291.13134764929,330.58093469714,371.06455309218,391.99543598175,436.20415848357,495.31175393723,523.2511306012],description:"Kora tuning Sauta, 1/1=F, R. King"},korea_5:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:'According to Lou Harrison, called "the Delightful" in Korea'},kornerup:{frequencies:[261.6255653006,272.97226153513,280.22976278938,292.38332274669,305.0639823888,313.17470478367,326.75708630452,340.92853547661,349.99278713323,365.17196824772,374.88056242272,391.13935185123,408.10305876469,418.95303445734,437.12302030357,456.08130156398,468.2068441924,488.51296691354,509.70006023951,523.2511306012],description:"Kornerup's temperament with fifth of (15 - sqrt 5) / 22 octaves"},kornerup_11:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Kornerup's doric minor"},kraeh_22:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,320.49131749323,336.37572681506,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,400.61414686654,412.06026534844,436.04260883433,441.49314144476,457.84473927605,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Kraehenbuehl & Schmidt 7-limit 22-tone tuning"},kraeh_22a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,318.93402246168,320.49131749323,327.03195662575,336.37572681506,343.38355445704,348.83408706747,350.39138209902,353.19451315581,358.80077526939,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,398.6675280771,400.61414686654,403.65087217807,408.78994578219,412.06026534844,418.60090448096,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,478.40103369253,488.36772189445,490.54793493862,498.33441009638,504.56359022259,523.2511306012],description:'Kraehenbuehl & Schmidt 7-limit 22-tone tuning with "inflections" for some tones'},kraeh_22b:{frequencies:[261.6255653006,269.10058145205,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,448.50096908674,457.84473927605,476.92160341255,490.54793493862,504.56359022259,523.2511306012],description:"Best 22-tET approximation of KRAEH_22A"},kring1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,523.2511306012],description:"Double-tie circular mirroring of 4:5:6 and Partch's 5-limit tonality Diamond"},kring1p3:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,310.07474405997,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,441.49314144476,446.50763144636,454.2110508691,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Third carthesian power of double-tie mirroring of 4:5:6 with kleismas removed"},kring2:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,392.4383479509,448.50096908674,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 6:7:8"},kring2p3:{frequencies:[261.6255653006,265.7783520514,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,515.07533168556,523.2511306012],description:"Third power of 6:7:8 mirroring with 1029/1024 intervals removed"},kring3:{frequencies:[261.6255653006,305.22982618403,313.95067836072,366.27579142084,373.75080757229,436.04260883433,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 3:5:7"},kring3bp:{frequencies:[261.6255653006,336.37572681506,366.27579142084,436.04260883433,470.92601754108,560.62621135843,610.45965236807,784.8766959018],description:"Double-tie BP circular mirroring of 3:5:7"},kring4:{frequencies:[261.6255653006,299.00064605783,327.03195662575,366.27579142084,373.75080757229,418.60090448096,457.84473927605,523.2511306012],description:"Double-tie circular mirroring of 4:5:7"},kring4p3:{frequencies:[261.6255653006,267.90457886781,273.37201925287,280.42990280658,286.15296204753,293.02063313667,299.00064605783,305.10270005901,320.49131749323,327.03195662575,334.88072358477,341.71502406609,350.53737850823,357.69120255941,366.27579142084,373.75080757229,382.72082695402,390.53145607553,400.61414686654,408.78994578219,418.60090448096,427.14378008261,448.68784449053,457.84473927605,467.18850946536,478.40103369253,488.16432009441,500.76768358318,510.98743222773,523.2511306012],description:"Third power of 4:5:7 mirroring with 3136/3125 intervals removed"},kring5:{frequencies:[261.6255653006,290.69507255622,336.37572681506,366.27579142084,373.75080757229,406.97310157871,470.92601754108,523.2511306012],description:"Double-tie circular mirroring of 5:7:9"},kring5p3:{frequencies:[261.6255653006,266.96486255163,272.4643387202,278.02483542877,284.8811711051,290.69507255622,296.68339105088,302.73815413355,308.91648380975,316.53463456122,322.99452506247,329.64821227876,336.37572681506,343.24053756638,351.70514951247,358.88280562497,366.27579142084,373.75080757229,381.45007420827,389.23476960028,398.83363954714,406.97310157871,415.27867508032,423.83341578697,432.48307733364,443.14848838571,452.19233508746,461.42075008924,470.92601754108,480.53675259294,492.38720931745,502.43592787495,512.78610798918,523.2511306012],description:"Third power of 5:7:9 mirroring with 250047/250000 intervals removed"},kring6:{frequencies:[261.6255653006,305.22982618403,336.37572681506,348.83408706747,392.4383479509,406.97310157871,448.50096908674,523.2511306012],description:"Double-tie circular mirroring of 6:7:9"},kring6p3:{frequencies:[261.6255653006,267.07609791103,271.31540105247,276.96780524107,288.32205155576,294.32876096318,299.00064605783,305.22982618403,310.07474405997,316.53463456122,324.36230800023,329.51091606373,336.37572681506,343.38355445704,348.83408706747,356.10146388137,361.75386806997,369.29040698809,378.42269266694,384.42940207435,392.4383479509,398.6675280771,406.97310157871,415.4517078616,422.04617941496,432.48307733364,441.49314144476,448.50096908674,457.84473927605,465.11211608996,474.80195184183,494.26637409559,504.56359022259,512.57253609913,523.2511306012],description:"Third power of 6:7:9 mirroring with 118098/117649 intervals removed"},krousseau:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,343.38355445704,348.83408706747,366.27579142084,392.4383479509,406.97310157871,457.84473927605,465.11211608996,488.36772189445,523.2511306012],description:"Kami Rousseau's tri-blues scale"},krousseau2:{frequencies:[261.6255653006,271.34627406517,291.88463270656,302.72962012827,337.74269681563,350.29154279212,363.30663963964,390.80553229045,405.32593044476,452.20508247496,469.00678383895,486.43275040712,523.2511306012],description:"19-tET version of Kami Rousseau's tri-blues scale"},kukuya:{frequencies:[261.6255653006,307.37578701508,361.96165147221,412.67427966689,460.80941404108],description:"African Kukuya Horns (aerophone, ivory, one note only)"},kurzw_arab:{frequencies:[261.6255653006,282.02769802256,290.29174037004,302.26980244078,321.16993719469,349.63190883464,374.94271441196,393.35634555235,411.95978887118,429.20598402782,447.69106452518,496.7443381147,523.2511306012],description:'Kurzweil "Empirical Arabic"'},kurzw_harmp:{frequencies:[261.6255653006,285.46954808622,287.62123438446,306.48933163909,308.79945157961,324.90175210669,345.81573716922,348.42227432308,427.72104413038,430.94493093825,458.94995811222,462.40922843744,523.2511306012],description:'Kurzweil "Empirical Bali/Java Harmonic Pelog"'},kurzw_melp:{frequencies:[261.6255653006,281.53940445957,283.98935579354,303.66981774726,307.02089761314,323.96475278212,344.02264297658,347.0163224393,421.10213511252,424.76655906637,451.06547253417,454.99063696457,523.2511306012],description:'Kurzweil "Empirical Bali/Java Melodic Pelog"'},kurzw_slen:{frequencies:[261.6255653006,266.96862289802,288.95340229325,306.66641795878,318.95145438803,352.26720984209,352.26720984209,389.06292924114,404.41509766528,429.20598402782,464.81937009253,474.03826620294,523.2511306012],description:'Kurzweil "Empirical Bali/Java Slendro, Siam 7"'},kurzw_tibet:{frequencies:[261.6255653006,270.53905136894,299.14332201883,312.9293240034,325.46525203475,353.69443592699,373.86139962101,397.69714089209,408.87792937274,438.98455767189,471.30800669535,489.90551202062,523.2511306012],description:'Kurzweil "Empirical Tibetian Ceremonial"'},kwazy:{frequencies:[13.75,13.8425266748,13.92142234948,14.00076777204,14.0805654254,14.16081788707,14.25610896047,14.337361936,14.41907801447,14.50125983535,14.58391005315,14.66703125278,14.76572882594,14.84988638999,14.93452361174,15.01964313826,15.10524789197,15.20689431811,15.29356631363,15.38073220905,15.46839499707,15.55655742089,15.66124080485,15.75050226619,15.84027256598,15.93055451337,16.0213510245,16.11266503216,16.22109048883,16.31354291552,16.40652227664,16.50003157548,16.59407373656,16.70573878851,16.80095347779,16.89671084507,16.99301388521,17.08986590459,17.18726993397,17.30292672931,17.40154500258,17.50072545316,17.60047118468,17.70078541898,17.81989766631,17.92146252619,18.023606257,18.12633215803,18.22964354736,18.35231459047,18.45691397115,18.56210951808,18.66790462912,18.77430261304,18.88130712282,19.00836345475,19.11670199894,19.22565790976,19.335234928,19.44543648263,19.57628896102,19.68786429416,19.80007566685,19.91292659048,20.02642071019,20.16118263857,20.27609169854,20.39165568498,20.50787833065,20.62476338959,20.74231451743,20.88189396397,21.00091073243,21.12060583931,21.24098302814,21.36204643183,21.50579618625,21.62836889778,21.75164008927,21.875613993,22.00029448845,22.14833914981,22.27457391904,22.40152829449,22.52920624893,22.65761190639,22.78674941445,22.94008616579,23.07083364148,23.202326315,23.33456843363,23.46756413327,23.62548236417,23.76013626908,23.89555763659,24.03175070206,24.16872014141,24.30647024079,24.47003364934,24.60950094889,24.74976328722,24.89082505353,25.03269080417,25.2011409598,25.3447753621,25.48922841152,25.63450477396,25.78060914191,25.95409219477,26.10201805756,26.25078702673,26.40040390759,26.55087337946,26.70220060843,26.88188539622,27.03509923475,27.18918616153,27.34415146685,27.5],description:"Kwazy temperament, g=162.741892, p=600, 5-limit"},lambdoma5_12:{frequencies:[261.6255653006,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,47.56828460011,52.32511306012,58.13901451124,65.40639132515,71.35242690016,74.75016151446,78.48766959018,87.20852176687,95.13656920022,98.10958698772,104.65022612024,109.01065220858,112.12524227169,116.27802902249,118.92071150027,130.8127826503,145.34753627811,149.50032302891,156.97533918036,163.51597831288,174.41704353373,186.87540378614,196.21917397545,209.30045224048,218.02130441717,261.6255653006,327.03195662575,348.83408706747,392.4383479509,436.04260883433,523.2511306012,654.0639132515,784.8766959018,1046.5022612024,1308.127826503],description:"5x12 Lambdoma"},lambdoma_prim:{frequencies:[261.6255653006,8.43953436454,9.02157121726,11.37502457829,13.76976659477,15.38973913533,16.87906872907,18.04314243452,20.12504348466,22.75004915657,23.78414230005,25.31860309361,27.06471365179,27.53953318954,30.77947827066,34.12507373486,37.37508075723,40.25008696932,41.30929978431,42.19767182268,45.10785608631,46.16921740599,47.56828460011,52.32511306012,56.87512289143,59.07674055175,60.37513045398,63.15099852083,68.84883297384,71.35242690016,74.75016151446,76.94869567665,79.62517204801,87.20852176687,96.38836616338,100.62521742331,104.65022612024,107.72817394731,112.12524227169,118.92071150027,130.8127826503,140.87530439263,156.97533918036,166.48899610038,174.41704353373,186.87540378614,261.6255653006,366.27579142084,392.4383479509,436.04260883433,523.2511306012,610.45965236807,654.0639132515,784.8766959018,915.6894785521,1308.127826503,1831.3789571042],description:"Prime Lambdoma"},lambert:{frequencies:[261.6255653006,276.15600972046,293.19138048956,310.67551062492,328.56569462012,349.50994910362,368.20801314466,391.67947347082,414.23401437362,438.93663604468,466.01326570444,491.89550004992,523.2511306012],description:"Lambert's temperament (1774) 1/7 Pyth. comma, 5 pure"},lara:{frequencies:[261.6255653006,286.4606265643,298.28060863281,313.11013128311,341.05478972476,377.11473546037,395.40657391157,420.13030572059,450.02449304881,492.74350578058,523.2511306012,577.23956595248,599.67057787333],description:"Sundanese 'multi-laras' gamelan Ki Barong tuning, Weintraub, TL 15-2-99 1/1=497"},lebanon:{frequencies:[261.6255653006,285.30470202322,311.12698372208,349.22823143301,391.99543598175,415.30469757995,466.16376151809,523.2511306012],description:"Lebanese scale? Dastgah Shur"},leedy:{frequencies:[261.6255653006,269.80136421624,290.69507255622,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:'Douglas Leedy, scale for "Pastorale" (1987), 1/1=f, 10/9 only in vocal parts'},leeuw1:{frequencies:[261.6255653006,311.12698372208,349.22823143301,380.8360868427,415.30469757995,466.16376151809,508.3551866238,554.36526195375,604.53960488156,659.25511382574,739.98884542327,806.96355802011,880,987.76660251225],description:'Ton de Leeuw: non-oct. mode from "Car nos vignes sont en fleurs",part 5. 1/1=A'},leftpistol:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Left Pistol"},legros1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.49749487796,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 3 just major thirds"},legros2:{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.49749487796,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Example of temperament with 2 just major thirds"},"lehman-bach":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.77584116741,328.14198392915,349.6228209638,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Brad Lehman's Bach keyboard temperament"},lemba10:{frequencies:[261.6255653006,283.65327551057,298.9489942119,324.1191713102,341.59697290141,370.35792032269,401.5404117335,423.19307614937,458.82405293702,483.56568031466,524.27976214079],description:"10-note Lemba scale, Herman Miller"},lemba12:{frequencies:[261.6255653006,276.1173031791,283.29759227608,298.9897683987,323.75689816556,341.69016129748,369.99442271164,390.48883496177,400.64329718448,422.83538548023,457.86139629758,483.22286023634,523.2511306012],description:"Lemba[12] in 270-et (poptimal)"},lemba22:{frequencies:[261.6255653006,268.42900262332,276.1173031791,283.29759227608,298.9897683987,306.76484424299,315.55115201964,323.75689816556,341.69016129748,350.57563899649,360.61677037127,369.99442271164,379.61593604418,390.48883496177,400.64329718448,422.83538548023,433.83100318771,446.25671880862,457.86139629758,483.22286023634,495.78882330645,509.98912747823,523.2511306012],description:"Lemba[22] in 270-et (poptimal)"},lemba24:{frequencies:[261.6255653006,275.73346179752,283.65327551057,290.60211247891,298.9489942119,307.53562105228,315.06951922004,324.1191713102,332.05932738876,341.59697290141,351.40856549044,360.01724743313,370.35792032269,390.32910012969,401.5404117335,411.37720579947,423.19307614937,435.34833037897,446.01333880095,458.82405293702,470.06416125332,483.56568031466,497.45499966368,509.64147516102,524.27976214079],description:"24-note Lemba scale for mapping millerlemba24.kbm"},lemba8:{frequencies:[261.6255653006,275.73334871592,283.6533803711,298.94898212432,307.53584843097,324.11927802481,341.59694330429,351.4088110982,370.358025147],description:"Lemba temperament (4 down, 3 up) TOP tuning, Herman Miller, TL 22-11-2004"},leusden:{frequencies:[261.6255653006,275.54404190554,292.50627485027,310.51268695591,327.03195662575,349.91912034749,367.08095907728,391.22147055517,413.66634097248,437.39890198442,466.16376151809,489.02683710225,523.2511306012],description:"Organ in Gereformeerde kerk De Koningshof, Henk van Eeken, 1984, a'=415, modif. 1/4 mean"},leven:{frequencies:[261.6255653006,279.06726965397,298.97057995496,313.95067836072,330.39003879965,348.83408706747,369.35382642901,392.4383479509,418.60090448096,448.46752658184,465.11211608996,502.32108537715,523.2511306012],description:"Leven's monochord ?"},ligon:{frequencies:[261.6255653006,279.66870773512,292.40504357126,309.19384990071,329.87571277032,342.12573923925,366.27579142084,392.4383479509,411.12588832951,436.04260883433,462.87600014722,485.87604984397,523.2511306012],description:"Jacky Ligon, strictly proper all prime scale, TL 08-09-2000"},ligon2:{frequencies:[261.6255653006,276.16031892841,292.40504357126,310.68035879446,331.39238271409,355.06326719367,382.37582620857,411.78935130154,441.2028763945,470.61640148747,500.02992658044,529.4434516734,558.85697676637],description:"Jacky Ligon, 19-limit symmetrical non-octave scale, 2001"},ligon3:{frequencies:[261.6255653006,273.51763645063,286.54228580542,300.86940009569,316.70463167967,334.29933343966,341.25073734861,376.08675011961,401.15920012759,427.90314680276,471.58492637221,481.3910401531,508.13498682828,534.87893350345,561.62288017862,588.36682685379,615.11077352897],description:"Jacky Ligon, 23-limit non-octave scale (2001)"},ligon4:{frequencies:[261.6255653006,278.49926570678,289.46759601673,308.13698517552,320.27237341115,340.92853547661,362.91692931321,386.32347802158,401.53832428939,427.43578342293,444.26952759254,472.92296174596,491.54841572131,523.2511306012,556.99853141357,592.92249142473,616.27397035104,640.54474682231,681.85707095323,725.83385862642,754.41987838254,803.07664857879],description:"Jacky Ligon, 2/1 Phi Scale, TL 12-04-2001"},ligon5:{frequencies:[261.6255653006,273.22765669781,280.653851324,293.09977429907,314.41721066027,328.36040925687,337.28508524374,352.24238645938,377.86132347501,394.61802538749,405.34378524393,423.31898451752,454.1076550834,474.24531572837,487.13535379632,508.73764640933,545.73895363303],description:'Jacky Ligon, scale for "Two Golden Flutes" (2001)'},ligon6:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:'Jacky Ligon, "Primal Golden Tuning" (2001)'},ligon7:{frequencies:[261.6255653006,294.32876096318,321.08592105074,361.22166118208,394.05999401681,443.31749326891,483.61908356609,527.58445479937],description:"Jacky Ligon, 7 tone, 27/22=generator, MMM 22-01-2002"},lindley_ea:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Mark Lindley +J. de Boer +W. Drake (1991), for organ Grosvenor Chapel, London"},lindley_sf:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.07474405997,328.14198392915,349.6228209638,368.32692341742,391.5530240856,413.90012676351,438.51190905657,465.63764214343,491.10256480205,523.2511306012],description:"Lindley (1988) suggestion nr. 2 for Stanford Fisk organ"},"ling-lun":{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,331.11985608357,353.59332287831,372.50983809402,392.4383479509,419.07356785577,441.49314144476,471.45776383774,496.67978412536,523.2511306012],description:"Scale of Ling Lun from C"},liu_major:{frequencies:[261.6255653006,290.69507255622,322.99452506247,348.83408706747,392.4383479509,436.04260883433,484.4917875937,523.2511306012],description:`Linus Liu's Major Scale, see his 1978 book, "Intonation Theory"`},liu_mel:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,423.83341578697,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Linus Liu's Melodic Minor, use 5 and 7 descending and 6 and 8 ascending"},liu_minor:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,387.59343007496,418.60090448096,484.4917875937,523.2511306012],description:"Linus Liu's Harmonic Minor"},liu_pent:{frequencies:[261.6255653006,294.32876096318,331.11985608357,353.19451315581,392.4383479509,441.49314144476,496.67978412536,529.79176973372],description:`Linus Liu's "pentatonic scale"`},lorina:{frequencies:[261.6255653006,271.31540105247,293.02063313667,305.22982618403,313.95067836072,348.83408706747,348.83408706747,385.55346465352,406.97310157871,457.84473927605,457.84473927605,465.11211608996,523.2511306012],description:"Lorina"},lt46a:{frequencies:[261.6255653006,265.62583852249,273.73233506765,277.91772325275,286.39934942254,290.77841553921,299.65253047503,308.79746990018,313.51900484808,323.08712797864,328.02715279963,338.03804253716,348.35444940179,353.68081538041,364.47461587782,370.04745828823,381.3407438317,387.1714705201,398.98735486934,411.16384203565,417.45056598488,430.19052226982,436.76816801564,450.09766813034,463.83396431287,470.92601754108,485.29796386361,492.71820372913,507.75521382755,523.2511306012],description:"13-limit temperament, minimax g=495.66296 cents"},lucy_19:{frequencies:[261.6255653006,272.17716319349,280.81422591737,292.13972001074,301.4102593031,313.56641022552,326.2128298123,336.56461921066,350.13857756143,364.25998604447,375.81913491042,390.97626371576,406.74469336313,419.65201956185,436.57696862128,450.43096951372,468.59726172356,487.49621708267,502.96605061019,523.2511306012],description:"Lucy's 19-tone scale"},lucy_24:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,292.13970819848,301.41031849758,303.92192719902,313.56642833783,326.21280343239,336.56467170065,339.36921655583,350.13858362887,364.25994396351,375.81917832675,390.97625694066,403.38329512334,406.744629928,419.65205349792,436.57694340361,450.43105016925,454.18442712942,468.59728067062,487.49616921257,502.96612033609,523.2511306012],description:"Lucy/Harrison, meantone tuning from Bbb to Cx, third=1200.0/pi, 1/1=A"},lucy_31:{frequencies:[261.6255653006,269.92785558198,272.17712546173,280.81425349217,283.15423815518,292.13970819848,301.41031849758,303.92192719902,313.56642833783,323.51698308414,326.21280343239,336.56467170065,339.36921655583,350.13858362887,361.24970022276,364.25994396351,375.81917832675,378.95082751155,390.97625694066,403.38329512334,406.744629928,419.65205349792,432.96907456701,436.57694340361,450.43105016925,454.18442712942,468.59728067062,483.46750424654,487.49616921257,502.96612033609,507.15726445705,523.2511306012],description:"Lucy/Harrison's meantone tuning, 1/1=A"},lucy_7:{frequencies:[261.6255653006,292.13972001074,326.2128298123,350.13857756143,390.97626371576,436.57696862128,487.49621708267,523.2511306012],description:"Diatonic Lucy's scale"},lumma5:{frequencies:[261.6255653006,279.06726965397,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,459.88868900496,490.54793493862,523.2511306012],description:"Carl Lumma's 5-limit version of lumma7, also Fokker 12-tone just."},lumma7:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,390.69417751556,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Carl Lumma's 7-limit 12-tone scale, a.k.a GW Smith's Prism. TL 21-11-98"},lumma7t:{frequencies:[261.6255653006,279.68948643792,293.67396186758,305.56991806333,326.66797434652,349.22276480589,366.68390442934,392.00157215927,419.06732091375,436.04260883433,457.84473927605,489.45662770953,523.2511306012],description:"Tempered lumma7, 6 tetrads + 4 triads within 2c of Just, TL 19-2-99"},lumma7t72:{frequencies:[261.6255653006,279.86396690685,293.66476791741,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"72-tET version of lumma7t"},lumma7t_keen:{frequencies:[261.6255653006,279.95098841649,293.39965821869,305.14186035122,326.51537799354,349.38597341375,366.17023517096,391.81845653432,419.26317124465,436.04260556019,456.98979229899,488.99939844699,523.2511306012],description:"Dave Keenan's adaptation of lumma7t to include 6:8:11, TL 17-04-9"},lumma_10:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,375.37611551499,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:"Carl Lumma's 10-tone 125 cent Pyth. scale, TL 29-12-1999"},lumma_12_fun:{frequencies:[261.6255653006,276.16031892841,293.246794009,310.68035879446,327.94037872749,348.23056788569,368.93292606842,390.99572534534,413.52379936426,439.8701910135,464.30742384759,491.05951174505,522.34585182853],description:"Rational well temperament based on 577/289, 3/2, and 19/16."},"lumma_12_moh-ha-ha":{frequencies:[261.6255653006,276.16031892841,293.42033886144,310.68035879446,330.09788121912,349.51540364377,368.93292606842,391.72740891476,414.24047839262,440.13050829216,466.02053819169,493.4335110265,523.2511306012],description:"Rational well temperament."},lumma_12_strangeion:{frequencies:[261.6255653006,277.97716313189,292.40504357126,310.68035879446,330.09788121912,349.23197505989,368.93292606842,391.9912339477,414.71297038361,440.63253103259,468.17206422213,492.47165233054,523.2511306012],description:'19-limit "dodekaphonic" scale.'},lumma_22:{frequencies:[261.6255653006,263.29318697558,262.98919438538,262.83732973433,262.68555277841,262.53386346698,263.29318697558,262.38226174944,262.98919438538,262.23074757519,263.29318697558,262.68555277841,262.07932089369,263.29318697558,262.83732973433,263.59753095473,262.38226174944,263.44531501617,262.68555277841,262.98919438538,263.29318697558,263.902226729,261.92798165442],description:"Carl Lumma, intervals of attraction by trial and error, 1999."},lumma_5151:{frequencies:[261.6255653006,276.7826524273,292.81785438923,309.78204413166,327.729041887,346.71578592374,369.67398581173,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Carl Lumma's 5151 temperament III (1197/709.5/696). June 2003"},lumma_al1:{frequencies:[261.6255653006,274.63272075836,292.81785438923,309.78204413166,327.729041887,346.71578592374,366.8025131876,391.09077971329,413.74834001613,437.71854962063,463.0774559108,489.90551202062,522.3451906503],description:"Alaska I (1197/709.5/696), Carl Lumma, 6 June 2003."},lumma_al2:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,347.216824829,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska II (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al3:{frequencies:[261.6255653006,275.18850165466,292.98704147282,310.05056613125,328.10786809908,349.32910706765,367.43868454848,391.20374747207,413.98739946535,438.09796819065,463.6127330944,490.61347436729,522.3451906503],description:"Alaska III (1197/707/696.5), Carl Lumma, 6 June 2003."},lumma_al4:{frequencies:[261.6255653006,276.38325105256,293.32570896007,309.87152561537,328.86683469969,349.02656754477,368.7143392539,391.31674786192,413.39000965417,438.73106346722,464.55095742407,491.89038573682,522.04355935974],description:"Alaska IV (1196/701/697), Carl Lumma, 6 June 2003."},lumma_al5:{frequencies:[261.6255653006,276.84261239447,293.89809826895,310.99222741882,329.08061019985,349.35433052883,369.67398581173,391.17550247358,415.27471248744,439.42852501549,464.98720675925,493.63374591774,522.3451906503],description:"Alaska V (1197/702/696.375), Carl Lumma, 6 June 2003."},lumma_al6:{frequencies:[261.6255653006,276.86260193655,293.83444433876,310.94732162256,329.05685050583,349.22823143301,369.56723519412,391.09077971329,415.06487744922,439.23819834286,464.81937009253,493.31307433255,522.04355935974],description:"Alaska VI (1196/701/696), Carl Lumma, 6 June 2003."},lumma_al7:{frequencies:[261.6255653006,276.11677207256,293.26810788146,310.16878953668,328.73958549954,348.42227432308,368.499294457,391.39134599911,413.94674961638,438.72852926454,464.99660740427,491.79379203259,522.3451906503],description:"Alaska VII, Carl Lumma, 27 Jan 2004"},lumma_dec1:{frequencies:[261.6255653006,286.10322937235,299.18791603519,327.17991022208,342.14320575162,374.15409293384,391.26571058456,427.87249484695,457.55816161244,489.30340830564,523.2511306012],description:"Carl Lumma, two 5-tone 7/4-chains, 5/4 apart in 31-tET, TL 9-2-2000"},lumma_dec2:{frequencies:[261.6255653006,286.10322937235,292.57243455474,327.17991022208,342.14320575162,382.6142546815,391.26571058456,437.54730686196,457.55816161244,511.68128147674,523.2511306012],description:"Carl Lumma, two 5-tone 3/2-chains, 7/4 apart in 31-tET, TL 9-2-2000"},lumma_magic:{frequencies:[261.6255653006,293.02063313667,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,418.60090448096,436.04260883433,457.84473927605,467.18850946536,523.2511306012],description:"Magic chord test, Carl Lumma, TL 24-06-99"},"lumma_synchtrines+2":{frequencies:[261.6255653006,277.1478691313,293.59111644706,311.009943641,329.46223568632,349.00930447981,369.71610741159,391.65144749868,414.88821865981,439.50363030131,465.57948255979,493.20241832805,522.46423212702],description:"The 12-tone equal temperament with 2:3:4 brats of +2"},"lumma_synchtrines-2":{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338321153,392.13011885309,415.46777761785,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"The 12-tone equal temperament with 2:3:4 brats of -2"},lydian_chrom:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,317.12189733406,327.03195662575,373.75080757229,402.50086969323,418.60090448096,427.14378008261,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,615.58956541318,634.24379466812,654.0639132515,747.50161514457,805.00173938646,837.20180896192,854.28756016522,872.08521766867,951.36569200218,1046.5022612024],description:"Lydian Chromatic Tonos"},lydian_chrom2:{frequencies:[261.6255653006,272.09058791262,283.42769574232,340.11323489078,377.90359432309,400.13321751856,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the chromatic genus"},lydian_chrominv:{frequencies:[261.6255653006,271.68808704293,281.75060878526,362.25078272391,402.50086969323,422.62591317789,442.75095666255,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Lydian inverted"},lydian_diat:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,373.75080757229,387.59343007496,402.50086969323,436.04260883433,455.00098313148,475.68284600109,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,697.66817413493,747.50161514457,852.70554616492,805.00173938646,872.08521766867,910.00196626296,951.36569200218,996.66882019276,1046.5022612024],description:"Lydian Diatonic Tonos"},lydian_diat2:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,377.90359432309,425.14154361347,485.87604984397,523.2511306012],description:"Schlesinger's Lydian Harmonia, a subharmonic series through 13 from 26"},lydian_diat2inv:{frequencies:[261.6255653006,281.75060878526,322.00069575458,362.25078272391,382.37582620857,402.50086969323,442.75095666255,483.00104363188,523.2511306012],description:"Inverted Schlesinger's Lydian Harmonia, a harmonic series from 13 from 26"},lydian_diatcon:{frequencies:[261.6255653006,283.42769574232,309.19384990071,340.11323489078,358.01393146398,425.14154361347,485.87604984397,523.2511306012],description:"A Lydian Diatonic with its own trite synemmenon replacing paramese"},lydian_enh:{frequencies:[261.6255653006,275.39533189537,290.69507255622,299.00064605783,303.33398875432,307.79478270659,373.75080757229,402.50086969323,410.39304360878,414.45634107026,418.60090448096,475.68284600109,523.2511306012,550.79066379074,581.39014511244,598.00129211566,606.66797750864,615.58956541318,747.50161514457,805.00173938646,820.78608721757,828.91268214051,837.20180896192,951.36569200218,1046.5022612024],description:"Lydian Enharmonic Tonos"},lydian_enh2:{frequencies:[261.6255653006,266.75547834571,272.09058791262,340.11323489078,377.90359432309,388.70083987518,400.13321751856,523.2511306012],description:"Schlesinger's Lydian Harmonia in the enharmonic genus"},lydian_enhinv:{frequencies:[261.6255653006,266.65682617177,271.68808704293,362.25078272391,402.50086969323,412.56339143556,422.62591317789,523.2511306012],description:"A harmonic form of Schlesinger's Enharmonic Lydian inverted"},lydian_pent:{frequencies:[261.6255653006,269.93113880221,283.42769574232,340.11323489078,377.90359432309,395.48050568695,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the pentachromatic genus"},lydian_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,402.50086969323,436.04260883433,475.68284600109,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,805.00173938646,872.08521766867,951.36569200218,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Lydian Tonos"},lydian_tri:{frequencies:[261.6255653006,268.51044859798,275.76748774928,340.11323489078,377.90359432309,392.4383479509,408.13588186894,523.2511306012],description:"Schlesinger's Lydian Harmonia in the first trichromatic genus"},lydian_tri2:{frequencies:[261.6255653006,268.51044859798,283.42769574232,340.11323489078,377.90359432309,392.4383479509,425.14154361347,523.2511306012],description:"Schlesinger's Lydian Harmonia in the second trichromatic genus"},nachbaur_6:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,523.2511306012],description:`Fred Nachbaur's harmonic hexatonic, as used in "Void of Sensation"`},nassarre:{frequencies:[261.6255653006,277.66336828161,294.34406205295,311.66659310186,331.15428443044,350.6431449633,372.56793743951,394.49404533893,419.16071913933,443.82887286778,471.58032351597,495.88429116026,523.2511306012],description:"Nassarre's Equal Semitones"},negri5_19:{frequencies:[261.6255653006,271.22480440713,281.41555648081,291.74090527404,302.70251050738,313.80889368201,325.59966315504,337.54616011163,350.22880998446,363.07896889448,376.72096510961,390.54314115106,405.21705098851,420.08476989056,435.86864979507,451.86099895106,468.83881245397,486.04086171852,504.30291533224,523.2511306012],description:"Negri temperament, g=126.238272, 5-limit"},negri_19:{frequencies:[261.6255653006,269.02825605326,281.18681366715,289.14299126725,302.21061955257,310.76166549402,324.80633749066,333.99672707734,349.09149261831,358.96903024071,375.19240283292,392.14898023137,403.24482870584,421.46921730446,433.39468387282,452.98167562873,465.79878414581,486.85025820508,500.62567766841,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},negri_29:{frequencies:[261.6255653006,269.02825605326,276.64040740805,281.18681366715,289.14299126725,297.32428710198,302.21061955257,310.76166549402,319.55466133443,324.80633749066,333.99672707734,343.44715857517,349.09149261831,358.96903024071,369.1260526158,375.19240283292,385.80846524917,392.14898023137,403.24482870584,414.65463641221,421.46921730446,433.39468387282,445.65757880387,452.98167562873,465.79878414581,478.97855252217,486.85025820508,500.62567766841,514.79087238232,523.2511306012],description:"Negri temperament, 13-limit, g=124.831"},"neid-mar-morg":{frequencies:[261.6255653006,277.49581689502,293.99657683935,311.12698372208,329.99999983505,349.6228209638,369.99442271164,392.4383479509,415.77394625748,440,466.69047534984,494.44133512215,523.2511306012],description:"Neidhardt-Marpurg-de Morgan temperament (1858)"},neidhardt1:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,348.83408706747,368.32692341742,391.5530240856,414.36778843034,438.51190905657,465.11211608996,491.65745674141,523.2511306012],description:"Neidhardt I temperament (1724)"},neidhardt2:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,349.22823143301,369.15973155124,391.5530240856,414.36778843034,438.51190905657,466.16376151809,492.7691222293,523.2511306012],description:"Neidhardt II temperament (1724)"},neidhardt3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Neidhardt III temperament (1724) 'Grosse Stadt'"},neidhardt4:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,329.62755691287,349.22823143301,369.99442271164,391.99543598175,415.30469757995,440,466.16376151809,493.88330125613,523.2511306012],description:"Neidhardt IV temperament (1724), equal temperament"},neidhardtn:{frequencies:[261.6255653006,276.86979852503,293.66476791741,310.77584116741,329.62755691287,348.83408706747,369.99442271164,391.5530240856,415.30469757995,439.50340943686,466.16376151809,493.32589719545,523.2511306012],description:"Johann Georg Neidhardt's temperament (1732), alt. 1/6 & 0 P, also Marpurg nr.10"},neogeb24:{frequencies:[261.6255653006,270.11478301563,282.39420473706,291.55732426372,295.23185084282,304.81152420286,308.65309481038,318.66826025208,333.15492371116,343.96512368902,348.30015108876,359.6017829051,375.94928703407,388.14807710176,393.03994675222,405.79329398283,424.24066266408,438.00640969567,443.52664897728,457.91818970179,463.68937649142,478.73515685363,500.49846361623,516.73862125829,523.2511306012],description:"Neo-Gothic e-based lineotuning (T/S or Blackwood's R=e, ~2.71828), 24 notes"},neogji12:{frequencies:[261.6255653006,282.52678126125,294.32876096318,317.84262891891,332.97799220076,348.83408706747,374.60024122586,392.4383479509,423.79017189188,441.49314144476,443.97065626768,499.46698830115,523.2511306012],description:"M. Schulter, neo-Gothic 12-note JI (prim. 2/3/7/11) 1/1=F with Eb key as D+1"},neogp16a:{frequencies:[261.6255653006,274.38778799819,281.28352228595,295.02457363685,309.19384990071,317.19205704586,332.33517754401,348.83408706747,366.27579142084,374.86334014511,392.4383479509,411.12588832951,422.62591317789,442.75095666255,464.34856430463,498.91386871277,523.2511306012],description:"M. Schulter, scale from mainly prime-to-prime ratios and octave complements (Gb-D#)"},neutr_diat:{frequencies:[261.6255653006,294.32876096318,320.24370022528,348.83408706747,392.4383479509,427.47405410759,479.82340237272,523.2511306012],description:"Neutral Diatonic, 9 + 9 + 12 parts, geometric mean of major and minor"},neutr_pent1:{frequencies:[261.6255653006,302.32287545847,348.83408706747,392.4383479509,453.48431318771,523.2511306012],description:"Quasi-Neutral Pentatonic 1, 15/13 x 52/45 in each trichord, after Dudon"},neutr_pent2:{frequencies:[261.6255653006,301.87565226992,348.83408706747,392.4383479509,452.81347840488,523.2511306012],description:"Quasi-Neutral Pentatonic 2, 15/13 x 52/45 in each trichord, after Dudon"},new_enh:{frequencies:[261.6255653006,264.89588486686,279.06726965397,348.83408706747,392.4383479509,397.34382730029,418.60090448096,523.2511306012],description:"New Enharmonic"},new_enh2:{frequencies:[261.6255653006,327.03195662575,331.11985608357,348.83408706747,392.4383479509,490.54793493862,496.67978412536,523.2511306012],description:"New Enharmonic permuted"},newcastle:{frequencies:[261.6255653006,273.65745935891,291.9012907804,312.65334602246,327.03195662575,350.28154752005,366.3906401674,390.81668391305,410.48618883318,436.04260883433,467.04206359353,490.54793493862,523.2511306012],description:"Newcastle modified 1/3-comma meantone"},norden:{frequencies:[261.6255653006,274.87601291722,292.73769384471,310.07474405997,327.54963108844,349.78078158391,366.5013507395,391.37619916626,412.31401916973,437.91808280662,466.37437567834,489.99465727995,523.2511306012],description:"Reconstructed Schnitger temperament, organ in Norden. Ortgies, 2002"},novaro:{frequencies:[261.6255653006,274.70684356563,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,498.33441009638,523.2511306012],description:"9-limit diamond with 21/20, 16/15, 15/8 and 40/21 added for evenness"},novaro15:{frequencies:[261.6255653006,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.87565226992,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,453.48431318771,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,523.2511306012],description:"1-15 diamond, see Novaro, 1927, Sistema Natural base del Natural-Aproximado, p"},novaro_eb:{frequencies:[261.6255653006,277.27733921611,293.70273468471,311.34510173929,329.85947563084,349.74559786079,370.61463194963,392.51515715445,416.03831243363,440.72414616847,467.23897542105,495.06435356607,524.26505360912],description:"Novaro (?) equal beating 4/3 with strectched octave, almost pure 3/2"},janke1:{frequencies:[261.6255653006,276.38325105256,293.32570896007,310.58830860439,328.86683469969,349.02656754477,368.7143392539,391.76907592069,414.34624765043,439.23819834286,465.62553897253,492.45896815637,523.2511306012],description:"Rainer Janke, Temperatur I"},janke2:{frequencies:[261.6255653006,276.38325105256,292.98704147282,310.58830860439,328.48713220126,349.02656754477,368.7143392539,391.54284657258,414.34624765043,438.73106346722,465.62553897253,491.89038573682,523.2511306012],description:"Rainer Janke, Temperatur II"},janke3:{frequencies:[261.6255653006,276.22365192501,292.98704147282,310.40895756597,328.29744538229,349.02656754477,368.50142299854,391.54284657258,414.10698098223,438.47771564426,465.62553897253,491.60634075178,523.2511306012],description:"Rainer Janke, Temperatur III"},janke4:{frequencies:[261.6255653006,275.90473010106,292.98704147282,310.76776326996,328.10786809908,349.22823143301,368.07595926604,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.32245979018,523.2511306012],description:"Rainer Janke, Temperatur IV"},janke5:{frequencies:[261.6255653006,275.58617649731,292.98704147282,310.05056613125,328.10786809908,348.82502010853,367.43868454848,391.54284657258,413.39000965417,438.47771564426,465.08793784701,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur V"},janke6:{frequencies:[261.6255653006,275.74540729824,292.98704147282,310.58830860439,328.10786809908,349.43001184052,367.65098676472,391.54284657258,413.86785247997,438.47771564426,465.89457252293,491.0387427573,523.2511306012],description:"Rainer Janke, Temperatur VI"},janke7:{frequencies:[261.6255653006,275.42703764514,292.81785438923,311.12698372208,327.91840028839,349.63190883464,367.0144478307,391.54284657258,413.62886206386,438.22451411849,467.24207374344,490.75518955849,523.2511306012],description:"Rainer Janke, Temperatur VII"},jemblung1:{frequencies:[261.6255653006,298.87388797409,337.89601991959,388.44742741354,452.30188977628,523.2511306012],description:"Scale of bamboo gamelan jemblung from Kalijering, slendro-like. 1/1=590 Hz."},jemblung2:{frequencies:[261.6255653006,300.03885820455,355.06324470257,391.40016308218,451.61555914985,523.2511306012],description:"Bamboo gamelan jemblung at Royal Batavia Society. 1/1=504 Hz."},ji_10coh:{frequencies:[261.6255653006,283.42769574232,299.7792935736,327.03195662575,348.83408706747,370.63621750918,392.4383479509,436.04260883433,457.84473927605,485.0974023282,523.2511306012],description:"Differentially coherent 10-tone scale"},ji_10coh2:{frequencies:[261.6255653006,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,479.64686971777,523.2511306012],description:"Other diff. coherent 10-tone scale"},ji_11:{frequencies:[261.6255653006,276.96780524107,294.32876096318,316.53463456122,336.37572681506,356.10146388137,384.42940207435,406.97310157871,432.48307733364,465.11211608996,494.26637409559,523.2511306012],description:"3 and 7 prime rational interpretation of 11-tET. OdC 2000"},ji_12:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Basic JI with 7-limit tritone"},ji_12a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"7-limit 12-tone scale"},ji_12b:{frequencies:[261.6255653006,272.52663052146,290.69507255622,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"alternate 7-limit 12-tone scale"},ji_12c:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'Kurzweil "Just with natural b7th", is Sauveur Just with 7/4'},ji_13:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"5-limit 12-tone symmetrical scale with two tritones"},ji_17:{frequencies:[261.6255653006,271.31540105247,283.8170195002,294.32876096318,310.07474405997,321.55899383997,336.37572681506,348.83408706747,361.75386806997,378.42269266694,392.4383479509,406.97310157871,425.72552925031,441.49314144476,465.11211608996,482.33849075995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 17-tET. OdC"},ji_17a:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,310.07474405997,321.08592105074,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,426.35277308246,441.49314144476,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_17b:{frequencies:[261.6255653006,272.52663052146,285.40970760065,294.32876096318,310.07474405997,319.76457981184,334.88072358477,348.83408706747,359.73515228832,380.54627680087,392.4383479509,408.78994578219,428.11456140098,441.49314144476,465.11211608996,479.64686971777,502.32108537715,523.2511306012],description:"Alt. 3, 5 and 11 prime rational interpretation of 17-tET, OdC"},ji_19:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"5-limit 19-tone scale"},ji_20:{frequencies:[261.6255653006,271.31540105247,279.38237857051,288.32205155576,299.00064605783,310.07474405997,321.55899383997,331.11985608357,348.83408706747,356.10146388137,372.50983809402,384.42940207435,392.4383479509,413.43299207996,425.72552925031,441.49314144476,457.84473927605,474.80195184183,489.99465727995,504.56359022259,523.2511306012],description:"3 and 7 prime rational interpretation of 20-tET. OdC"},ji_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"7-limit 21-tone just scale, Op de Coul, 2001"},ji_22:{frequencies:[261.6255653006,272.52663052146,279.06726965397,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"5-limit 22-tone scale (Zarlino?)"},ji_27:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,331.11985608357,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,413.43299207996,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"7-limit rational interpretation of 27-tET, OdC"},ji_29:{frequencies:[261.6255653006,267.90457886781,275.62199471997,282.55561052465,287.78812183066,294.32876096318,301.39265122629,310.07474405997,317.12189733406,323.76163705949,331.11985608357,340.65828815182,348.83408706747,356.76213450082,367.91095120397,372.08969287196,383.71749577421,392.4383479509,401.85686830172,413.43299207996,422.82919644541,431.68218274599,441.49314144476,454.2110508691,465.11211608996,475.68284600109,484.4917875937,496.67978412536,510.98743222773,523.2511306012],description:"3,5,11-prime rational interpretation of 29-tET, OdC"},ji_30:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,313.95067836072,321.92208230347,329.64821227876,336.37572681506,344.91651675372,353.19451315581,360.81424763342,370.01329949656,379.40816842909,387.59343007496,396.89567239676,406.97310157871,415.27867508032,425.24536328225,436.04260883433,443.97065626768,456.65553216105,465.11211608996,478.40103369253,488.36772189445,498.33441009638,511.62332769895,523.2511306012],description:"11-limit rational interpretation of 30-tET"},ji_31:{frequencies:[261.6255653006,267.57160087561,274.08392555301,280.31310567921,285.40970760065,293.02063313667,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,356.76213450082,366.27579142084,373.75080757229,383.71749577421,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,467.18850946536,479.64686971777,490.54793493862,499.46698830115,512.78610798918,523.2511306012],description:"A just 11-limit 31-tone scale, optimized for Mann complexity"},ji_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,318.93402246168,327.03195662575,334.88072358477,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 7-limit 31-tone scale"},ji_31b:{frequencies:[261.6255653006,267.90457886781,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"A just 5-limit 31-tone scale, corner clipped genus"},ji_31c:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,334.88072358477,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,408.78994578219,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"A just 11-limit 31-tone scale"},ji_5coh:{frequencies:[261.6255653006,305.22982618403,348.83408706747,381.53728273004,446.94367405519,523.2511306012],description:"Differential fully coherent pentatonic scale"},ji_6coh:{frequencies:[261.6255653006,294.32876096318,330.74639366397,372.08969287196,418.60090448096,465.11211608996,523.2511306012],description:"Differential coherent 6-tone scale, OdC 2003"},ji_7:{frequencies:[261.6255653006,290.69507255622,318.93402246168,348.83408706747,392.4383479509,429.2294430713,470.92601754108,523.2511306012],description:"7-limit rational interpretation of 7-tET. OdC"},ji_7a:{frequencies:[261.6255653006,287.78812183066,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Superparticular approximation to 7-tET. Op de Coul, 1998"},ji_8coh:{frequencies:[261.6255653006,286.99041781007,312.35527031954,339.96223546814,370.00947616612,405.83764015148,441.71144237774,480.75585116768,523.2511306012],description:"Differential coherent 8-tone scale, OdC, 2003"},ji_8coh3:{frequencies:[261.6255653006,277.97716313189,302.50455987882,327.03195662575,359.73515228832,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Differential fully coherent 8-tone scale, OdC, 2003"},ji_9coh:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,366.27579142084,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Differentially coherent 9-tone scale"},ji_ri24a:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,301.87565226992,310.68035879446,319.76457981184,329.87571277032,340.11323489078,348.83408706747,359.73515228832,370.63621750918,380.54627680087,392.4383479509,402.50086969323,414.99227599406,428.11456140098,440.63253103259,453.48431318771,465.11211608996,479.64686971777,494.18162334558,508.71637697339,523.2511306012],description:"M. Schulter, just/rational intonation system - with circulating 24-note set"},jioct12:{frequencies:[261.6255653006,272.52663052146,282.55561052465,302.80736724606,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"12-tone JI version of Messiaen's octatonic scale, Erlich & Par\xEF\xBF\xBDzek"},"jobin-bach":{frequencies:[261.6255653006,275.07759559501,292.50627485027,309.76836826904,327.03195662575,348.83408706747,366.77012764335,391.22147055517,412.61639318626,437.39890198442,464.6525521713,489.02683710225,523.2511306012],description:"Emile Jobin, WTC temperament after Bach's signet"},"johnson-secor_rwt":{frequencies:[261.6255653006,276.16031892841,293.03678286293,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.52992584916,414.24047839262,438.40450629885,465.11211608996,490.95167809495,523.2511306012],description:"Johnson/Secor proportional-beating well-temperament with five 24/19s."},johnson_44:{frequencies:[261.6255653006,265.7783520514,269.99705605222,274.2827236086,278.63641763414,283.05921791404,287.55222124002,292.11654190835,296.75331210627,301.46368356757,306.24882108355,311.17820103386,316.11753722951,321.13527558179,326.23266245367,331.4109583385,336.67144939063,342.01544029518,347.44425644654,352.9592442771,358.56177366235,364.2532300084,370.03502692537,375.90859839047,381.87540114246,387.93691728375,394.09464571975,400.35011587045,406.70487919155,413.16051176499,419.71861468993,426.38081694263,433.14876596753,440.02414274758,447.00865248514,454.10402744924,461.31203006992,468.63444275836,476.07308421189,483.62979961065,491.30646309654,499.10497838378,507.02727962797,515.07533168556,523.2511306012],description:"Aaron Johnson, 44-tET approximation"},johnson_7:{frequencies:[261.6255653006,288.83389952765,318.87182567809,352.10227751942,388.71994014354,429.2294430713,473.86811641255,523.2511306012],description:"Aaron Johnson, 7-tET approximation"},johnson_eb:{frequencies:[261.6255653006,273.1678696521,292.40504357126,312.71949922989,327.03195662575,349.65487315468,365.50630446407,390.89937403737,408.78994578219,437.06859144336,467.84806971401,488.62421754671,523.2511306012],description:'Aaron Johnson, "1/4-comma tempered" equal beating C-G-D-A-E plus just thirds'},johnson_ratwell:{frequencies:[261.6255653006,276.16031892841,292.90688289089,310.07474405997,327.94037872749,348.83408706747,368.21375857121,391.49724879514,414.24047839262,438.30776524386,465.11211608996,490.95167809495,523.2511306012],description:"Aaron Johnson, rational well-temperament with five 24/19's"},johnson_temp:{frequencies:[261.6255653006,275.52965735686,292.50638298357,309.88336774144,327.03195662575,348.76230617841,367.55223824197,391.22154286826,413.09299784305,437.39914452994,464.92072007996,490.30891677011,523.2511306012],description:"Aaron Johnson, temperament with just 5/4, 24/19 and 19/15"},johnston:{frequencies:[261.6255653006,275.93321340298,294.32876096318,315.35224388912,327.03195662575,359.73515228832,367.91095120397,392.4383479509,401.35740131342,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Ben Johnston's combined otonal-utonal scale"},johnston_21:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"Johnston 21-note just enharmonic scale"},johnston_22:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,353.19451315581,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Johnston 22-note scale from end of string quartet nr. 4"},johnston_25:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Johnston 25-note just enharmonic scale"},"johnston_6-qt":{frequencies:[261.6255653006,262.79353657426,266.47048317654,267.57160087561,271.31540105247,272.52663052146,277.4816601673,280.31310567921,284.23518205497,290.69507255622,294.32876096318,297.30177875068,299.7792935736,300.33547037059,305.22982618403,306.59245933664,310.07474405997,311.45900631024,316.53463456122,317.12189733406,319.76457981184,322.99452506247,327.03195662575,334.46450109452,339.14425131559,342.60490694126,348.83408706747,350.39138209902,355.29397756872,356.76213450082,361.75386806997,363.36884069528,367.91095120397,373.75080757229,381.53728273004,382.24514410802,387.59343007496,390.82337532559,392.4383479509,396.40237166758,399.70572476481,406.97310157871,408.78994578219,413.43299207996,420.46965851882,426.35277308246,436.04260883433,445.95266812602,452.19233508746,459.88868900496,465.11211608996,467.18850946536,475.68284600109,479.64686971777,484.4917875937,486.49381977384,490.54793493862,248.7057842981,498.33441009638,508.71637697339,516.79124009995,523.2511306012],description:"11-limit complete system from Ben Johnston's _6th Quartet_"},"johnston_6-qt_row":{frequencies:[261.6255653006,272.52663052146,290.69507255622,306.59245933664,327.03195662575,350.39138209902,363.36884069528,399.70572476481,408.78994578219,436.04260883433,445.95266812602,490.54793493862,508.71637697339],description:`11-limit 'prime row' from Ben Johnston's "6th Quartet"`},johnston_81:{frequencies:[116.54094037952,117.99770213426,119.33792294863,119.89808681021,120.82964698549,121.39681289533,122.77564089365,122.91427305652,124.31033640482,124.45070146973,125.86421560988,127.43751830501,127.89129259755,128.03570110055,129.48993375502,131.10855792696,132.74741490105,134.25516331721,134.88534766148,135.93335285867,136.57141450725,138.12259600536,138.27855718859,139.84912845542,141.59724256112,142.26189011172,143.87770417225,145.6761754744,147.49712766783,149.17240368579,151.03705873186,151.74601611917,153.46955111706,155.38792050603,157.33026951235,159.11723059817,159.29689788126,161.10619598065,161.86241719378,163.70085452487,163.8856974087,165.74711520643,165.93426862631,167.81895414651,169.91669107334,170.71426813406,172.6532450067,174.81141056928,176.9965532014,179.00688442294,179.84713021531,181.24447047823,182.095219343,184.16346134048,184.37140958479,186.46550460723,188.79632341482,189.68252014896,191.15627745751,191.83693889633,194.23490063253,196.66283689044,198.89653824771,199.12112235157,199.83014468368,201.38274497581,202.32802149222,204.62606815608,204.85712176088,207.18389400804,207.41783578289,209.77369268314,212.39586384168,213.39283516758,215.81655625837,218.5142632116,221.24569150175,223.75860552868,226.55558809779,227.61902417875,230.2043266756,233.08188075904],description:"Johnston 81-note 5-limit scale of Sonata for Microtonal Piano"},jorgensen:{frequencies:[261.6255653006,269.51415085551,288.85811466493,309.59046173614,318.92511007349,352.12195684808,355.62605411908,388.77403176757,408.50706336067,429.24143792307,469.25139168707,473.92081401802,523.2511306012],description:"Jorgensen's 5&7 temperament"},jousse:{frequencies:[261.6255653006,276.90198715646,293.15566421679,311.51473523959,328.62702621286,349.28097970329,369.20264759391,391.76800554826,415.35298052707,439.0631553946,466.60176257857,492.27019703794,523.2511306012],description:"Temperament of Jean Jousse (1832)"},jousse2:{frequencies:[261.6255653006,277.21176919085,293.63180098233,311.16627887077,329.63881547742,349.36510452864,370.14670828388,392.04008509316,415.41939014292,440.0494382652,466.3511549761,494.0599599767,523.2511306012],description:"Jean Jousse's quasi-equal temperament"},quasi_5:{frequencies:[261.6255653006,302.26980244078,349.22823143301,391.99543598175,452.89298412314,523.2511306012],description:"Quasi-Equal 5-Tone in 24-tET, 5 5 4 5 5 steps"},quasi_9:{frequencies:[261.6255653006,281.2143451833,302.26980244078,324.90175210669,349.22823143301,391.99543598175,421.34544350737,452.89298412314,486.80259447109,523.2511306012],description:'Quasi-Equal Enneatonic, Each "tetrachord" has 125 + 125 + 125 + 125 cents'},quint_chrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,348.83408706747,392.4383479509,415.52295665389,441.49314144476,523.2511306012],description:"Aristides Quintilianus' Chromatic genus"},oconnell:{frequencies:[261.6255653006,267.57429119961,272.27874977392,278.46970304972,283.3657217904,288.34782337261,294.90414810658,300.08911516052,305.36524364276,312.30850472426,317.79947295261,323.38698268281,330.74001416845,336.55504284097,344.20748191927,350.25929591231,356.41751010259,364.52157313929,370.93054700815,377.45220049416,386.03454097812,392.82175095637,399.72829510222,408.81713953112,416.00491024634,423.31905787312],description:"Walter O'Connell, Pythagorean scale of 25 octaves reduced by Phi. XH 15 (1993)"},oconnell_11:{frequencies:[261.6255653006,272.27874977392,288.34782337261,300.08911516052,312.30850472426,323.38698268281,344.20748191927,356.41751010259,370.93054700815,386.03454097812,408.81713953112,423.31905787312],description:"Walter O'Connell, 11-note mode of 25-tone scale"},oconnell_14:{frequencies:[261.6255653006,272.27874977392,283.3657217904,288.34782337261,300.08911516052,312.30850472426,323.38698268281,336.55504284097,344.20748191927,356.41751010259,370.93054700815,386.03454097812,399.72829510222,408.81713953112,423.31905787312],description:"Walter O'Connell, 14-note mode of 25-tone scale"},oconnell_7:{frequencies:[261.6255653006,283.3657217904,300.08911516052,323.38698268281,344.20748191927,370.93054700815,392.82175095637,423.31905787312],description:"Walter O'Connell, 7-note mode of 25-tone scale"},oconnell_9:{frequencies:[261.6255653006,278.46970304972,294.90414810658,305.36524364276,323.38698268281,344.20748191927,364.52157313929,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 9-tone mode of 25-tone scale"},oconnell_9a:{frequencies:[261.6255653006,272.27874977392,288.34782337261,305.36524364276,323.38698268281,344.20748191927,356.41751010259,377.45220049416,399.72829510222,423.31905787312],description:"Walter O'Connell, 7+2 major mode analogy for 25-tone scale"},octony_min:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Octony on Harmonic Minor, from Palmer on an album of Turkish music"},octony_rot:{frequencies:[261.6255653006,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Rotated Octony on Harmonic Minor"},octony_trans:{frequencies:[261.6255653006,271.31540105247,279.06726965397,327.03195662575,348.83408706747,408.78994578219,420.46965851882,436.04260883433,523.2511306012],description:"Complex 10 of p. 115, an Octony based on Archytas's Enharmonic,"},octony_trans2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,315.35224388912,324.36230800023,336.37572681506,348.83408706747,504.56359022259,523.2511306012],description:"Complex 6 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,306.59245933664,315.35224388912,327.03195662575,348.83408706747,490.54793493862,523.2511306012],description:"Complex 5 of p. 115 based on Archytas's Enharmonic, an Octony"},octony_trans4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,420.46965851882,432.48307733364,448.50096908674,523.2511306012],description:"Complex 11 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans5:{frequencies:[261.6255653006,271.31540105247,279.06726965397,317.94773560837,327.03195662575,339.14425131559,348.83408706747,508.71637697339,523.2511306012],description:"Complex 15 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_trans6:{frequencies:[261.6255653006,269.10058145205,271.31540105247,279.06726965397,336.37572681506,345.98646186692,348.83408706747,358.80077526939,523.2511306012],description:"Complex 14 of p. 115, an Octony based on Archytas's Enharmonic, 8 tones"},octony_u:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,356.76213450082,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"7)8 octony from 1.3.5.7.9.11.13.15, 1.3.5.7.9.11.13 tonic (subharmonics 8-16)"},odd1:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"ODD-1"},odd2:{frequencies:[261.6255653006,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"ODD-2"},oettingen:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,301.39265122629,306.59245933664,310.42486507835,313.95067836072,317.87506184023,323.35923445661,327.03195662575,331.11985608357,334.88072358477,339.06673262958,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.50983809402,376.74081403286,383.2405741708,388.03108134794,392.4383479509,397.34382730029,401.85686830172,408.78994578219,413.89982010446,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,452.08897683944,459.88868900496,465.11211608996,470.92601754108,476.81259276034,485.03885168492,490.54793493862,496.67978412536,502.32108537715,510.98743222773,517.37477513058,523.2511306012],description:"von Oettingen's Orthotonophonium tuning"},oettingen2:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,317.51653791741,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,423.83341578697,431.14564594215,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"von Oettingen's Orthotonophonium tuning with central 1/1"},ogr10:{frequencies:[261.6255653006,264.15640940857,271.89678302796,296.5055443788,342.56848033562,359.46139971304,411.32572372413,440,484.46499093218,513.27277840175,523.2511306012],description:"Optimal Golomb Ruler of 10 segments, length 72"},ogr10a:{frequencies:[261.6255653006,264.15640940857,285.30470202322,314.13668154225,329.62755691287,352.60650301302,431.60923940535,448.5538823653,457.27406033445,508.3551866238,523.2511306012],description:"2nd Optimal Golomb Ruler of 10 segments, length 72"},ogr11:{frequencies:[261.6255653006,265.92749183559,274.74472021414,318.1829357186,331.4244391468,362.52783176564,371.50609336774,409.69842558521,455.51656649021,482.27514684959,486.22402266421,523.2511306012],description:"Optimal Golomb Ruler of 11 segments, length 85"},ogr12:{frequencies:[261.6255653006,265.06964174786,270.3209511875,308.09015504092,333.2396629384,346.57411320722,384.79959982017,413.49815209867,456.11269186454,468.20039948765,496.58195036371,499.83980314828,523.2511306012],description:"Optimal Golomb Ruler of 12 segments, length 106"},ogr2:{frequencies:[261.6255653006,329.62755691287,523.2511306012],description:"Optimal Golomb Ruler of 2 segments, length 3"},ogr3:{frequencies:[261.6255653006,293.66476791741,415.30469757995,523.2511306012],description:"Optimal Golomb Ruler of 3 segments, length 6"},ogr4:{frequencies:[261.6255653006,278.64197723942,336.62443200122,461.29362042034,523.2511306012],description:"Optimal Golomb Ruler of 4 segments, length 11"},ogr4a:{frequencies:[261.6255653006,296.76515515861,406.67242132093,433.12283887627,523.2511306012],description:"2nd Optimal Golomb Ruler of 4 segments, length 11"},ogr5:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,426.7484383229,523.2511306012],description:"Optimal Golomb Ruler of 5 segments, length 17"},ogr5a:{frequencies:[261.6255653006,272.51337835337,307.97166902637,393.32961502355,482.27514684959,523.2511306012],description:"2nd Optimal Golomb Ruler of 5 segments, length 17"},ogr5b:{frequencies:[261.6255653006,272.51337835337,362.52783176564,426.7484383229,463.0066556268,523.2511306012],description:"3rd Optimal Golomb Ruler of 5 segments, length 17"},ogr5c:{frequencies:[261.6255653006,272.51337835337,362.52783176564,409.69842558521,444.50800708553,523.2511306012],description:"4th Optimal Golomb Ruler of 5 segments, length 17"},ogr6:{frequencies:[261.6255653006,268.98086109226,292.31087910123,345.21700307457,430.94493093825,495.02573326308,523.2511306012],description:"Optimal Golomb Ruler of 6 segments, length 25"},ogr6a:{frequencies:[261.6255653006,276.5429423948,284.31762274025,345.21700307457,407.69874723177,468.32288027948,523.2511306012],description:"2nd Optimal Golomb Ruler of 6 segments, length 25"},ogr6b:{frequencies:[261.6255653006,268.98086109226,354.92237405774,407.69874723177,443.06044202496,495.02573326308,523.2511306012],description:"3rd Optimal Golomb Ruler of 6 segments, length 25"},ogr6c:{frequencies:[261.6255653006,268.98086109226,317.66442301495,354.92237405774,455.51656649021,495.02573326308,523.2511306012],description:"4th Optimal Golomb Ruler of 6 segments, length 25"},ogr6d:{frequencies:[261.6255653006,276.5429423948,317.66442301495,375.1593523779,468.32288027948,481.48922855473,523.2511306012],description:"5th Optimal Golomb Ruler of 6 segments, length 25"},ogr7:{frequencies:[261.6255653006,267.01398215014,283.85429714132,314.3146261019,355.21191871351,409.69842558521,502.34551296122,523.2511306012],description:"Optimal Golomb Ruler of 7 segments, length 34"},ogr8:{frequencies:[261.6255653006,265.77967818767,283.06627815664,316.06708432391,387.90015179087,400.3161696196,454.08364189083,499.09751029017,523.2511306012],description:"Optimal Golomb Ruler of 8 segments, length 44"},ogr9:{frequencies:[261.6255653006,264.94361147373,282.17583275232,296.76515515861,349.59519124833,363.06573983159,401.57942110183,438.61588607285,510.2272282764,523.2511306012],description:"Optimal Golomb Ruler of 9 segments, length 55"},oldani:{frequencies:[261.6255653006,272.52663052146,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"This scale by Norbert L. Oldani appeared in Interval 5(3), p.10-11"},oljare:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Tampere" (2001)'},oljare17:{frequencies:[261.6255653006,272.51337835337,320.78822215662,334.13814720468,393.32961502355,409.69842558521,426.7484383229,502.34551296122,523.2511306012],description:'Mats \xEF\xBF\xBDljare, scale for "Fafner" (2001), MOS in 17-tET'},olympos:{frequencies:[261.6255653006,279.06726965397,348.83408706747,372.08969287196,465.11211608996,523.2511306012],description:"Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch"},opelt:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friederich Wilhelm Opelt 19-tone"},organ1373a:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 ficta semitones (Eb-G#)"},organ1373b:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"English organ tuning (1373) with 18:17:16 accidental semitones (Eb-G#)"},ragib:{frequencies:[261.6255653006,269.99542342683,281.01564479119,288.12007609225,294.32876096318,303.49446183192,311.45900631024,323.77767743764,335.77702597132,341.99420300732,348.83408706747,360.36579242507,371.06455309218,381.37837507376,392.4383479509,407.46331920162,417.22825371678,432.79663407874,450.28451247858,458.15534711532,465.11211608996,476.50902003141,487.19844562495,503.12608711654,523.2511306012],description:"Idris Ragib Bey, vol.5 d'Erlanger, p 40. Idris Rag'ib Bey"},ragib7:{frequencies:[261.6255653006,270.30192333353,281.29980781121,288.32205155576,294.32876096318,303.74668805875,311.45900631024,324.36230800023,336.37572681506,341.71502406609,348.83408706747,360.4025644447,370.6997805717,381.53728273004,392.4383479509,406.97310157871,417.13259773693,432.48307733364,450.69091522486,457.84473927605,465.11211608996,476.92160341255,486.65469735975,502.32108537715,523.2511306012],description:"7-limit version of Idris Rag'ib Bey scale"},"rameau-flat":{frequencies:[261.6255653006,276.01120901503,292.50629850443,312.00666699279,327.03195662575,349.91920725962,366.20974703841,391.22137338448,415.30469757995,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:'Rameau bemols, see Pierre-Yves Asselin in "Musique et temperament"'},"rameau-gall":{frequencies:[261.6255653006,274.65078342868,292.50627485027,310.49874388777,327.03195662575,349.91912034749,366.20104475463,391.22147055517,412.61639318626,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Rameau's temperament, after Gallimard (1st solution)"},"rameau-merc":{frequencies:[261.6255653006,273.37431312998,292.50627485027,308.72950296259,327.03195662575,348.83408706747,365.63284274659,391.22147055517,409.55238583376,437.39890198442,464.53468854848,489.02683710225,523.2511306012],description:"Rameau's temperament, after Mercadier"},"rameau-minor":{frequencies:[261.6255653006,294.32876096318,313.95067836072,353.19451315581,392.4383479509,418.60090448096,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"Rameau's systeme diatonique mineur on E. Asc. 4-6-8-9, desc. 9-7-5-4"},"rameau-nouv":{frequencies:[261.6255653006,275.98004852257,292.50627485027,311.49614460359,327.03195662575,349.91912034749,367.37127028704,391.22147055517,414.64857675456,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"Temperament by Rameau in Nouveau Systeme (1726)"},"rameau-sharp":{frequencies:[261.6255653006,273.37431312998,292.50629850443,308.54983514133,327.03195662575,348.83408706747,365.63293356166,391.22137338448,409.42528169498,437.39882871549,464.33633889105,489.02679755603,523.2511306012],description:'Rameau dieses, see Pierre-Yves Asselin in "Musique et temperament"'},rameau:{frequencies:[261.6255653006,275.07757335026,292.50629850443,310.73186404381,327.03195662575,349.91920725962,366.77009798369,391.22137338448,412.61635981914,437.39882871549,468.01000025525,489.02679755603,523.2511306012],description:"Rameau's modified meantone temperament (1725)"},ramis:{frequencies:[261.6255653006,275.93321340298,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monochord of Ramos de Pareja (Ramis de Pareia), Musica practica (1482). Carlos: Switched on Bach"},rapoport_8:{frequencies:[261.6255653006,297.86386736488,316.53463456122,336.37572681506,382.96782946913,406.97310157871,432.48307733364,492.38720931745,523.2511306012],description:"Paul Rapoport, cycle of 14/9 close to 8 out of 11-tET, XH 13, 1991"},rast_moha:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,479.82340237272,523.2511306012],description:"Rast + Mohajira (Dudon) 4 + 3 + 3 Rast and 3 + 4 + 3 Mohajira tetrachords"},rat_dorenh:{frequencies:[261.6255653006,267.70988077271,274.08392555301,359.73515228832,411.12588832951,418.60090448096,426.35277308246,523.2511306012],description:"Rationalized Schlesinger's Dorian Harmonia in the enharmonic genus"},rat_hypodenh:{frequencies:[261.6255653006,270.06509966514,279.06726965397,348.83408706747,380.54627680087,389.39619021485,398.6675280771,523.2511306012],description:"1+1 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh2:{frequencies:[261.6255653006,270.06509966514,288.69027895239,348.83408706747,380.54627680087,389.39619021485,408.39112632289,523.2511306012],description:"1+2 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodenh3:{frequencies:[261.6255653006,270.06509966514,299.00064605783,348.83408706747,380.54627680087,389.39619021485,418.60090448096,523.2511306012],description:"1+3 rationalized enharmonic genus derived from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,380.54627680087,386.4008349055,392.4383479509,523.2511306012],description:"1+1 rationalized hexachromatic/hexenharmonic genus derived from K.S.'Bastard'"},rat_hypodhex2:{frequencies:[261.6255653006,267.19206668997,279.06726965397,348.83408706747,380.54627680087,386.4008349055,398.6675280771,523.2511306012],description:"1+2 rat. hexachromatic/hexenharmonic genus derived from K.S.'s 'Bastard' Hypodo"},rat_hypodhex3:{frequencies:[261.6255653006,267.19206668997,285.40970760065,348.83408706747,380.54627680087,386.4008349055,405.0976494977,523.2511306012],description:"1+3 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex4:{frequencies:[261.6255653006,267.19206668997,292.04714266113,348.83408706747,380.54627680087,386.4008349055,411.73859457144,523.2511306012],description:"1+4 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex5:{frequencies:[261.6255653006,267.19206668997,299.00064605783,348.83408706747,380.54627680087,386.4008349055,418.60090448096,523.2511306012],description:"1+5 rat. hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' Hypodorian"},rat_hypodhex6:{frequencies:[261.6255653006,273.00058987889,292.04714266113,348.83408706747,380.54627680087,392.4383479509,411.73859457144,523.2511306012],description:"2+3 rationalized hexachromatic/hexenharmonic genus from K.S.'s 'Bastard' hypod"},rat_hypodpen:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,380.54627680087,387.59343007496,394.90651366128,523.2511306012],description:"1+1 rationalized pentachromatic/pentenharmonic genus derived from K.S.'s 'Bastar"},rat_hypodpen2:{frequencies:[261.6255653006,268.33391312882,282.83844897362,348.83408706747,380.54627680087,387.59343007496,402.50086969323,523.2511306012],description:"1+2 rationalized pentachromatic/pentenharmonic genus from K.S.'s 'Bastard' hyp"},rat_hypodpen3:{frequencies:[261.6255653006,268.33391312882,290.69507255622,348.83408706747,380.54627680087,387.59343007496,410.39304360878,523.2511306012],description:"1+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen4:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,387.59343007496,418.60090448096,523.2511306012],description:"1+4 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen5:{frequencies:[261.6255653006,275.39533189537,290.69507255622,348.83408706747,380.54627680087,394.90651366128,410.39304360878,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodpen6:{frequencies:[261.6255653006,268.33391312882,299.00064605783,348.83408706747,380.54627680087,394.90651366128,418.60090448096,523.2511306012],description:"2+3 rationalized pentachromatic/pentenharmonic genus from 'Bastard' Hypodorian"},rat_hypodtri:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,380.54627680087,392.4383479509,405.0976494977,523.2511306012],description:"rationalized first (1+1) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypodtri2:{frequencies:[261.6255653006,273.00058987889,299.00064605783,348.83408706747,380.54627680087,392.4383479509,418.60090448096,523.2511306012],description:"rationalized second (1+2) trichromatic genus derived from K.S.'s 'Bastard' hyp"},rat_hypolenh:{frequencies:[261.6255653006,268.33391312882,275.39533189537,348.83408706747,373.75080757229,402.50086969323,410.39304360878,418.60090448096,523.2511306012],description:"Rationalized Schlesinger's Hypolydian Harmonia in the enharmonic genus"},rat_hypopchrom:{frequencies:[261.6255653006,277.01530443593,294.32876096318,362.25078272391,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the chromatic genus"},rat_hypopenh:{frequencies:[261.6255653006,269.10058145205,277.01530443593,362.25078272391,392.4383479509,400.78810003496,409.50088481833,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the enharmonic genus"},rat_hypoppen:{frequencies:[261.6255653006,273.79419624481,294.32876096318,362.25078272391,392.4383479509,405.97070477679,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in the pentachromatic genus"},rat_hypoptri:{frequencies:[261.6255653006,271.68808704293,282.55561052465,362.25078272391,392.4383479509,403.65087217807,415.52295665389,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in first trichromatic genus"},rat_hypoptri2:{frequencies:[261.6255653006,271.68808704293,294.32876096318,362.25078272391,392.4383479509,403.65087217807,428.11456140098,523.2511306012],description:"Rationalized Schlesinger's Hypophrygian Harmonia in second trichromatic genus"},rectsp10:{frequencies:[261.6255653006,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,340.11323489078,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10"},rectsp10a:{frequencies:[261.6255653006,275.39533189537,277.01530443593,279.06726965397,281.75060878526,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.79478270659,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,523.2511306012],description:"Rectangle minimal beats spectrum of order 10 union with inversion"},rectsp11:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,523.2511306012],description:"Rectangle minimal beats spectrum of order 11"},rectsp12:{frequencies:[261.6255653006,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,356.76213450082,359.73515228832,366.27579142084,370.63621750918,373.75080757229,377.90359432309,380.54627680087,392.4383479509,404.33041910093,406.97310157871,411.12588832951,414.24047839262,418.60090448096,425.14154361347,428.11456140098,436.04260883433,444.76346101102,448.50096908674,451.89870370104,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,485.87604984397,490.54793493862,494.18162334558,497.08857407114,499.46698830115,501.44900015948,523.2511306012],description:"Rectangle minimal beats spectrum of order 12"},rectsp6:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 (=songlines)"},rectsp6a:{frequencies:[261.6255653006,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Rectangle minimal beats spectrum of order 6 union with inversion"},rectsp7:{frequencies:[261.6255653006,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7"},rectsp7a:{frequencies:[261.6255653006,281.75060878526,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,411.12588832951,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012],description:"Rectangle minimal beats spectrum of order 7 union with inversion"},rectsp8:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8"},rectsp8a:{frequencies:[261.6255653006,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Rectangle minimal beats spectrum of order 8 union with inversion"},rectsp9:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,377.90359432309,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9"},rectsp9a:{frequencies:[261.6255653006,277.01530443593,279.06726965397,281.75060878526,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,490.54793493862,494.18162334558,523.2511306012],description:"Rectangle minimal beats spectrum of order 9 union with inversion"},redfield:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Redfield New Diatonic"},reinhard:{frequencies:[261.6255653006,277.01530443593,294.32876096318,309.81974838229,327.03195662575,348.83408706747,369.35373924791,392.4383479509,413.09299784305,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Reinhard 19-limit superparticular"},reinhard17:{frequencies:[261.6255653006,277.01530443593,277.97716313189,286.94416839421,292.40504357126,296.50897400735,307.79478270659,317.68818643644,338.57426097725,342.12573923925,369.35373924791,400.13321751856,404.33041910093,430.91269578922,444.76346101102,477.08191319521,492.47165233054,523.2511306012],description:`Reinhard's Harmonic-17 tuning for "Tresspass", 1998`},renteng1:{frequencies:[261.6255653006,285.40970760065,313.15788183285,391.64553850062,426.52890806662,523.2511306012],description:"Gamelan Renteng from Chileunyi (Tg. Sari). 1/1=330 Hz"},renteng2:{frequencies:[261.6255653006,294.32876096318,311.77048523333,396.07199334683,425.86840190162,523.2511306012],description:"Gamelan Renteng from Chikebo (Tg. Sari). 1/1=360 Hz"},renteng3:{frequencies:[261.6255653006,278.97471276149,312.97903559457,379.60005211265,409.44065404912,468.42785143649,523.2511306012],description:"Gamelan Renteng from Lebakwangi (Pameungpeuk). 1/1=377 Hz"},renteng4:{frequencies:[261.6255653006,296.45730715573,311.93819010347,397.0826586675,424.17395032031,523.2511306012],description:"Gamelan Renteng Bale` bandung from Kanoman (Cheribon). 1/1=338 Hz"},robot:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Dead Robot (see lattice)"},robot_live:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,376.74081403286,392.4383479509,418.60090448096,446.50763144636,490.54793493862,502.32108537715,523.2511306012],description:"Live Robot"},romieu:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu's Monochord, Memoire theorique & pratique (1758)"},romieu_inv:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Romieu inverted, Pure (just) C minor in Wilkinson: Tuning In"},rosati_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Dante Rosati, JI guitar tuning"},rosati_21a:{frequencies:[261.6255653006,280.31310567921,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,488.36772189445,523.2511306012],description:"Alternative version of rosati_21 with more tetrads"},rousseau:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Rousseau's Monochord, Dictionnaire de musique (1768)"},rousseauw:{frequencies:[261.6255653006,276.81658657456,293.31219032635,311.14941643136,328.83652403056,349.33732971591,369.19521129916,391.76004912942,415.1051791302,439.20783490896,466.32059269121,492.40223109551,523.2511306012],description:"Jean-Jacques Rousseau's temperament (1768)"},rsr_12:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"RSR - 7 limit JI"},"rvf-1":{frequencies:[261.6255653006,272.14556467328,280.20095193414,292.09989854643,304.19649364034,313.29104303136,326.0297292803,340.21856244106,350.08660369014,364.11104988921,374.67209286633,390.97784457618,406.87534373272,419.03967825638,436.39317047385,454.92493848389,468.39051363853,487.22455955444,508.94280091833,523.2511306012],description:"D-A 695 cents, the increment is 0.25 cents, interval range 49.5 to 75.5"},"rvf-2":{frequencies:[261.6255653006,272.87751533003,278.75612859219,292.27711197479,305.71136588092,312.51386339015,326.29348693151,342.97106251658,349.87433921674,364.79522794952,372.13777859784,391.13596290168,408.38225803817,417.4934384938,436.65792486176,457.83788806384,467.7011114131,487.81592522452,513.9947144098,523.2511306012],description:"695 cents, 0.607 cents, 31-90 cents, C-A# is 7/4."},"rvf-3":{frequencies:[261.6255653006,272.98787180262,278.19314238431,292.29399505039,306.11778315204,312.24320803046,326.25579420701,343.90343447252,349.81371586656,364.81629995674,371.08598724028,391.15855645336,408.71263878415,416.89098941754,436.60748307387,458.73792719255,467.48503753613,487.78774868553,515.83876338215,523.2511306012],description:"694.737, 0.082, 25-97, the fifth E#-B# is 3/2."},majmin:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Malcolm & Marpurg 4 (Yamaha major & minor) mixed. Mersenne/Ban without D#"},major_clus:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Chalmers' Major Mode Cluster"},major_wing:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Chalmers' Major Wing with 7 major and 6 minor triads"},malcolm:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Malcolm's Monochord (1721), and C major in Yamaha synths, Wilkinson: Tuning In"},malcolm2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,463.29527188648,490.54793493862,523.2511306012],description:"Malcolm 2"},malcolm_ap:{frequencies:[261.6255653006,279.47938236087,293.66476791741,313.97746652079,326.1838132033,349.22823143301,369.99442271164,391.99543598175,419.68935090103,436.0054062308,466.16376151809,489.82458627646,523.2511306012],description:"Best approximations in mix of all ETs from 12-23 to Malcolm's Monochord"},malcolm_me:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,457.84473927605,490.54793493862,523.2511306012],description:"Malcolm's Mid-East"},malcolme:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,496.11959049595,523.2511306012],description:"Most equal interval permutation of Malcolm's Monochord"},malcolme2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Inverse most equal interval permutation of Malcolm's Monochord"},malcolms:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,369.99442271164,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Symmetrical version of Malcolm's Monochord and Albion scale"},malerbi:{frequencies:[261.6255653006,275.62199471997,292.73769384471,310.07474405997,327.54963108844,348.83408706747,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Luigi Malerbi's well-temperament nr.1 (1794) (nr.2 = Young)"},malgache:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,459.88868900496,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache1:{frequencies:[261.6255653006,279.06726965397,294.32876096318,310.07474405997,327.03195662575,353.19451315581,376.74081403286,392.4383479509,418.60090448096,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malgache2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,353.19451315581,367.91095120397,392.4383479509,408.78994578219,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"tuning from Madagascar"},malkauns:{frequencies:[261.6255653006,313.95067836072,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"Raga Malkauns, inverse of prime_5"},mambuti:{frequencies:[261.6255653006,294.34406205295,331.72862856444,394.26624244126,466.16376151809,525.06772693396,590.39077962608,792.18471060794,999.82182774046],description:"African Mambuti Flutes (aerophone; vertical wooden; one note each)"},mandelbaum5:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,454.2110508691,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"Mandelbaum's 5-limit 19-tone scale, kleismic detempered circle of minor thirds"},mandelbaum7:{frequencies:[261.6255653006,272.52663052146,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,504.56359022259,523.2511306012],description:"Mandelbaum's 7-limit 19-tone scale"},marimba1:{frequencies:[261.6255653006,284.4818984792,319.50463429683,342.83241505062,371.92288545737,411.72190027758,457.09800545097,500.48847822777,547.68138927822,612.97866327818,651.68292300609,728.11694797601,807.8963375694,903.69557412727,1013.19282257599,1069.7265813247,1225.95732655636,1303.36584601218],description:"Marimba of the Bakwese, SW Belgian Congo (Zaire). 1/1=140.5 Hz"},marimba2:{frequencies:[261.6255653006,279.11058864149,318.03161540472,343.03050002254,379.95718438213,421.58889248327,458.6849347701,519.33670373121,571.2689787911,613.68721319418,694.83488613378,761.23234162637,846.59395682498,953.56868388592,1049.52904699774,1145.8425062572,1271.3918647407,1389.66977226756],description:"Marimba of the Bakubu, S. Belgian Congo (Zaire). 1/1=141.5 Hz"},marimba3:{frequencies:[261.6255653006,296.73398952435,348.2210758395,420.13030572059,476.50902003141,518.73708886244,603.49292471609,696.44215167899,840.26061144117,953.01804006282,1037.47417772488],description:"Marimba from the Yakoma tribe, Zaire. 1/1=185.5 Hz"},marion:{frequencies:[261.6255653006,269.91407136119,278.46532473603,287.28749371714,296.38899008685,305.77900572762,315.46632790985,325.46074015958,335.7715953476,346.4093067252,357.3838291689,368.70624618807,380.38737313392,392.4383479509,411.71310103548,431.93429139282,453.14890242083,475.40520223986,498.75490298644,523.2511306012],description:"scale with two different ET step sizes"},marion1:{frequencies:[261.6255653006,262.79353657426,272.52663052146,280.31310567921,286.15296204753,294.32876096318,305.22982618403,311.45900631024,327.03195662575,336.37572681506,343.38355445704,350.39138209902,367.91095120397,373.75080757229,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,476.92160341255,490.54793493862,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 1"},marion10:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,290.69507255622,296.75121990114,305.22982618403,317.94773560837,327.03195662575,339.14425131559,356.10146388137,363.36884069528,370.93902487643,381.53728273004,400.61414686654,406.97310157871,408.78994578219,423.93031414449,436.04260883433,445.12682985172,457.84473927605,474.80195184183,476.92160341255,484.4917875937,508.71637697339,523.2511306012],description:"Marion's 7-limit Scale # 10"},marion15:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,299.00064605783,313.95067836072,320.35783506196,327.03195662575,336.37572681506,353.19451315581,358.80077526939,360.4025644447,373.75080757229,384.42940207435,392.4383479509,403.65087217807,418.60090448096,420.46965851882,427.14378008261,448.50096908674,461.31528248922,470.92601754108,480.53675259294,504.56359022259,523.2511306012],description:"Marion's 7-limit Scale # 15"},marion19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,309.04519901133,313.95067836072,315.35224388912,327.03195662575,336.37572681506,343.38355445704,353.19451315581,366.27579142084,367.91095120397,373.75080757229,392.4383479509,403.65087217807,412.06026534844,420.46965851882,441.49314144476,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Marion's 7-limit Scale # 19"},marion26:{frequencies:[261.6255653006,271.31540105247,279.06726965397,284.8811711051,293.02063313667,303.87324917877,305.22982618403,310.07474405997,325.57848126297,334.88072358477,341.85740532612,348.83408706747,366.27579142084,379.84156147346,390.69417751556,406.97310157871,418.60090448096,427.32175665765,434.10464168396,455.80987376816,465.11211608996,474.80195184183,488.36772189445,512.78610798918,523.2511306012],description:"Marion's 7-limit Scale # 26"},marissing:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Peter van Marissing, just scale, Mens en Melodie, 1979"},"marpurg-1":{frequencies:[261.6255653006,276.86979852503,294.32876096318,311.47852302926,329.62755691287,348.83408706747,370.83100115625,392.4383479509,415.30469757995,439.50340943686,467.21778431035,494.44133512215,523.2511306012],description:"Other temperament by Marpurg, 3 fifths 1/3 Pyth. comma flat"},"marpurg-t1":{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg's temperament nr.1, Kirnbergersche Temperatur (1766)"},"marpurg-t11":{frequencies:[261.6255653006,278.12325072816,294.32876096318,311.47852302926,331.11985608357,348.83408706747,371.66947115233,392.4383479509,416.24372513446,441.49314144476,466.16376151809,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.11, 6 tempered fifths"},"marpurg-t12":{frequencies:[261.6255653006,279.06706247425,294.66131982972,310.42509491746,330.74614861362,349.22823143301,372.08941681833,392.88175996935,418.60059350213,441.99197952365,465.63764214343,496.11922267243,523.2511306012],description:"Marpurg's temperament nr.12, 4 tempered fifths"},"marpurg-t2":{frequencies:[261.6255653006,278.75210322491,294.32876096318,313.59611581451,331.11985608357,348.83408706747,371.66947115233,392.4383479509,418.12815462835,441.49314144476,470.39417348663,495.55929511749,523.2511306012],description:"Marpurg's temperament nr.2, 2 tempered fifths, Neue Methode (1790)"},"marpurg-t3":{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,331.11985608357,348.83408706747,368.74309237173,392.4383479509,414.83597850347,441.49314144476,465.11211608996,491.65745674141,523.2511306012],description:"Marpurg's temperament nr.3, 2 tempered fifths"},"marpurg-t4":{frequencies:[261.6255653006,276.86979852503,294.32876096318,310.07474405997,331.11985608357,348.83408706747,369.15973155124,392.4383479509,415.30469757995,441.49314144476,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.4, 2 tempered fifths"},"marpurg-t5":{frequencies:[261.6255653006,277.80935667884,294.32876096318,312.53552595124,331.11985608357,348.83408706747,370.41247575694,392.4383479509,416.71403480995,441.49314144476,468.80328869252,493.88330125613,523.2511306012],description:"Marpurg's temperament nr.5, 2 tempered fifths"},"marpurg-t7":{frequencies:[261.6255653006,276.86979852503,293.00227310437,310.07474405997,329.62755691287,348.83408706747,369.15973155124,390.66969766777,415.30469757995,439.50340943686,465.11211608996,492.21297564769,523.2511306012],description:"Marpurg's temperament nr.7, 3 tempered fifths"},"marpurg-t8":{frequencies:[261.6255653006,277.49581689502,293.33333347996,311.12698372208,329.99999983505,348.83408706747,369.99442271164,391.11111150212,414.83597850347,440,466.69047534984,493.32589719545,523.2511306012],description:"Marpurg's temperament nr.8, 4 tempered fifths"},"marpurg-t9":{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,350.01785633742,371.24999944327,392.4383479509,416.24372513446,441.49314144476,468.27419030811,496.67978412536,523.2511306012],description:"Marpurg's temperament nr.9, 4 tempered fifths"},marpurg:{frequencies:[261.6255653006,277.49581689502,293.83071040301,311.12698372208,329.99999983505,349.42557141756,369.99442271164,392.4383479509,415.53937569366,440,466.69047534984,494.16238213869,523.2511306012],description:"Marpurg, Versuch ueber die musikalische Temperatur (1776), p. 153"},marpurg1:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg's Monochord no.1 (1776)"},marpurg3:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"Marpurg 3"},marpurg4:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Marpurg 4, also Yamaha Pure Minor"},marsh:{frequencies:[261.6255653006,275.50659558095,293.15632631094,311.93674864629,328.48713220126,349.53094576004,368.07595926604,391.65594491223,412.43597848639,438.85779226656,466.97226207056,491.74834273545,523.2511306012],description:"John Marsh's meantone temperament (1809)"},marsh2:{frequencies:[261.6255653006,277.22760066578,293.66431501254,311.21660561883,329.70790803338,349.18845812715,369.99117208793,391.90679138833,415.30984563838,439.96491544382,466.29335337935,494.03030700757,523.2511306012],description:"John Marsh's quasi-equal temperament (1840)"},mavila12:{frequencies:[261.6255653006,256.98292999787,287.53945699376,321.72930260925,316.02010771872,353.59644178868,347.32175377489,388.62000642034,381.72381344999,427.11263899087,477.89842030218,469.41794908116,525.2340355968],description:"A 12-note mavila scale (for warping meantone-based music)"},mavila9:{frequencies:[261.6255653006,287.53945699376,316.02010771872,321.72930260925,353.59644178868,388.62000642034,427.11263899087,434.82882549415,477.89842030218,525.2340355968],description:"9-note scale of mavila temperament (TOP tuning)"},mavlim1:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,523.2511306012],description:"First 27/25&135/128 scale"},mbira_banda:{frequencies:[261.6255653006,291.13134764929,327.53979283172,368.50142299854,404.88256627495,443.57258128492,480.10063929961,555.00605988575],description:"Mubayiwa Bandambira's tuning of keys R2-R9 from Berliner: The soul of mbira."},mbira_banda2:{frequencies:[261.6255653006,321.16993719469,360.29289210659,380.8360868427,422.32008370967,461.34206956593,587.32953583482,513.96502576833,761.67217368541,711.48673390068,849.04255025658,936.10488897708,1046.50286568598,633.49659152295,1055.60951665979,1174.65975017952,1321.5609185619,1486.83332446121,1633.62433483289,1789.73120457747,1937.11498804338,2239.34414798534],description:"Mubayiwa Bandambira's Mbira DzaVadzimu tuning B1=114 Hz"},mbira_gondo:{frequencies:[261.6255653006,315.28798447451,345.21700307457,379.51849407657,422.56409582244,461.07566488503,564.05539604512,516.94239487354,778.57545143809,697.24717811406,842.69088701475,926.42243447898,1029.11884353824,628.3943418294,1040.47545270591,1153.813137635,1308.64724593201,1415.59600512246,1572.51770682594,1715.83353717518,1883.05646656025,2103.91477035149],description:"John Gondo's Mbira DzaVadzimu tuning B1=122 Hz"},mbira_kunaka:{frequencies:[261.6255653006,292.98704147282,325.27731021818,350.44066402496,386.59871897734,434.19311733646,479.82340237272,507.76825077597],description:"John Kunaka's mbira tuning of keys R2-R9"},mbira_kunaka2:{frequencies:[261.6255653006,340.26769547546,358.83903996308,405.11650317313,448.98591596033,490.75518955849,622.61349925697,541.70354187177,817.28364083393,724.3415782324,907.35693646861,997.5144154576,1094.73088724383,673.88551872153,1085.91380691742,1216.08403680913,1350.10935126711,1454.55340013417,1604.63250673428,1802.17976955899,1991.5747030301,2107.56373750553],description:"John Kunaka's Mbira DzaVadzimu tuning B1=113 Hz"},mbira_mude:{frequencies:[261.6255653006,289.28740724512,309.15639683494,364.68988616898,372.56793743951,408.17001145418,507.1819925915,459.74594725879,689.63684605432,610.50517472746,760.79276355093,824.39562982862,887.65774573556,562.75365576207,888.68380073365,1015.53708814899,1126.80895076279,1206.28956516212,1365.00817887311,1507.58874420517,1666.02447560859,1935.99638964471],description:"Hakurotwi Mude's Mbira DzaVadzimu tuning B1=132 Hz"},mbira_mujuru:{frequencies:[261.6255653006,281.37682788104,301.05008478933,329.43721154897,394.9500460767,419.64523240241,533.01280425363,488.77489658044,700.88132804992,602.10016957865,765.19999119503,809.29752893,942.6160133907,577.57308891646,937.72844143307,1046.50286568598,1145.18149427149,1243.7900049313,1411.51350174391,1540.15576038017,1658.34356815416,1904.9365287586],description:"Ephat Mujuru's Mbira DzaVadzimu tuning, B1=106 Hz"},mbira_zimb:{frequencies:[261.6255653006,276.86260193655,305.95868600104,343.62544191138,379.08031027329,408.40584780369,453.41648894489,507.76825077597],description:"Shona mbira scale"},mboko_bow:{frequencies:[261.6255653006,347.61817721989,375.37611551499],description:"African Mboko Mouth Bow (chordophone, single string, plucked)"},mboko_zither:{frequencies:[261.6255653006,294.68429813772,319.3201344739,354.92237405774,396.55020354877,418.67676528474,472.67116512585,513.07516347663],description:"African Mboko Zither (chordophone; idiochordic palm fibre, plucked)"},mcclain:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,331.11985608357,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,510.98743222773,523.2511306012],description:"McClain's 12-tone scale, see page 119 of The Myth of Invariance"},mcclain_18:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,319.36714514233,327.03195662575,331.11985608357,344.91651675372,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,441.49314144476,459.88868900496,490.54793493862,496.67978412536,510.98743222773,523.2511306012],description:"McClain's 18-tone scale, see page 143 of The Myth of Invariance"},mcclain_8:{frequencies:[261.6255653006,294.32876096318,327.03195662575,367.91095120397,392.4383479509,408.78994578219,441.49314144476,490.54793493862,523.2511306012],description:"McClain's 8-tone scale, see page 51 of The Myth of Invariance"},mccoskey_22:{frequencies:[261.6255653006,270.06509966514,279.06726965397,287.78812183066,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,382.37582620857,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,506.89953276991,523.2511306012],description:"31-limit rational interpretation of 22-tET, Marion McCoskey"},mclaren_bar:{frequencies:[261.6255653006,281.77400528964,292.14326370913,304.76756192248,325.50548568708,328.66136118639,353.45752508165,360.67039921732,379.1552038283,397.63971531932,405.75513620619,436.411067852,476.98680497297,521.16951219839],description:"Metal bar scale. see McLaren, Xenharmonicon 15, pp.31-33"},mclaren_cps:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,367.91095120397,392.4383479509,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"2)12 [1,2,3,4,5,6,8,9,10,12,14,15] a degenerate CPS"},mclaren_harm:{frequencies:[261.6255653006,279.06726965397,299.00064605783,304.4370214407,307.2300216374,348.83408706747,380.54627680087,389.39619021485,393.97732186443,398.6675280771,465.11211608996,523.2511306012],description:'from "Wilson part 9", claimed to be Schlesingers Dorian Enharmonic, prov. unkn'},mclaren_rath1:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,372.08969287196,380.54627680087,389.39619021485,398.6675280771,492.47165233054,507.3950357345,523.2511306012],description:"McLaren Rat H1"},mclaren_rath2:{frequencies:[261.6255653006,279.06726965397,299.00064605783,334.88072358477,341.71502406609,348.83408706747,380.54627680087,389.39619021485,398.6675280771,440.63253103259,452.54151835779,465.11211608996,523.2511306012],description:"McLaren Rat H2"},mean10:{frequencies:[261.6255653006,272.18829429226,292.14313377277,313.56091500001,326.220453695,350.13653284039,364.27275363262,390.97854693193,406.76370320307,436.58461973079,468.59178605305,487.51045723915,523.2511306012],description:"3/10-comma meantone scale"},mean11:{frequencies:[261.6255653006,272.83457350033,292.34115464648,313.24237654315,326.6628419965,350.01792709981,365.01399145768,391.11103243201,407.86767761879,437.02858581415,468.2743796482,488.33699124025,523.2511306012],description:"3/11-comma meantone scale. A.J. Ellis no. 10"},mean11ls_19:{frequencies:[261.6255653006,272.93479580544,280.25721516838,292.37183188538,305.01012622427,313.1930753928,326.73140514978,340.85495140859,349.99956372811,365.12891753666,374.92476290643,391.13155279262,408.03891236124,418.98596425085,437.09738047696,455.99169236578,468.2252457596,488.46511500326,509.57988860269,523.2511306012],description:"Least squares appr. to 3/2, 5/4, 7/6, 15/14 and 11/8, Petr Par\xEF\xBF\xBDzek"},mean13:{frequencies:[261.6255653006,273.83184954717,292.64606374809,312.75295135888,327.34460995374,349.8355370417,366.15730590163,391.31494185909,409.57195510156,437.7124891801,467.78648270341,489.61131479929,523.2511306012],description:"3/13-comma meantone scale"},mean14:{frequencies:[261.6255653006,274.22463192287,292.76593693997,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"3/14-comma meantone scale (Giordano Riccati, 1762)"},mean14_15:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,349.76390952171,366.60744235102,391.39507854003,410.24343789088,417.8586951835,437.98145930734,467.59494724206,490.11285326462,523.2511306012],description:"15 of 3/14-comma meantone scale"},mean14_19:{frequencies:[261.6255653006,274.22463192287,279.31500250577,292.76593693997,306.86462618694,312.56088569186,327.61283758281,343.38964426558,349.76390952171,366.60744235102,373.41269440635,391.39507854003,410.24343789088,417.8586951835,437.98145930734,459.07327263526,467.59494724206,490.11285326462,513.71515101261,523.2511306012],description:"19 of 3/14-comma meantone scale"},mean14_7:{frequencies:[261.6255653006,292.76593693997,327.61283758281,349.76390952171,391.39507854003,437.98145930734,490.11285326462,523.2511306012],description:"Least squares appr. of 5L+2S to Ptolemy's Intense Diatonic scale"},mean14a:{frequencies:[261.6255653006,274.24690838881,292.77273178776,312.55000460003,327.62804498858,349.75985073129,366.63296888199,391.39962048672,410.28152481852,437.9967071602,467.58409501387,490.1412915133,523.2511306012],description:'fifth of sqrt(5/2)-1 octave "recursive" meantone, Paul Hahn'},mean16:{frequencies:[261.6255653006,274.864106667,292.9608347655,312.24903186879,328.04917632434,349.64754658398,367.34009701877,391.52533508436,411.33694767869,438.41888642025,467.28387071703,490.92894854125,523.2511306012],description:"3/16-comma meantone scale"},mean17:{frequencies:[261.6255653006,273.72412433093,292.61316553779,312.80569569783,327.2710181906,349.85520131118,366.03383354947,391.29294726693,409.38781813791,437.63868343995,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean17_17:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,523.2511306012],description:"4/17-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},mean17_19:{frequencies:[261.6255653006,273.72412433093,279.67971414776,292.61316553779,306.14471057197,312.80569569783,327.2710181906,342.40527209253,349.85520131118,366.03383354947,373.99786656393,391.29294726693,409.38781813791,418.29512920081,437.63868343995,457.8767570375,467.83907547741,489.47372981579,512.10885267608,523.2511306012],description:"4/17-comma meantone scale, least squares error of 5/4 and 3/2"},mean18:{frequencies:[261.6255653006,272.71477685134,292.30447317753,313.30134186202,326.58087306932,350.03988839382,364.87661266094,391.0864943589,407.66301227525,436.94633423564,468.33314368944,488.18382342185,523.2511306012],description:"5/18-comma meantone scale (Smith). 3/2 and 5/3 eq. beat. A.J. Ellis no. 9"},mean19:{frequencies:[261.6255653006,273.06170311607,292.41066686775,313.13068664042,326.81820677503,349.97632128221,365.27443420834,391.15752841841,408.25574814862,437.18446858874,468.16306089008,488.62733218513,523.2511306012],description:"5/19-comma meantone scale, fifths beats three times third. A.J. Ellis no. 11"},mean19r:{frequencies:[261.6255653006,273.04332227389,292.40504357126,313.13971948727,326.80563693258,349.97968716666,365.25335892465,391.15376651139,408.22434232755,437.17185753972,468.17206422213,488.60384173026,523.2511306012],description:"Approximate 5/19-comma meantone with 19/17 tone, Petr Parizek, 2002"},mean23:{frequencies:[261.6255653006,274.15058593695,292.74334833321,312.59706303545,327.56228503462,349.77740346966,366.52259116395,391.37997903742,410.11684180717,437.93077103284,467.63102771476,490.01832104213,523.2511306012],description:"5/23-comma meantone scale, A.J. Ellis no. 4"},mean23six:{frequencies:[261.6255653006,273.11604376732,292.42729246507,313.10398392891,326.85537164611,349.96637341293,365.33674088125,391.16864715511,408.34860251967,437.22175336101,468.13644404983,488.69678846289,523.2511306012],description:"6/23-comma meantone scale"},mean25:{frequencies:[261.6255653006,272.66208311698,292.28833573479,313.32728859832,326.54481265413,350.04955123355,364.81618195011,391.07569872695,407.57299290994,436.91015056532,468.35900068872,488.11644468937,523.2511306012],description:"7/25-comma meantone scale, least square weights 3/2:0 5/4:1 6/5:1"},mean26:{frequencies:[261.6255653006,272.91754119498,292.36655103694,313.20156187458,326.7196004604,350.00272362315,365.10913291207,391.12802157824,408.00943064927,437.08553692506,468.23370304224,488.44305713046,523.2511306012],description:"7/26-comma meantone scale (Woolhouse 1835). Almost equal to meaneb742"},mean26_21:{frequencies:[261.6255653006,272.91754592428,280.26986822267,292.36655272572,304.98534036063,313.20156006546,326.71960423481,335.52133892506,340.8210986211,350.00272362315,365.10913712997,374.9450750913,391.12802157824,408.00943771953,419.00109777107,437.08553944976,455.95052092314,468.23370033762,488.44306277317,501.60158217053,509.52467838008,523.2511306012],description:"21 of 7/26-comma meantone scale (Woolhouse 1835)"},mean27:{frequencies:[261.6255653006,273.15429014256,292.43899158768,313.08519355925,326.88152513903,349.9593710588,365.38059276675,391.17647406766,408.41395592075,437.24799400905,468.11771609009,488.74567091648,523.2511306012],description:"7/27-comma meantone scale, least square weights 3/2:2 5/4:1 6/5:1"},mean29:{frequencies:[261.6255653006,273.57932033947,292.56893127899,312.87664195194,327.1720749345,349.88164908166,365.86785468743,391.26336919078,409.14031659695,437.53944680455,467.90980928584,489.28875967044,523.2511306012],description:"7/29-comma meantone scale, least square weights 3/2:4 5/4:1 6/5:1"},mean2sev:{frequencies:[261.6255653006,272.52663052146,292.24684137387,313.39402123097,326.45210604021,350.07440004945,364.66083404534,391.04793957621,407.34160211012,436.81711699543,468.42550014967,487.94322738789,523.2511306012],description:"2/7-comma meantone scale. Zarlino's temperament (1558). See also meaneb371"},mean2sev_15:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,350.07447082328,364.66081719444,391.04786051887,407.34165622677,419.34452602299,436.81710690282,468.42541627199,487.94330348661,523.2511306012],description:"15 of 2/7-comma meantone scale"},mean2sev_19:{frequencies:[261.6255653006,272.52663052146,280.55692507618,292.24689370448,304.42377254813,313.39402847191,326.45203249943,340.0543130973,350.07447082328,364.66081719444,375.40603866065,391.04786051887,407.34165622677,419.34452602299,436.81710690282,455.01770749831,468.42541627199,487.94330348661,508.27414914183,523.2511306012],description:"19 of 2/7-comma meantone scale"},mean2sev_31:{frequencies:[261.6255653006,264.72620698393,272.52663052146,280.55692507618,283.88190679319,292.24689370448,300.8583415146,304.42377254813,313.39402847191,317.10820138491,326.45203249943,336.07138073182,340.0543130973,350.07447082328,354.22315547012,364.66081719444,375.40603866065,379.85514366424,391.04786051887,395.6823437549,407.34165622677,419.34452602299,424.31412061457,436.81710690282,449.68851049921,455.01770749831,468.42541627199,473.97693555703,487.94330348661,502.32108537715,508.27414914183,523.2511306012],description:"31 of 2/7-comma meantone scale"},mean2seveb:{frequencies:[261.6255653006,274.26749945295,292.59076110537,312.44357330613,327.42660602987,349.76102048238,366.6169314736,391.04794861134,410.01084835752,437.49574139527,467.27496094916,489.74950989452,523.2511306012],description:'"2/7-comma" meantone with equal beating fifths. A.J. Ellis no. 8'},mean2sevr:{frequencies:[261.6255653006,272.52663052146,292.24289114742,313.39346366789,326.45152465405,350.07234194042,364.65868952128,391.04531121882,407.33886585294,436.81651812993,468.41855142334,487.93599106598,523.2511306012],description:"Rational approximation to 2/7-comma meantone, 1/1 = 262.9333"},mean9:{frequencies:[261.6255653006,274.03547926168,292.70827332867,306.59245933664,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"2/9-comma meantone scale, Lemme Rossi, Sistema musico (1666)"},mean94:{frequencies:[261.6255653006,268.79084150406,291.09659021292,315.25339315665,323.88740273232,350.76536842075,360.37196303797,390.27761906502,400.96635635801,434.24075936811,470.27645613296,483.15616342113,523.2511306012],description:"4/9-comma meantone scale"},mean9_15:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,349.79835961887,366.39065074918,391.35653176554,409.92008797511,418.0235894185,437.85206746661,467.68706357679,489.87127257422,523.2511306012],description:"15 of 2/9-comma meantone scale"},mean9_19:{frequencies:[261.6255653006,274.03547926168,279.45274708261,292.70827332867,306.59245933664,312.65343270838,327.48360691354,343.0174228875,349.79835961887,366.39065074918,373.63364091796,391.35653176554,409.92008797511,418.0235894185,437.85206746661,458.62082212371,467.68706357679,489.87127257422,513.10776453427,523.2511306012],description:"19 of 2/9-comma meantone scale"},mean9_31:{frequencies:[261.6255653006,268.72322665693,274.03547926168,279.45274708261,287.03404351137,292.70827332867,298.49467410529,306.59245933664,312.65343270838,321.13524775754,327.48360691354,333.95746354843,343.0174228875,349.79835961887,359.28803828513,366.39065074918,373.63364091796,383.76997851754,391.35653176554,401.97367512027,409.92008797511,418.0235894185,429.36393755067,437.85181455341,446.50763144636,458.62082212371,467.68706357679,480.3749841712,489.87127257422,499.55528826613,513.10776453427,523.2511306012],description:"31 of 2/9-comma meantone scale"},meaneb1071:{frequencies:[261.6255653006,273.45959631537,292.5323192343,305.76452283047,327.09038632535,349.9034421565,365.73073124967,391.23900009103,408.93579686983,437.45744778434,457.24482979639,489.13584427285,523.2511306012],description:"Equal beating 7/4 = 3/2 same."},meaneb1071a:{frequencies:[261.6255653006,273.94115519525,292.67936294368,306.45675889694,327.41929816594,349.81553441422,366.28252094772,391.33731744348,409.75863641311,437.78732645584,458.39517452459,489.75074612717,523.2511306012],description:"Equal beating 7/4 = 3/2 opposite."},meaneb341:{frequencies:[261.6255653006,272.43747957464,292.21954801903,313.43802026715,326.39113133433,350.09085029289,364.55867287416,391.02956482064,407.18921698842,436.75579855003,468.46925117002,487.82916876009,523.2511306012],description:"Equal beating 6/5 = 5/4 same. Almost 4/15 Pyth. comma"},meaneb371:{frequencies:[261.6255653006,272.52577151658,292.24657972098,313.39444482621,326.45151771442,350.07455777399,364.65985037488,391.0477633913,407.34013625771,436.81652657765,468.42591953828,487.94213100406,523.2511306012],description:"Equal beating 6/5 = 3/2 same. Practically 2/7-comma (Zarlino)"},meaneb371a:{frequencies:[261.6255653006,269.83862220337,291.42039690163,314.72828847419,324.6081803116,350.57044084899,361.57569171511,390.49462500658,421.72650333798,434.96526321606,469.75391665508,484.50062400899,523.2511306012],description:"Equal beating 6/5 = 3/2 opposite. Almost 2/5-comma"},meaneb381:{frequencies:[261.6255653006,275.92799893014,293.28437056932,311.73248946737,328.77414682856,349.45463702831,368.55847249214,391.74146894101,416.38271791821,439.14534885862,466.76838786866,492.28548089506,523.2511306012],description:"Equal beating 6/5 = 8/5 same. Almost 1/7-comma"},meaneb451:{frequencies:[261.6255653006,274.36682021224,292.8092284668,312.49148032108,327.70992276921,349.73795145032,366.77030983847,391.42412846541,410.48661799548,438.07873640926,467.5258138363,490.29448158868,523.2511306012],description:"Equal beating 5/4 = 4/3 same, 5/24 comma meantone. A.J. Ellis no. 6"},meaneb471:{frequencies:[261.6255653006,272.3284467197,292.18612898941,313.49179640307,326.31648163178,350.11087068539,364.43361138613,391.00720457415,407.00321492741,436.68087780422,468.52283272721,487.68970701588,523.2511306012],description:"Equal beating 5/4 = 3/2 same. Almost 5/17-comma"},meaneb471a:{frequencies:[261.6255653006,274.14912748586,292.7429036132,312.59777626068,327.56128980523,349.7776701617,366.52092076205,391.37968062521,410.11434970273,437.92977184699,467.63173811584,490.01645860508,523.2511306012],description:"Equal beating 5/4 = 3/2 opposite. Almost 1/5 Pyth. Gottfried Keller (1707)"},meaneb471b:{frequencies:[261.6255653006,272.31089540773,292.18072491748,313.50040506268,326.30440921209,350.11400731728,364.41338872146,391.00370158472,406.97310157871,436.668886633,468.53149836075,487.66729542944,523.2511306012],description:"21/109-comma meantone with 9/7 major thirds, almost equal beating 5/4 and 3/2"},meaneb472:{frequencies:[261.6255653006,270.83769079127,291.72826852127,314.23020335825,325.29440843388,350.38540704884,362.72286472858,390.7008399429,404.45761497645,435.65472502222,469.25816799182,485.78126704788,523.2511306012],description:"Beating of 5/4 = twice 3/2 same. Almost 5/14-comma"},meaneb472_19:{frequencies:[261.6255653006,270.8378472333,281.80541953687,291.72826852127,302.00051792575,314.23002185182,325.29459633135,336.74877333101,350.38540704884,362.72307424558,377.41153667283,390.7008399429,404.45808222448,420.83660282593,435.65497666633,450.99513069838,469.25816799182,485.78154764623,502.88674365212,523.2511306012],description:"Beating of 5/4 = twice 3/2 same, 19 tones"},meaneb472a:{frequencies:[261.6255653006,274.74648495017,292.92493846141,312.30633997417,327.96897748493,349.66886860972,367.20529370531,391.50146074488,411.13561642091,438.33843670622,467.34113372786,490.7787182415,523.2511306012],description:"Beating of 5/4 = twice 3/2 opposite. Almost 3/17-comma"},meaneb591:{frequencies:[261.6255653006,273.06215106005,292.41085266114,313.13038820279,326.81843330822,349.97621009739,365.27491737756,391.15765268623,418.87439289145,437.18488525956,468.16276342643,488.62782610925,523.2511306012],description:"Equal beating 4/3 = 5/3 same."},meaneb732:{frequencies:[261.6255653006,272.00548436883,292.08705896894,313.65121264041,326.09523618955,350.1701397801,364.06303937825,390.94102347986,406.4514961644,436.45893055948,468.68174619223,487.27655969467,523.2511306012],description:"Beating of 3/2 = twice 6/5 same. Almost 4/13-comma"},meaneb732_19:{frequencies:[261.6255653006,272.00553778846,280.94077405591,292.08707584055,303.67560621907,313.65118727632,326.09527197795,339.03307470248,350.17012966679,364.06310036266,376.02237826726,390.94103477068,406.45158772689,419.80330474394,436.45896585468,453.77543893118,468.68171912011,487.27662724555,506.60928680033,523.2511306012],description:"Beating of 3/2 = twice 6/5 same, 19 tones"},meaneb732a:{frequencies:[261.6255653006,270.68848625127,291.6822692306,314.3042667302,325.1920204578,350.41293324447,362.5515203525,390.67014898736,404.20304509584,435.55206635241,469.33217160858,485.59021720901,523.2511306012],description:"Beating of 3/2 = twice 6/5 opposite. Almost 1/3 Pyth. comma"},meaneb742:{frequencies:[261.6255653006,272.89343543801,292.35917287023,313.21341909223,326.70311046689,350.00714105462,365.08148980199,391.12308516115,407.96824372307,437.06899032128,468.24551969328,488.41224041213,523.2511306012],description:"Beating of 3/2 = twice 5/4 same."},meaneb742a:{frequencies:[261.6255653006,273.78850133971,292.63287562287,312.77409391616,327.31510698093,349.84341999552,366.10759179471,391.30612443552,409.49789158088,437.68290117536,467.80756449982,489.55615570194,523.2511306012],description:"Beating of 3/2 = twice 5/4 opposite. Almost 3/13-comma, 3/14 Pyth. comma"},meaneb781:{frequencies:[261.6255653006,273.88372205101,292.66195046404,312.72748571568,327.38015167213,349.82604176358,366.21672762941,391.32556326448,418.15568884829,437.74813244966,467.76108961433,489.67748280644,523.2511306012],description:"Equal beating 3/2 = 8/5 same."},meaneb891:{frequencies:[261.6255653006,272.7426257605,292.31307409948,313.28760473417,326.59990179186,350.03483972175,364.90860969063,391.092135133,419.1546662649,436.96549358815,468.31936361194,488.21959184068,523.2511306012],description:"Equal beating 8/5 = 5/3 same. Almost 5/18-comma"},meaneight:{frequencies:[261.6255653006,276.08926119362,293.33333347996,311.65444160511,328.88393162803,349.42547049952,368.74309237173,391.77416758435,413.43299207996,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8 Pyth. comma meantone scale"},meanfifth:{frequencies:[261.6255653006,274.56546814423,292.86978442859,312.39456569414,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"1/5-comma meantone scale (Verheijen)"},meanfifth2:{frequencies:[261.6255653006,279.06726965397,292.86986732103,312.39452419152,327.84547867349,349.70184487387,366.99801003998,391.46454285105,417.56218018201,438.2147004401,467.42901237995,490.54793493862,523.2511306012],description:"1/5-comma meantone by John Holden (1770)"},meanfifth_19:{frequencies:[261.6255653006,274.56546814423,279.06726965397,292.86978442859,307.35519222791,312.39456569414,327.84548435462,344.06059968708,349.70179235499,366.99791252626,373.01539917593,391.46460164194,410.82629477826,417.56217294621,438.21464222188,459.88868900496,467.42914467878,490.54793493862,514.81033759999,523.2511306012],description:"19 of 1/5-comma meantone scale"},meanfifth_43:{frequencies:[261.6255653006,265.91515911649,270.13633240739,274.56546814423,279.06726965397,283.49717461664,288.14537375445,292.86978442859,297.67175429757,302.39711110066,307.35519222791,312.39456569414,317.35355938713,322.556865357,327.84548435462,333.22081516619,338.51040756711,344.06059968708,349.70179235499,355.43547760922,361.07770857381,366.99791252626,373.01539917593,378.93660287884,385.14971481892,391.46460164194,397.88302689184,404.19904307077,410.82629477826,417.56217294621,424.19061149626,431.14564594215,438.21464222188,445.39957775044,452.46991103879,459.88868900496,467.42914467878,475.09307907327,482.63477102771,490.54793493862,498.59100550039,506.50570672499,514.81033759999,523.2511306012],description:"Complete 1/5-comma meantone scale"},meanfiftheb:{frequencies:[261.6255653006,275.80023422757,293.11157312801,311.73372470712,328.53333183909,349.48325286892,368.3828117434,391.46459711956,412.7266004334,438.69360944226,466.62683936965,491.82624824197,523.2511306012],description:'"1/5-comma" meantone with equal beating fifths'},meangold:{frequencies:[261.6255653006,272.97231199113,292.38331430233,313.17462880702,326.75706743029,349.99269211627,365.17193449866,391.13923210785,408.10300926149,437.12312635029,468.20685771475,488.51307131873,523.2511306012],description:"Meantone scale with Blackwood's R = phi, and diat./chrom. ST = phi, ~4/15-comma"},meanhalf:{frequencies:[261.6255653006,267.49544939623,290.69507255622,315.90677595028,322.99452506247,351.00752840096,358.88280562497,390.00836666198,398.75867291663,433.34262909025,470.92601754108,481.49180950675,523.2511306012],description:"1/2-comma meantone scale"},meanhar2:{frequencies:[261.6255653006,273.08769296879,292.41861893027,305.22982618403,326.83598255713,349.97156260351,365.30423365264,391.16284711627,408.30015740759,437.20230245522,456.35665612784,488.66055322307,523.2511306012],description:"1/9-Harrison's comma meantone scale"},meanhar3:{frequencies:[261.6255653006,274.22153683641,292.76499331753,306.86017365004,327.61072570921,343.38355445704,366.60389537541,391.39444778107,410.23814647641,437.9793418028,459.06587176894,490.10890120058,523.2511306012],description:"1/11-Harrison's comma meantone scale"},meanharris:{frequencies:[261.6255653006,273.71072489962,292.60907359238,306.12544311476,327.26186315247,349.85764856047,366.01847563765,391.29021017831,409.36491649663,437.62950220286,457.84473927605,489.45661357347,523.2511306012],description:"1/10-Harrison's comma meantone scale"},meanhsev:{frequencies:[261.6255653006,265.69493617871,271.18768033644,275.4057836544,279.68949451567,284.03983498254,289.91182549392,294.4211659268,299.00064605783,305.1819244006,309.92877868547,314.74946639166,321.25632089757,326.25319922315,331.32779988873,336.4813337451,343.43745382287,348.77934146077,354.20431777528,361.52682728594,367.15008027699,372.86080050545,378.66034414493,386.48843610249,392.49994642563,398.60496085649,406.84537033315,413.17351844213,419.60009331305,426.12662827999,434.93599657884,441.70106893056,448.57136642871,457.84473927605,464.96613926104,472.19830582795,481.96011959425,489.45661357347,497.06970936204,504.80122352123,515.23704142273,523.2511306012],description:"1/14-septimal schisma tempered meantone scale"},meanhskl:{frequencies:[261.6255653006,275.0605216927,293.02063313667,312.15345277639,328.18310911307,349.61186736411,367.56508220664,391.56529173291,411.67289207144,438.55312706018,467.18850946536,491.17950266504,523.2511306012],description:"Half septimal kleisma meantone"},meanlst357_19:{frequencies:[261.6255653006,273.71260157103,279.68803244686,292.60971924044,306.12821574316,312.81131320311,327.26311833974,342.38279105966,349.85736361975,366.02068710341,374.01129952811,391.29052886394,409.36829077259,418.30522648629,437.63082426891,457.84952434322,467.84458559023,489.45917220726,512.07206464598,523.2511306012],description:"19 of mean-tone scale, least square error in 3/2, 5/4 and 7/4"},meanmalc:{frequencies:[261.6255653006,279.16226462633,292.82999876562,312.45832383396,327.75622702832,349.72564885805,366.84815356577,391.43789792004,417.67588698136,438.12522309524,467.49265244264,490.38100841085,523.2511306012],description:"Meantone approximation to Malcolm's Monochord, 3/16 Pyth. comma"},meannkleis:{frequencies:[261.6255653006,277.55670411237,293.77792781181,311.66693695111,329.88161264913,349.96913477239,370.42222384066,392.07096746411,415.94530241673,440.25439013544,467.06275302556,494.35929617392,523.2511306012],description:"1/5 kleisma tempered meantone scale"},meanpi:{frequencies:[261.6255653006,275.38456311745,294.43027471344,309.91448590794,326.2128298123,348.77404705732,367.11600789597,392.50613131028,413.14795414706,434.87532652316,464.95175460796,489.40347900327,523.2511306012],description:"Pi-based meantone with Harrison's major third by Erv Wilson"},meanpi2:{frequencies:[261.6255653006,287.5806999253,296.7710142931,326.2128298123,336.6377243117,370.0346037192,381.85992557156,394.06315326167,433.15704755212,446.99959483943,491.34516423327,507.04724898227,523.2511306012],description:"Pi-based meantone by Erv Wilson analogous to 22-tET"},meanpkleis:{frequencies:[261.6255653006,274.33428876064,294.88060759996,309.2047285643,324.22465805628,348.50752497012,365.43662717622,392.80607455881,411.88702081614,442.73537947933,464.24169412807,486.7926967469,523.2511306012],description:"1/5 kleisma positive temperament"},meanquar:{frequencies:[261.6255653006,273.37431312998,292.50627485027,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale. Pietro Aaron's temp. (1523). 6/5 beats twice 3/2"},meanquar_14:{frequencies:[261.6255653006,273.37431312998,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split D#/Eb and G#/Ab, Otto Gibelius (1666)"},meanquar_15:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,418.60090448096,437.39890198442,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb and G#/Ab"},meanquar_16:{frequencies:[261.6255653006,273.37431312998,279.93548123753,292.50629850443,305.64179898843,312.97722776199,327.03195662575,349.91920725962,365.63293356166,391.22137338448,408.78994578219,418.60090448096,437.39882871549,457.04097849371,468.01000025525,489.02679755603,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, G#/Ab and A#/Bb"},meanquar_17:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177250659,312.977175335,327.03195662575,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39889945791,457.04105241293,468.01003810189,489.02683710225,523.2511306012],description:"1/4-comma meantone scale with split C#/Db, D#/Eb, F#/Gb, G#/Ab and A#/Bb"},meanquar_19:{frequencies:[261.6255653006,273.37431312998,279.93529690293,292.50627485027,305.64177427204,312.977175335,327.03195662575,341.71789064962,349.91912034749,365.63284274659,374.40803131735,391.22147055517,408.78994578219,418.60090448096,437.39890198442,457.04105241293,468.01003810189,489.02683710225,510.98743222773,523.2511306012],description:"19 of 1/4-comma meantone scale"},meanquar_27:{frequencies:[261.6255653006,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,327.03195662575,334.88072358477,341.71789064962,349.91912034749,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"27 of 1/4-comma meantone scale"},meanquar_31:{frequencies:[261.6255653006,267.90457886781,273.37431312998,279.93529690293,285.65065877038,292.50627485027,299.52642572255,305.64177427204,312.977175335,320.48862783822,327.03195662575,334.88072358477,341.71789064962,349.91912034749,358.31717956585,365.63284274659,374.40803131735,382.05221698715,391.22147055517,400.61078621746,408.78994578219,418.60090448096,427.14736482575,437.39890198442,447.89647345742,457.04105241293,468.01003810189,479.24227945773,489.02683710225,500.76348165392,510.98743222773,523.2511306012],description:"31 of 1/4-comma meantone scale"},meanquareb:{frequencies:[261.6255653006,274.90575459855,292.80763523599,312.14798050979,327.88746490679,349.6453532581,367.3522744581,391.22144795733,411.14173398328,437.99455416256,467.00507093977,490.61429903129,523.2511306012],description:"Variation on 1/4-comma meantone with equal beating fifths"},meanquarm23:{frequencies:[261.6255653006,273.51763645063,292.40504357126,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,408.78994578219,436.04260883433,468.17206422213,489.12605686634,523.2511306012],description:"1/4-comma meantone approximation with minimal order 23 beatings"},meanquarr:{frequencies:[261.6255653006,273.37036621967,292.50063201309,312.98169478553,327.03195662575,349.92419358955,365.62579001637,391.21579858034,408.78994578219,437.39258595147,468.01906681552,489.01974822542,523.2511306012],description:"Rational approximation to 1/4-comma meantone, Kenneth Scholz, MTO 4.4, 1998"},meansabat:{frequencies:[261.6255653006,279.13726386405,294.25495796556,313.95067836072,330.95382015833,348.87783040382,372.229687597,392.38914286775,418.65339720992,441.32709511026,470.8669722571,496.36848628125,523.2511306012],description:"1/9-schisma meantone scale of Eduard Sa'bat-Garibaldi"},meansabat_53:{frequencies:[261.6255653006,264.79625752493,268.00537599851,271.25338610366,275.79485124716,279.13726386405,282.52018221184,285.94410045135,290.73152483281,294.25495796556,297.82109228474,301.4304452945,305.08354077075,310.19140758515,313.95067836072,317.75550958044,321.60645175541,326.99095182327,330.95382015833,334.96471528237,339.02421924159,343.13292113612,348.87783040382,353.10595017045,357.38531136087,361.71653498009,367.77258074571,372.229687597,376.74081403286,381.30660995465,385.92774054592,392.38914286775,397.14458487807,401.95765903525,406.82906379475,413.640406907,418.65339720992,423.72714093867,428.86237189887,436.04260883433,441.32709511026,446.67562589029,452.08897683944,457.56793273834,465.22877230071,470.8669722571,476.57350267936,482.349191678,490.42492909292,496.36848628125,502.38407462043,508.4725670703,514.63484717027,523.2511306012],description:"53-tone 1/9-schisma meantone scale"},meanschis:{frequencies:[261.6255653006,275.81646505128,294.24573392894,310.20599265769,327.03195662575,348.88329767713,367.80716871461,392.38299382393,413.66634097248,436.10412364188,465.24335632603,490.47874118496,523.2511306012],description:"1/8-schisma temperament, Helmholtz"},meanschis7:{frequencies:[261.6255653006,275.84425785506,294.23387584933,310.2247482054,327.0846843223,348.89032888179,367.85164222246,392.37508610937,413.69968681881,436.18322603255,465.26210635182,490.54793493862,523.2511306012],description:"1/7-schisma linear temperament"},meanschis_17:{frequencies:[261.6255653006,275.81646505128,290.77709705464,294.24573392894,310.20599265769,327.03195662575,330.93307160522,348.88329767713,367.80716871461,372.19468374184,392.38299382393,413.66634097248,436.10412364188,441.30634506723,465.24335632603,490.47874118496,496.32958936031,523.2511306012],description:"17-tone 1/8-schisma linear temperament"},meansept:{frequencies:[261.6255653006,273.93523095528,292.67762672082,312.70235991264,327.41522444303,349.81667202162,366.27579142084,391.33604481052,409.74867679276,437.78330574787,467.73603562223,489.74334292241,523.2511306012],description:"Meantone scale with septimal diminished fifth"},meansept2:{frequencies:[261.6255653006,273.61459551034,286.15296204753,292.57963558274,305.98714063953,320.00886175336,327.19620693615,342.18982383643,349.87514759905,365.9082279648,382.67602660872,391.27063976147,409.20043831214,427.95210889573,437.56358849756,457.61500463173,478.58500343311,489.333659422,511.75744671018,523.2511306012],description:"Meantone scale with septimal neutral second"},meansept3:{frequencies:[261.6255653006,267.11515986718,271.23581508831,275.42019673559,281.19923906193,285.53716249988,289.94217244295,296.02592413073,300.59257160392,305.22982618403,309.9384746623,316.44180152381,321.32358037849,326.28048244956,333.12670774706,338.26588629419,343.48414905091,348.7829114007,356.10146388137,361.59490682213,367.17305499414,374.87731434423,380.66058361349,386.53284867747,394.643327573,400.73152907611,406.91341882127,413.19091223118,421.86074762795,428.36858751681,434.97682067587,444.1040384307,450.95501471222,457.91167766162,464.97592623609,474.73234784313,482.05581210758,489.49253462334,499.76337935275,507.47298512535,515.30182087389,523.2511306012],description:"Pythagorean scale with septimal minor third"},meansept4:{frequencies:[261.6255653006,266.94086705872,271.13211808455,275.38917613856,280.98410555769,285.39585012732,289.87686370457,295.76613145071,300.40996929954,305.12672026341,309.91752915454,316.21395200486,321.17884203959,326.22168604472,332.8493514236,338.07543464185,343.38355445704,348.77505435772,355.86092403367,361.44831302863,367.12342987925,374.58207334188,380.46340397682,386.43730087372,394.28810581018,400.47907310734,406.76701374557,413.15368163355,421.54749623588,428.16623317002,434.88889120201,443.72428802318,450.69091522486,457.76754776364,464.95497741911,474.40121026751,481.84980583512,489.41535214975,499.35853288878,507.19898454493,515.16253949886,523.2511306012],description:"Pythagorean scale with septimal narrow fourth"},meansev:{frequencies:[261.6255653006,275.93321340298,293.28595453555,311.72996498387,328.77769811601,349.45369437647,368.5644419122,391.74252566418,413.16594588103,439.14890519043,466.76586696593,492.29212632197,523.2511306012],description:"1/7-comma meantone scale, Jean-Baptiste Romieu (1755)"},meansev2:{frequencies:[261.6255653006,273.98141462199,292.76593693997,312.83835055233,327.61283758281,350.07440004945,366.60744235102,391.74252566418,410.24343789088,438.37026184168,468.42550014967,490.54793493862,524.18054130269],description:"Meantone scale with 1/7-comma stretched octave (stretched meansept)"},meansev_19:{frequencies:[261.6255653006,275.93321340298,278.07859353335,293.28589524255,309.32501829942,311.72996858511,328.77775508885,346.75764506664,349.4536277652,368.56443339655,371.42996022741,391.74260033637,413.16585280598,416.37814821359,439.14890011719,463.16493144882,466.76596133102,492.29202110912,496.11959049595,523.2511306012],description:"19 of 1/7-comma meantone scale"},meanseveb:{frequencies:[261.6255653006,276.822915312,293.45907344559,311.2600957924,329.2717708679,349.29792128041,369.56105314287,391.74259807358,414.53862252605,439.49286138442,466.19439430972,493.21190508606,523.2511306012],description:'"1/7-comma" meantone with equal beating fifths'},meansixth:{frequencies:[261.6255653006,275.36245350283,293.11247215425,312.00666699279,328.38886075091,349.55699144229,367.91095120397,391.62676241399,412.18948168074,438.75944753732,467.04212833931,491.56459996916,523.2511306012],description:"1/6-comma meantone scale (tritonic temperament of Salinas)"},meansixth_19:{frequencies:[261.6255653006,275.36245350283,278.49009641114,293.11247215425,308.50278723002,312.00666699279,328.38886075091,345.6314161331,349.55699144229,367.91095120397,372.08969287196,391.62676241399,412.18948168074,416.87124381956,438.75944753732,461.79691129422,467.04212833931,491.56459996916,517.37477513058,523.2511306012],description:"19 of 1/6-comma meantone scale"},meansixtheb:{frequencies:[261.6255653006,276.39673661379,293.31426069206,311.4574698476,328.96404447481,349.37515437283,369.07004939896,391.62674884124,413.78350416977,439.15979251365,466.37460465854,492.63446576705,523.2511306012],description:'"1/6-comma" meantone with equal beating fifths'},meansixthm:{frequencies:[261.6255653006,275.36250599118,293.11251278827,312.00669222389,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52369088643,438.75941205608,467.04206359353,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 2 fifths"},meansixthm2:{frequencies:[261.6255653006,276.14113065853,293.11251278827,310.24975557428,328.38895179964,349.55706816887,367.91095120397,391.62667645325,414.52380581681,438.75941205608,465.72523006308,491.56462836305,523.2511306012],description:"modified 1/6-comma meantone scale, wolf spread over 4 fifths"},meansixthpm:{frequencies:[261.6255653006,275.00020270933,293.00227310437,309.72478954314,328.14198392915,348.83408706747,367.49599295996,391.5530240856,412.50030385781,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"modified 1/6P-comma temperament, French 18th century"},meansixthso:{frequencies:[261.6255653006,273.09145986506,292.50627485027,313.30134186202,327.03195662575,350.28154752005,365.63284274659,391.62667645325,408.78994578219,437.85193595173,468.98001879925,489.53334447372,524.3356019912],description:"1/6-comma meantone scale with 1/6-comma stretched oct, Dave Keenan TL 13-12-99"},meanstr:{frequencies:[261.6255653006,272.52663052146,292.30447317753,313.51763757869,326.58087306932,350.28154752005,364.87661266094,391.35649333595,407.66301227525,437.24799400905,468.98001879925,488.52085380073,523.97386302914],description:"Meantone with 1/9-comma stretched octave, Petr Parizek (2006)"},meanten:{frequencies:[261.6255653006,276.96346718799,293.59840699152,311.2324721493,329.47860040677,349.26769656434,369.74365294187,391.95114287501,414.92943551322,439.85086739936,466.26912673157,493.60433806962,523.2511306012],description:"1/10-comma meantone scale"},meanthird:{frequencies:[261.6255653006,271.40047399919,291.9012907804,313.95067836072,325.68056936328,350.28154752005,363.36884069528,390.81668391305,405.4184580124,436.04260883433,468.98001879925,486.50215045777,523.2511306012],description:"1/3-comma meantone scale (Salinas)"},meanthird_19:{frequencies:[261.6255653006,271.40047399919,281.38801176707,291.9012907804,302.80736724606,313.95067836072,325.68056936328,337.848714425,350.28154752005,363.36884069528,376.74081403286,390.81668391305,405.4184580124,420.33785775232,436.04260883433,452.33412516107,468.98001879925,486.50215045777,504.40543017669,523.2511306012],description:"Complete 1/3-comma meantone scale"},meanthirdeb:{frequencies:[261.6255653006,273.41679662438,292.30169912182,312.83755546226,326.81234905863,349.91518709086,365.63683018302,390.81669745772,408.5035451685,436.83089868331,467.63468237516,488.59687355467,523.2511306012],description:'"1/3-comma" meantone with equal beating fifths'},meanvar1:{frequencies:[261.6255653006,274.22463192287,292.50627485027,312.00669222389,327.03195662575,349.55706816887,366.3906401674,391.22147055517,410.48618883318,437.39890198442,467.04206359353,489.53334447372,523.2511306012],description:"Variable meantone 1: C-G-D-A-E 1/4, others 1/6"},meanvar2:{frequencies:[261.6255653006,274.19219069011,292.50627485027,312.04360750473,327.03195662575,349.70184487387,366.23895640989,391.22147055517,410.65012590831,437.39890198442,467.23549927892,489.3306802979,523.2511306012],description:"Variable meantone 2: C..E 1/4, 1/5-1/6-1/7-1/8 outward both directions"},meanvar3:{frequencies:[261.6255653006,275.36250599118,292.50627485027,310.71739423852,327.03195662575,349.55706816887,367.15000817177,391.22147055517,413.04376116614,437.39890198442,466.0760911248,489.53334447372,523.2511306012],description:"Variable meantone 3: C..E 1/4, 1/6 next, then Pyth."},meanvar4:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,412.61639318626,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Variable meantone 4: naturals 1/4-comma, accidentals Pyth."},mediant16:{frequencies:[261.6255653006,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,523.2511306012],description:"Mediant doubling of octave done four times"},mercadier:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.42509491746,328.14198392915,349.22823143301,368.74309237173,391.5530240856,413.90012676351,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Mercadier's well-temperament (1777), 1/12 and 1/6 Pyth. comma"},mercadier2:{frequencies:[261.6255653006,276.14388692511,292.95319623755,310.40895756597,328.03206784165,349.20805980193,368.45885450371,391.49761638186,413.86785247997,438.37641748302,465.57175090792,491.63473786767,523.2511306012],description:"Mercadier de Belestas (1776)"},mercator:{frequencies:[261.6255653006,272.09448029963,279.3054110864,290.48161516351,306.08206748155,318.32990397837,326.76614606023,335.42596179815,348.84778913489,362.80689075348,372.42184279259,387.32403355801,408.12545368833,418.94141877379,435.70530841001,453.13974129598,465.14865565404,490.12996697565,509.74216322321,523.2511306012],description:"19 out of 53-tET, see Mandelbaum p. 331"},merrick:{frequencies:[261.6255653006,278.62147458377,295.28844751169,312.94924079019,329.91874474504,349.29981986967,371.62722343835,394.01440557319,416.60121863153,438.96906929631,468.0242659544,493.6331420766,523.2511306012],description:"A. Merrick's melodically tuned equal temperament (1811)"},mersen_l1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 1"},mersen_l2:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Mersenne lute 2"},mersen_s1:{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 1"},mersen_s2:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Mersenne spinet 2"},mersenmt1:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.03921839762,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,466.55882736321,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 1"},mersenmt2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.11326130363,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Mersenne's Improved Meantone 2"},mersenne:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,310.07474405997,313.95067836072,322.99452506247,327.03195662575,340.65828815182,344.52749339997,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,408.78994578219,413.43299207996,418.60090448096,430.65936674996,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,510.98743222773,523.2511306012],description:"31-note choice system of Mersenne, Harmonie universelle (1636)"},meyer:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},meyer_29:{frequencies:[261.6255653006,268.26840191956,275.93321340298,286.15296204753,289.72987407313,294.32876096318,306.59245933664,321.92208230347,327.03195662575,331.11985608357,343.38355445704,344.91651675372,357.69120255941,367.91095120397,372.50983809402,383.2405741708,386.30649876417,392.4383479509,408.78994578219,413.89982010446,429.2294430713,441.49314144476,457.84473927605,459.88868900496,482.88312345521,490.54793493862,496.67978412536,510.98743222773,515.07533168556,523.2511306012],description:"Max Meyer, see Doty, David, 1/1 August 1992 (7:4) p.1 and 10-14"},mid_enh1:{frequencies:[261.6255653006,269.10058145205,336.37572681506,348.83408706747,392.4383479509,403.65087217807,504.56359022259,523.2511306012],description:"Mid-Mode1 Enharmonic, permutation of Archytas's with the 5/4 lying medially"},mid_enh2:{frequencies:[261.6255653006,271.31540105247,339.14425131559,348.83408706747,392.4383479509,406.97310157871,508.71637697339,523.2511306012],description:"Permutation of Archytas' Enharmonic with the 5/4 medially and 28/27 first"},miller19:{frequencies:[261.6255653006,271.16557874802,283.07475767856,293.39690257971,304.09543631541,315.18408718336,326.67707691855,338.58915326012,350.93559605343,363.73224209988,376.99551198295,390.74241649248,407.9032302438,422.77716528297,438.1934715504,454.17192383337,470.73301771751,487.89800430439,505.68889852562,524.12852955557],description:"TOP tempered nr. 64 [1202.9, 570.4479508], 7-limit {225/224, 1029/1000}"},miller7:{frequencies:[261.6255653006,274.70684356563,294.32876096318,313.95067836072,329.64821227876,353.19451315581,366.27579142084,392.4383479509,412.06026534844,439.53094970501,470.92601754108,494.47231841813,523.2511306012],description:"Herman Miller, 7-limit JI. mode of parizek_ji1"},miller_12:{frequencies:[261.6255653006,273.36657578691,291.63627719304,313.29104303136,327.35065305942,349.22823143301,364.90060015836,391.99543598175,418.19337019276,436.9606979923,456.57025003029,487.08386390194,523.2511306012],description:"Herman Miller, scale with appr. to three 7/4 and one 11/8. Tuning List 19-11-99"},miller_12a:{frequencies:[261.6255653006,273.46133384191,291.68681828778,313.23675853409,327.40738352015,349.22823143301,365.02708698668,391.99543598175,418.12090908234,437.03642407223,456.80766452229,487.25270356141,523.85596330884],description:'Herman Miller, "Starling" scale, alternative version TL 25-11-99'},miller_12r:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,484.4917875937,523.2511306012],description:'Herman Miller, "Starling" scale rational version'},miller_ar1:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.07474405997,327.9937953665,348.83408706747,368.24374600687,391.64146650178,414.27421384356,438.21489534465,465.11211608996,490.99166158792,523.2511306012],description:'Herman Miller, "Arrow I" well-temperament'},miller_ar2:{frequencies:[261.6255653006,276.1828093671,293.13465239421,310.2849072826,328.2161033156,349.07052034394,368.24374600687,391.64146650178,414.27421384356,438.51190905657,465.42736069124,491.32444638706,523.2511306012],description:'Herman Miller, "Arrow II" well-temperament'},miller_b1:{frequencies:[261.6255653006,276.37000081643,292.93610587951,310.49521248455,328.2161033156,348.83408706747,368.4933346061,391.64146650178,413.993616853,438.80912407872,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Butterfly I" well-temperament'},miller_b2:{frequencies:[261.6255653006,276.55731914056,293.13465239421,310.70566022736,328.2161033156,349.07052034394,368.74309237173,392.17254067411,414.27421384356,439.10654054756,465.42736069124,491.99069280383,523.2511306012],description:'Herman Miller, "Butterfly II" well-temperament'},miller_bug:{frequencies:[261.6255653006,275.99574470663,292.73769384471,310.49521248455,327.54963108844,348.83408706747,368.4933346061,391.64146650178,413.993616853,437.62147130622,465.11211608996,491.32444638706,523.2511306012],description:'Herman Miller, "Bug I" well-temperament'},miller_dim:{frequencies:[261.6255653006,272.37088095799,275.97178311718,291.10467300644,307.06737543415,311.12698372208,323.9053895548,328.18760802294,346.1837483498,365.1667076515,369.99442271164,385.1905938463,390.2830385166,411.68417663589,434.25884690128,440,458.07139483414,464.12736626882,489.57775198944,516.42371048788,523.2511306012],description:"Diminished temperament, g=92.421, oct=1/4, 7-limit"},miller_nikta:{frequencies:[261.6255653006,272.78230567952,282.82337239762,292.30660227893,305.1368529352,315.1779191367,326.89249731477,341.39626079795,349.76381456689,364.82541608424,379.88701473,391.60159255926,407.77886614283,422.28262813098,436.22855406869,456.86852448015,469.69877536137,488.10739794888,508.74736733766,523.2511306012],description:'Herman Miller, 19-tone scale of "Nikta". Tuning List 22-1-99'},miller_sp:{frequencies:[261.6255653006,276.74268633071,292.73329748773,304.15432597486,321.72882314722,340.31880135827,353.5963846,374.02771873076,395.63960626236,411.07553805605,434.82810464551,459.95313047266,477.89826295658,505.51194770063,525.23456349057],description:"Herman Miller, Superpelog temperament, TOP tuning"},minor_5:{frequencies:[261.6255653006,299.00064605783,348.83408706747,418.60090448096,465.11211608996,523.2511306012],description:"A minor pentatonic"},minor_clus:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,353.19451315581,372.08969287196,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,523.2511306012],description:"Chalmers' Minor Mode Cluster, Genus [333335]"},minor_wing:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,376.74081403286,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Chalmers' Minor Wing with 7 minor and 6 major triads"},minortone:{frequencies:[261.6255653006,264.87670583656,269.18630372462,273.56601964703,276.96554054138,281.47182622933,286.05143175444,290.70554674078,294.31805527354,299.10666990622,303.97319627313,307.75057781118,312.75774231814,317.84637624619,323.01780144749,327.03184444407,332.35271908155,337.76016543181,341.95740725719,347.52112383796,353.17536321933,358.9216002989,363.3818066762,369.29410472703,375.30259493676,379.96636500161,386.14849505708,392.43120962619,398.81614754309,403.7721109712,410.34156772664,417.0179085097,422.20006196255,429.06934285921,436.05038835349,443.14501943782,448.65184388114,455.95150328441,463.36992699746,469.12808274602,476.76089208744,484.51788878959,492.4010934061,498.52001054206,506.63103252794,514.8740254656,523.2511306012],description:"Minortone temperament, g=182.466089, 5-limit"},miracle1:{frequencies:[261.6255653006,266.71173418545,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,479.82340237272,489.15147723638,513.27277840175,523.2511306012],description:'21 out of 72-tET Pyth. scale "Miracle/Blackjack", Keenan & Erlich, TL 2-5-2001'},miracle1a:{frequencies:[261.6255653006,266.57640943865,279.87817034289,285.17441410431,299.40418912991,305.0699313594,320.29246281951,326.35348199782,342.63803067389,349.1219037468,366.54256247747,373.47879032775,392.11482112276,399.53496279579,419.47115746916,427.40897376302,448.73603972606,457.22764679928,480.04261976898,489.12665346498,513.5333359992,523.2511306012],description:"Version of Blackjack with just 11/8 intervals"},miracle2:{frequencies:[261.6255653006,266.71172956369,274.52699087907,279.86396690685,285.30469707927,293.66477470251,299.3738011912,305.19381471768,314.13668880034,320.24370207508,326.46943949911,336.03573785931,342.56848231438,349.22822739856,359.4614100947,366.44956423737,373.57357245769,380.83607584373,391.99544051026,399.61607650784,407.38486242506,419.32216702351,427.4740516384,435.78441397758,448.55389013814,457.27405769313,466.16375074742,479.82341068742,489.15147723638,498.66088722045,513.27278729609,523.2511306012],description:'31 out of 72-tET Pythagorean scale "Miracle/Canasta", tempered Fokker-M, 36 7-limit tetrads'},miracle24:{frequencies:[261.6255653006,266.71173418545,274.52698453615,279.86396690685,285.30470202322,299.37379946195,305.19382000629,320.24370022528,326.46944327063,342.56848033562,349.22823143301,366.44956000397,373.57357677338,391.99543598175,399.61607881612,419.32216217931,427.47405410759,448.5538823653,457.27406033445,466.16376151809,479.82340237272,489.15147723638,498.66089874196,513.27277840175,523.2511306012],description:"Miracle[24] in 72-tET tuning."},miracle2a:{frequencies:[261.6255653006,266.57640943865,274.68028654691,279.87817034289,285.17441410431,293.84366906071,299.40418912991,305.0699313594,314.34400674513,320.29246281951,326.35348199782,336.27457379784,342.63803067389,349.1219037468,359.73515228832,366.54256247747,373.47879032775,380.54627680087,392.11482112276,399.53496279579,407.09552105481,419.47115746916,427.40897376302,435.49700296564,448.73603972606,457.22764679928,465.87994655565,480.04261976898,489.12665346498,498.38259075187,513.5333359992,523.2511306012],description:"Version of Canasta with just 11/8 intervals"},miracle3:{frequencies:[261.6255653006,266.71172956369,271.8967720342,274.52699087907,279.86396690685,285.30469707927,290.85119844166,293.66477470251,299.3738011912,305.19381471768,311.12697293924,314.13668880034,320.24370207508,326.46943949911,332.81620914398,336.03573785931,342.56848231438,349.22822739856,356.01744208336,359.4614100947,366.44956423737,373.57357245769,380.83607584373,384.52012922913,391.99544051026,399.61607650784,407.38486242506,411.32573797959,419.32216702351,427.4740516384,435.78441397758,440.00001524924,448.55389013814,457.27405769313,466.16375074742,470.67322937359,479.82341068742,489.15147723638,498.66088722045,503.48472993456,513.27278729609,523.2511306012],description:'41 out of 72-tET Pythagorean scale "Miracle/Studloco", Erlich/Keenan 2001'},miracle31s:{frequencies:[261.6255653006,266.63636836248,274.61234258734,279.87187586531,285.23214274484,293.7643779857,299.39072204343,305.12482507342,314.2521161294,320.27085311289,326.40486440328,336.1687117034,342.60720791066,349.16901789451,359.61381619398,366.50134650551,373.52079096839,380.6746756467,392.06191220286,399.57090708206,407.22371854314,419.40512463865,427.43781242392,435.62434685833,448.6553095271,457.24821364991,466.00569400686,479.94546308962,489.13765420145,498.50589943595,513.41785698047,523.2511306012],description:"Canasta with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle3a:{frequencies:[261.6255653006,266.57640943865,271.6209387912,274.68028654691,279.87817034289,285.17441410431,290.57088243021,293.84366906071,299.40418912991,305.0699313594,310.84289043406,314.34400674513,320.29246281951,326.35348199782,332.52919812642,336.27457379784,342.63803067389,349.1219037468,355.72847573316,359.73515228832,366.54256247747,373.47879032775,380.54627680087,384.83248369581,392.11482112276,399.53496279579,407.09552105481,411.6807594913,419.47115746916,427.40897376302,435.49700296564,440.40213577526,448.73603972606,457.22764679928,465.87994655565,471.12729153307,480.04261976898,489.12665346498,498.38259075187,503.99602271809,513.5333359992,523.2511306012],description:"Version of Studloco with just 11/8 intervals"},miracle3ls:{frequencies:[261.6255653006,266.8561524992,272.19132869617,274.36355553357,279.84880885615,285.44374339214,291.1505189834,293.47406686496,299.34138986722,305.32601617869,311.43030899178,313.91568307924,320.1916880693,326.59318586748,333.12264767748,335.78115718319,342.4943108472,349.34167821305,356.32594256772,359.16962765504,366.35037871957,373.67471357934,381.14545968569,384.18721873359,391.86813762951,399.70261841457,407.69373119716,410.94736065575,419.16328558448,427.54349328421,436.09121881038,439.57145109254,448.35967321435,457.32356924795,466.46667727785,470.18934850506,479.58967749961,489.177972196,498.95793401383,502.93987502638,512.99500332159,523.2511306012],description:"Miracle-41 in a 7-limit least-squares tuning, Gene Ward Smith, 2001"},miracle3p:{frequencies:[261.6255653006,266.34679554672,270.06721067987,274.94077677072,279.90228841312,284.95333588433,290.09553330897,294.14767822015,299.45579274291,304.85969791727,310.36112062791,314.69634158508,320.37527393455,326.15668500873,332.04242788125,336.6805001021,342.75615313904,348.94144590806,355.2383548887,360.20043713509,366.70052302062,373.3179099666,380.0547104455,385.36343543368,392.31760641523,399.39727291251,406.60469732047,412.28427858225,419.7242587073,427.29849640545,435.00941939202,441.0857666732,449.04549132915,457.14885520764,465.39844769831,471.89927840742,480.41505607532,489.08450736089,497.91040254418,504.86537329764,513.97604599191,523.2511306012],description:"Least squares Pythagorean approximation to partch_43"},miracle41s:{frequencies:[261.6255653006,266.63636836248,269.45164985995,274.61234258734,279.87187586531,285.23214274484,290.69507255622,293.7643779857,299.39072204343,305.12482507342,310.96875093738,314.2521161294,320.27085311289,326.40486440328,332.65635780028,336.1687117034,342.60720791066,349.16901789451,355.85650343121,359.61381619398,366.50134650551,373.52079096839,380.6746756467,384.69403121132,392.06191220286,399.57090708206,407.22371854314,411.52339231679,419.40512463865,427.43781242392,435.62434685833,440.22388881539,448.6553095271,457.24821364991,466.00569400686,470.92601754108,479.94546308962,489.13765420145,498.50589943595,503.76937659657,513.41785698047,523.2511306012],description:"StudLoco with Secor's minimax generator of 116.7155941 cents (5:9 exact). XH5, 1976"},miracle_12:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,336.03572815422,342.56848033562,359.46139971304,366.44956000397,384.52011812375,411.32572372413,440,470.6732130613,523.2511306012],description:"A 12-tone subset of Blackjack with six 4-7-9-11 tetrads"},miracle_12a:{frequencies:[261.6255653006,279.86396690685,299.37379946195,320.24370022528,342.56848033562,366.44956000397,391.99543598175,419.32216217931,448.5538823653,479.82339960115,489.15147723638,513.27277840175,523.2511306012],description:"A 12-tone chain of Miracle generators and subset of Blackjack"},"24erlich-keenan":{frequencies:[261.6255653006,266.71173469898,279.86396636799,285.30470202322,290.8512090818,299.37380003836,305.19381941867,320.24370022528,326.46944389922,342.56847967604,349.22823143301,356.01745305102,366.44956070954,373.5735760541,391.99543598175,399.61607958554,407.38487340641,419.32216137194,427.47405410759,448.55388322895,457.27405945401,479.82340237272,489.15147817819,498.66089778183,523.2511306012],description:"24 note mapping for Erlich/Keenan Miracle scale low version, tuned to 72-equal"},miracle_8:{frequencies:[261.6255653006,279.86396690685,314.13668154225,336.03572815422,366.44956000397,391.99543598175,419.32216217931,448.5538823653,523.2511306012],description:"tet3a in 72-et"},miring1:{frequencies:[261.6255653006,285.29448470177,307.6953604706,387.15515639797,420.96788906714,523.2511306012],description:"Gamelan Miring from Serdang wetan, Tangerang. 1/1=309.5 Hz"},miring2:{frequencies:[261.6255653006,279.34865171253,304.66723527068,384.42070010042,412.69311132744,523.2511306012],description:"Gamelan Miring (Melog gender) from Serdang wetan"},misca:{frequencies:[261.6255653006,274.70684356563,289.16509849014,305.22982618403,348.83408706747,392.4383479509,412.06026534844,433.74764773521,457.84473927605,523.2511306012],description:"21/20 x 20/19 x 19/18=7/6 7/6 x 8/7=4/3"},miscb:{frequencies:[261.6255653006,269.80136421624,278.50463402967,319.76457981184,348.83408706747,392.4383479509,404.70204632437,417.75695104451,479.64686971777,523.2511306012],description:"33/32 x 32/31x 31/27=11/9 11/9 x 12/11=4/3"},miscc:{frequencies:[261.6255653006,276.00059636107,292.04714266113,310.07474405997,348.83408706747,392.4383479509,414.00089454161,438.0707139917,465.11211608996,523.2511306012],description:"96/91 x 91/86 x 86/54=32/27. 32/27 x 9/8=4/3."},miscd:{frequencies:[261.6255653006,271.68808704293,282.55561052465,294.32876096318,348.83408706747,392.4383479509,407.5321305644,423.83341578697,441.49314144476,523.2511306012],description:"27/26 x 26/25 x 25/24=9/8. 9/8 x 32/27=4/3."},misce:{frequencies:[261.6255653006,280.31310567921,301.87565226992,327.03195662575,348.83408706747,392.4383479509,420.46965851882,452.81347840488,490.54793493862,523.2511306012],description:"15/14 x 14/13 x 13/12=5/4. 5/4 x 16/15= 4/3."},miscf:{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,378.42269266694,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh1"},miscg:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,504.56359022259,523.2511306012],description:"SupraEnh 2"},misch:{frequencies:[261.6255653006,271.31540105247,279.06726965397,336.37572681506,348.83408706747,392.4383479509,406.97310157871,490.54793493862,504.56359022259,523.2511306012],description:"SupraEnh 3"},misty:{frequencies:[261.6255653006,268.57642185399,270.57706033988,272.59260010205,274.62315370363,276.66883458144,284.01936005382,286.13503371773,288.26646546986,290.41377434565,292.57708030445,300.35025535204,302.58757688062,304.84156607104,307.11234355974,309.40003795144,311.70477168653,319.9861304005,322.36972224007,324.77106769218,327.19030275625,329.62755691287,338.38508739928,340.90573394089,343.44515491415,346.00349213972,348.58088853904,357.84197030948,360.50755209334,363.19298782427,365.89842747751,368.62402219236,378.41760905933,381.23645754858,384.07630597582,386.93730633346,389.81962065329,392.72340320054,403.157261366,406.16039889903,409.18590458221,412.23394976407,415.30469757995,426.33849458487,429.51431022199,432.71378016074,435.93708308397,439.18439906139,450.85263092877,454.21105352848,457.59449053401,461.00313090234,464.43716505707,476.77631130474,480.3278378528,483.9058226648,487.51045723915,491.14194572312,494.80048247871,507.94632001299,511.73003620658,515.54193450341,519.38223078906,523.2511306012],description:"Misty temperament, g=96.787939, p=400, 5-limit"},mistyschism:{frequencies:[261.6255653006,278.75251614148,294.32876096318,310.42486507835,330.74639366397,348.83408706747,372.08969287196,392.4383479509,418.12877421223,440.99519155196,465.63729761752,496.11959049595,523.2511306012],description:"Mistyschism scale 32805/32768 and 67108864/66430125"},mixed9_3:{frequencies:[261.6255653006,273.20871865617,285.30470202322,311.12698372208,349.22823143301,391.99543598175,409.35055662695,427.47405410759,466.16376151809,523.2511306012],description:"A mixture of the hemiolic chromatic and diatonic genera, 75 + 75 + 150 + 200 c"},mixed9_4:{frequencies:[261.6255653006,271.89678302796,282.57123920205,305.19382000629,349.22823143301,391.99543598175,407.38487419079,423.37848741825,457.27406033445,523.2511306012],description:'Mixed enneatonic 4, each "tetrachord" contains 67 + 67 + 133 + 233 cents.'},mixed9_5:{frequencies:[261.6255653006,277.18263097687,293.66476791741,329.62755691287,349.22823143301,391.99543598175,415.30469757995,440,493.88330125613,523.2511306012],description:"A mixture of the intense chromatic genus and the permuted intense diatonic"},mixed9_6:{frequencies:[261.6255653006,277.18263097687,293.66476791741,311.12698372208,349.22823143301,391.99543598175,415.30469757995,440,466.16376151809,523.2511306012],description:"Mixed 9-tonic 6, Mixture of Chromatic and Diatonic"},mixed9_7:{frequencies:[261.6255653006,277.18263097687,311.12698372208,329.62755691287,349.22823143301,391.99543598175,415.30469757995,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 7, Mixture of Chromatic and Diatonic"},mixed9_8:{frequencies:[261.6255653006,293.66476791741,311.12698372208,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012],description:"Mixed 9-tonic 8, Mixture of Chromatic and Diatonic"},mixol_chrom:{frequencies:[261.6255653006,274.08392555301,287.78812183066,302.93486508491,311.12229387098,319.76457981184,359.73515228832,411.12588832951,426.35277308246,434.39716502741,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,605.86973016981,622.24458774197,639.52915962369,719.47030457665,822.25177665903,852.70554616492,868.79433005482,885.50191332511,959.29373943553,1046.5022612024],description:"Mixolydian chromatic tonos"},mixol_chrom2:{frequencies:[261.6255653006,271.31540105247,281.75060878526,332.97799220076,366.27579142084,385.55346465352,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the chromatic genus"},mixol_chrominv:{frequencies:[261.6255653006,279.06726965397,299.00064605783,373.75080757229,411.12588832951,429.81342870813,448.50096908674,523.2511306012],description:"A harmonic form of Schlesinger's Chromatic Mixolydian inverted"},mixol_diat:{frequencies:[261.6255653006,274.08392555301,287.78812183066,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,442.75095666255,460.46099492906,479.64686971777,500.50108144463,523.2511306012,548.16785110602,575.57624366132,639.52915962369,677.14852195449,719.47030457665,767.43499154843,822.25177665903,885.50191332511,920.92198985811,959.29373943553,1001.00216288925,1046.5022612024],description:"Mixolydian diatonic tonos"},mixol_diat2:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,348.83408706747,366.27579142084,406.97310157871,457.84473927605,523.2511306012],description:"Schlesinger's Mixolydian Harmonia, a subharmonic series though 13 from 28"},mixol_diatcon:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"A Mixolydian Diatonic with its own trite synemmenon replacing paramese"},mixol_diatinv2:{frequencies:[261.6255653006,299.00064605783,336.37572681506,348.83408706747,373.75080757229,411.12588832951,448.50096908674,485.87604984397,523.2511306012],description:"Inverted Schlesinger's Mixolydian Harmonia, a harmonic series from 14 from 28"},mixol_enh:{frequencies:[261.6255653006,274.08392555301,287.78812183066,295.1673044417,299.00064605783,302.93486508491,348.83408706747,411.12588832951,418.60090448096,422.44127975143,426.35277308246,469.85815809087,523.2511306012,548.16785110602,575.57624366132,590.33460888341,598.00129211566,605.86973016981,697.66817413493,822.25177665903,837.20180896192,844.88255950285,852.70554616492,939.71631618175,1046.5022612024],description:"Mixolydian Enharmonic Tonos"},mixol_enh2:{frequencies:[261.6255653006,266.38239376061,271.31540105247,332.97799220076,366.27579142084,375.66747838035,385.55346465352,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the enharmonic genus"},mixol_enhinv:{frequencies:[261.6255653006,270.34641747729,279.06726965397,373.75080757229,411.12588832951,420.46965851882,429.81342870813,523.2511306012],description:"A harmonic form of Schlesinger's Mixolydian inverted"},mixol_penta:{frequencies:[261.6255653006,269.32043486826,281.75060878526,332.97799220076,366.27579142084,381.53728273004,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the pentachromatic genus"},mixol_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,411.12588832951,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,822.25177665903,885.50191332511,959.29373943553,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Mixolydian Tonos"},mixol_tri1:{frequencies:[261.6255653006,268.0066766494,274.70684356563,332.97799220076,366.27579142084,378.90599112501,392.4383479509,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the first trichromatic genus"},mixol_tri2:{frequencies:[261.6255653006,268.0066766494,281.75060878526,332.97799220076,366.27579142084,378.90599112501,406.97310157871,523.2511306012],description:"Schlesinger's Mixolydian Harmonia in the second trichromatic genus"},mmmgeo1:{frequencies:[261.6255653006,291.52662303231,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo2:{frequencies:[261.6255653006,295.05751399041,323.4477810403,352.62279726972,392.9238840789,430.73079539701,485.77193724523,529.58860866211],description:"Scale for MakeMicroMusic in Peppermint 24, maybe a bit like Georgian tunings"},mmmgeo3a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,463.96335069158,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4a:{frequencies:[261.6255653006,281.81099471089,317.822348206,348.40303271111,392.9238840789,423.23948674937,477.32335087626,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmmgeo4b:{frequencies:[261.6255653006,295.05751399041,323.4477810403,348.40303271111,392.9238840789,430.73079539701,485.77193724523,523.2511306012],description:'Peppermint 24 scale for MakeMicroMusic, maybe a bit "Georgian-like"?'},mmswap:{frequencies:[261.6255653006,251.16054268858,294.32876096318,282.55561052465,313.95067836072,348.83408706747,353.19451315581,392.4383479509,376.74081403286,418.60090448096,423.83341578697,470.92601754108,523.2511306012],description:"Swapping major and minor in 5-limit JI"},mokhalif:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,425.01198472693,477.05982293263,523.2511306012],description:"Iranian mode Mokhalif from C"},montvallon:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Montvallon's Monochord, Nouveau sisteme de musique (1742)"},monzismic:{frequencies:[261.6255653006,265.20988799749,268.52946324281,272.20837072565,275.61554447717,279.39153269358,282.88861654172,286.76424730356,290.69297498385,294.33151655947,298.3639173457,302.09847446042,306.23728412706,310.07039048391,314.31841699833,318.25267316085,322.61279858837,327.03265671938,331.12605620426,335.66254762155,339.86396564906,344.52016812641,348.83245514045,353.61152766937,358.03760933268,362.94279426564,367.48567344471,372.52029869489,377.62390147213,382.35053879638,387.58881783384,392.44018387738,397.81669307529,402.79607923799,408.31446627855,413.42525081527,419.08925963743,424.33490995001,430.14838328955,436.04150237937,441.49934027584,447.54796975207,453.14983163098,459.35807517454,465.10776160818,471.47983118983,477.38124304179,483.92146177974,489.97860285142,496.69140794435,503.49617981289,509.7983334288,516.78267280423,523.2511306012],description:"Monzismic temperament, g=249.018448, 5-limit"},sevengroups:{frequencies:[261.6255653006,261.6255653006,275.62199471997,265.19499215873,270.69536599394,266.7406479561],description:"Here are some suggestions for a logical system encompassing intervals into seven broad groups: skhisma, kleisma, comma,"},"monzo-sym-11":{frequencies:[261.6255653006,269.80136421624,276.76092858245,279.06726965397,285.40970760065,286.15296204753,287.78812183066,294.32876096318,299.00064605783,304.4370214407,305.22982618403,313.95067836072,314.76825825228,327.03195662575,332.97799220076,334.88072358477,341.71502406609,343.38355445704,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,398.6675280771,400.61414686654,408.78994578219,411.12588832951,418.60090448096,434.91003062957,436.04260883433,448.50096908674,449.66894036041,457.84473927605,465.11211608996,475.68284600109,478.40103369253,479.64686971777,490.54793493862,494.63583439645,507.3950357345,523.2511306012],description:"Monzo symmetrical system: 11-limit"},"monzo-sym-5":{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 5-limit"},"monzo-sym-7":{frequencies:[261.6255653006,279.06726965397,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,478.40103369253,490.54793493862,523.2511306012],description:"Monzo symmetrical system: 7-limit"},monzo_sumerian_2place12:{frequencies:[261.6255653006,277.17835052447,293.68632213351,311.15032543183,329.66469551353,349.22211163595,369.93402791915,391.94841243536,415.27867508032,439.91220695103,466.03267445926,493.6331420766,523.2511306012],description:"Monzo - most accurate 2-place sexagesimal 12-tET approximation"},monzo_sumerian_simp12:{frequencies:[261.6255653006,277.34158865788,293.41184893525,310.84225580269,329.78012432849,348.83408706747,370.22485655745,392.4383479509,415.27867508032,440.11777340288,466.26338370404,493.6331420766,523.2511306012],description:"Monzo - simplified 2-place sexagesimal 12-tET approximation"},morgan:{frequencies:[261.6255653006,277.18263097687,294.07958763262,310.86358783941,330.18637907377,349.03110370139,370.30791823326,392.32757291716,415.07027187895,440.74593809176,465.76911360306,494.58094207912,523.2511306012],description:"Augustus de Morgan's temperament (1843)"},"mos11-34":{frequencies:[261.6255653006,272.51337835337,301.75671459889,314.3146261019,348.04364484358,362.52783176564,377.61479489998,418.13653788176,435.53771116377,453.66305442345,502.34551296122,523.2511306012],description:"Wilson 11 of 34-tET, G=9, Chain of minor & major thirds with Kleismatic fusion"},"mos12-17":{frequencies:[261.6255653006,272.51337835337,283.85429714132,307.97166902637,320.78822215662,348.04364484358,362.52783176564,377.61479489998,409.69842558521,426.7484383229,463.0066556268,482.27514684959,523.2511306012],description:"MOS 12 of 17, generator 7"},"mos12-22":{frequencies:[261.6255653006,287.56082683758,296.76515515861,326.18384711731,336.62443200122,347.39920007397,381.83730669135,394.05926325844,433.12283887627,446.9863572706,491.29666030217,507.02222283506,523.2511306012],description:"MOS 12 of 22, contains nearly just, recognizable diatonic, and pentatonic scales"},"mos13-22":{frequencies:[261.6255653006,278.64197723942,296.76515515861,316.06708432391,326.18384711731,347.39920007397,369.99442271164,381.83730669135,406.67242132093,433.12283887627,446.9863572706,476.05883716226,507.02222283506,523.2511306012],description:"MOS 13 of 22, contains 5 and 9 tone MOS as well. G=5 or 17"},"mos15-22":{frequencies:[261.6255653006,278.64197723942,287.56082683758,306.26409645618,316.06708432391,336.62443200122,347.39920007397,369.99442271164,381.83730669135,406.67242132093,419.68930726506,446.9863572706,461.29362042034,491.29666030217,507.02222283506,523.2511306012],description:"MOS 15 in 22, contains 7 and 8 tone MOS as well. G= 3 or 19"},moscow:{frequencies:[261.6255653006,277.4816141504,293.64820765919,311.48626315692,329.67368081467,349.7414907984,370.88289054572,392.4383479509,416.22242101754,440.4723112686,467.22939450183,494.51052097482,523.2511306012],description:"Charles E. Moscow's equal beating piano tuning (1895)"},mundeuc45:{frequencies:[261.6255653006,267.57160087561,269.80136421624,271.31540105247,274.70684356563,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,499.46698830115,504.56359022259,507.3950357345,513.90736041189,523.2511306012],description:"Euclidean reduced detempered Miracle[45] with Tenney tie-breaker"},musaqa:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,427.47405410759,466.16376151809,523.2511306012],description:"Egyptian scale by Miha'il Musaqa"},musaqa_24:{frequencies:[261.6255653006,269.02051582234,276.67624041581,284.6011815168,292.80374147632,300.29158209195,310.07474405997,319.15917884888,328.55303549378,338.26335715633,348.29659232622,358.65845048745,369.35373924791,380.38618160659,391.75821216589,403.47075130695,415.52295665389,427.91195157543,440.63253103259,453.67684579974,467.03406698289,480.69003385373,494.62688932105,508.8227088795,523.2511306012],description:"from d'Erlanger vol.5, p.34, after Mih.a'il Mu^saqah, 1899, a Lebanese scholar"},myna23:{frequencies:[261.6255653006,267.85369360167,274.23008563259,291.58574485564,298.52709031489,305.63367799752,312.90944157785,320.35840837329,327.98470157359,348.7424193045,357.04440817535,365.54403007102,374.24598974517,383.15510395049,392.27630410488,417.10295228105,427.03229805648,437.19801690717,447.60573581317,458.26121570764,469.17035466565,498.86352554567,510.73922293119,522.89762727195],description:"23 notes of Myna temperament, 7-limit TOP tuning (Paul Erlich)"},"mystic-r":{frequencies:[261.6255653006,367.91095120397,465.11211608996,654.0639132515,872.08521766867,1177.3150438527],description:"Skriabin's mystic chord, op. 60 rationalised"},mystic:{frequencies:[261.6255653006,369.99442271164,466.16376151809,659.25511382574,880,1174.65907166964],description:"Skriabin's mystic chord, op. 60"},urmawi:{frequencies:[261.6255653006,294.32876096318,326.6631048533,348.83408706747,392.4383479509,441.49314144476,471.45776383774,523.2511306012],description:"al-Urmawi, one of twelve maqam rows. First tetrachord is Rast"},valentine:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,330.47439827444,348.83408706747,371.78369805875,392.4383479509,414.24047839262,440.63253103259,466.02053819169,495.71159741166,523.2511306012],description:"Robert Valentine, tuning with primes 3 & 19, TL 7-2-2002"},valentine2:{frequencies:[261.6255653006,286.10322937235,312.87102146627,349.87955533643,382.6142546815,418.41160951721,467.90420651233,511.68128147674,559.55413558945,625.74204293254,684.28641150324,748.30818586768,782.53142116911,855.74498969389,935.80841302466,1046.5022612024],description:"Robert Valentine, two octave 31-tET subset for guitar, TL 10-5-2002"},vallotti:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.6228209638,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Vallotti & Young scale (Vallotti version)"},vavoom:{frequencies:[164.81377845643,165.83014536684,167.75567809608,168.79018601865,170.75008918846,172.7327497266,173.79795102719,175.81600173949,176.90021569146,178.95428827501,180.05785630665,182.14859375797,184.26360775673,185.39991601304,187.55268266167,188.70927492235,190.90046811205,192.07770535997,194.30800987601,196.56421264146,197.77637683895,200.07285246365,201.3066535986,203.64411977036,206.00872855044,207.27913480479,209.68595147418,210.9790342774,213.42881100738,214.74497512464,217.23848121866,219.76094059848,221.11615343515,223.68363702025,225.06304018178,227.6763542391,229.0803795269,231.74034082302,234.43118684139,235.87686755635,238.61574610914,240.08723199411,242.87499909192,244.37274935352,247.21027763268,250.08075380295,251.62294163139,254.54465534315,256.1143694988,259.0882353168,260.68597011615,263.71291896434,266.77501515601,268.42015092639,271.53690502834,273.21140777811,276.38379544331,278.08818779989,281.31720045362,284.58370833477,286.33866758091,289.66348210637,291.44976709494,294.83392732599,296.65209720599,300.09666587055,303.58123106099,305.45334345815,309.00010579622,310.90563508986,314.51570836542,316.45525105281,320.12976356015,323.84694071013,325.84402686189,329.62755691286],description:"Vavoom temperament, g=111.875426, 5-limit"},veroli:{frequencies:[261.6255653006,276.87699530057,293.57148765354,310.97965314221,329.42008585855,349.28270065725,369.64409253099,391.93430587921,414.97617910427,439.79164309579,466.09106516521,493.49262474744,523.2511306012],description:"Claudio di Veroli's well temperament (1978)"},vertex_chrom:{frequencies:[261.6255653006,271.89678302796,317.17549194805,349.22823143301,391.99543598175,407.38487419079,448.5538823653,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 266.7 + 166.7 cents"},vertex_chrom2:{frequencies:[261.6255653006,274.52698453615,323.3415889232,349.22823143301,391.99543598175,411.32572372413,484.46499093218,523.2511306012],description:"A vertex tetrachord from Chapter 5, 83.3 + 283.3 + 133.3 cents"},vertex_chrom3:{frequencies:[261.6255653006,275.18850165466,324.90175210669,349.22823143301,391.99543598175,412.31687950427,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 287.5 + 125 cents"},vertex_chrom4:{frequencies:[261.6255653006,275.40936140075,325.42347822215,349.22823143301,391.99543598175,412.64779522483,487.58430040208,523.2511306012],description:"A vertex tetrachord from Chapter 5, 88.9 + 288.9 + 122.2 cents"},vertex_chrom5:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 133.3 + 266.7 + 100 cents"},vertex_diat:{frequencies:[261.6255653006,299.37379946195,323.3415889232,349.22823143301,391.99543598175,448.5538823653,484.46499932732,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 133.3 + 133.3 cents"},vertex_diat10:{frequencies:[261.6255653006,295.79278388132,324.90175210669,349.22823143301,391.99543598175,443.18842137843,486.80259447109,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 162.5 + 125 cents"},vertex_diat11:{frequencies:[261.6255653006,295.79278388132,306.66641795878,349.22823143301,391.99543598175,443.18842137843,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 62.5 + 225 cents"},vertex_diat12:{frequencies:[261.6255653006,293.66476791741,315.65242990842,349.22823143301,391.99543598175,440,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 125 + 175 cents"},vertex_diat2:{frequencies:[261.6255653006,299.37379946195,329.62755691287,349.22823143301,391.99543598175,448.5538823653,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.3 + 166.7 + 100 cents"},vertex_diat3:{frequencies:[261.6255653006,273.20871865617,311.12698372208,349.22823143301,391.99543598175,409.35055662695,466.16376151809,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 225 + 200 cents"},vertex_diat4:{frequencies:[261.6255653006,297.93622032612,329.62755691287,349.22823143301,391.99543598175,446.39994737251,493.88330125613,523.2511306012],description:"A vertex tetrachord from Chapter 5, 225 + 175 + 100 cents"},vertex_diat5:{frequencies:[261.6255653006,275.18850165466,315.65242990842,349.22823143301,391.99543598175,412.31687950427,472.94426956511,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 237.5 + 175 cents"},vertex_diat7:{frequencies:[261.6255653006,293.66476791741,306.66641795878,349.22823143301,391.99543598175,440,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 200 + 75 + 225 cents"},vertex_diat8:{frequencies:[261.6255653006,277.18263097687,306.66641795878,349.22823143301,391.99543598175,415.30469757995,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 100 + 175 + 225 cents"},vertex_diat9:{frequencies:[261.6255653006,295.79278388132,320.24370022528,349.22823143301,391.99543598175,443.18842137843,479.82340237272,523.2511306012],description:"A vertex tetrachord from Chapter 5, 212.5 + 137.5 + 150 cents"},vertex_sdiat:{frequencies:[261.6255653006,275.18850165466,306.66641795878,349.22823143301,391.99543598175,412.31687950427,459.48046426806,523.2511306012],description:"A vertex tetrachord from Chapter 5, 87.5 + 187.5 + 225 cents"},vertex_sdiat2:{frequencies:[261.6255653006,273.20871865617,302.26980244078,349.22823143301,391.99543598175,409.35055662695,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 75 + 175 + 250 cents"},vertex_sdiat3:{frequencies:[261.6255653006,265.43099677612,302.26980244078,349.22823143301,391.99543598175,397.69714089209,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 25 + 225 + 250 cents"},vertex_sdiat4:{frequencies:[261.6255653006,271.8968348557,302.26980244078,349.22823143301,391.99543598175,407.38495184466,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 66.7 + 183.3 + 250 cents"},vertex_sdiat5:{frequencies:[261.6255653006,299.37374239667,302.26980244078,349.22823143301,391.99543598175,448.55379686399,452.89298412314,523.2511306012],description:"A vertex tetrachord from Chapter 5, 233.33 + 16.67 + 250 cents"},vicentino1:{frequencies:[261.6255653006,267.54129532085,273.59078691818,279.77706779472,286.10322937235,292.57243455474,295.8616864168,299.18791603519,305.95298478736,312.87102146627,319.94548489658,327.17991022208,330.85823737058,334.57791819083,342.14320575162,349.87955533643,357.79083283678,365.88099775759,374.15409293384,382.6142546815,391.26571058456,395.66452371628,400.11279059885,409.15991580663,418.41160951721,427.87249484695,437.54730686196,442.46644183113,447.44088028055,457.55816161244,467.90420651233,478.48419305869,489.30340830564,494.80441235385,500.36726155789,511.68128147674,523.2511306012],description:"Usual Archicembalo tuning, 31-tET plus D,E,G,A,B a 10th tone higher"},vicentino2:{frequencies:[261.6255653006,262.40966637115,273.59078691818,274.41074818102,279.77706779472,280.61556956011,292.57243455474,293.44928279173,305.95298478736,306.86993670158,312.87102146627,313.80870698104,327.17991022208,328.16047998243,342.14320575162,343.16862103779,349.87955533643,350.92815470883,365.88099775759,366.97755604579,374.15409293384,391.26571058456,392.4383479509,409.15991580663,410.38618254261,418.41160951721,419.66560148231,437.54730686196,438.85865161274,457.55816161244,458.92947695163,467.90420651233,469.30653196482,489.30340830564,490.7698679226,511.68128147674,523.2511306012],description:"Alternative Archicembalo tuning, lower 3 rows the same upper 3 rows 3/2 higher"},vicentino2q217:{frequencies:[261.6255653006,262.46259217279,273.59078691818,274.46609608433,279.77706779472,280.67216895906,292.57243455474,293.50847071582,305.95298478736,306.93183153514,312.87102146627,313.87199953275,327.17991022208,328.2266690608,342.14320575162,343.23783523487,349.87955533643,350.99893596542,365.88099775759,367.05157442308,374.15409293384,391.26571058456,392.51750150462,409.15991580663,410.46895395112,418.41160951721,419.7502468954,437.54730686196,438.9471656765,457.55816161244,459.02204178186,467.90420651233,469.40118981889,489.30340830564,490.86885203792,511.68128147674,523.2511306012],description:"Vicentino's second tuning, 217-tET version"},vicentino36:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,279.93529690293,280.80602334765,292.50627485027,293.41610276971,305.64177427204,306.59245933664,312.97717714283,313.95067836072,327.03195662575,328.04917632434,341.71789064962,349.91912034749,351.00752840096,365.63284274659,366.77012764335,374.40803131735,375.5726110527,391.22147055517,392.4383479509,408.78994578219,410.06146948999,418.60090448096,419.90294514449,437.39889945791,438.75941205608,457.04105505291,458.46266117889,468.01003810189,469.46576276783,489.02683710225,490.54793493862,510.98743222773,523.2511306012],description:"Vicentino's second tuning of 1555"},victor_eb:{frequencies:[261.6255653006,276.45300885359,293.16631378471,311.00963644582,328.52867116285,348.83408706747,368.60401198904,391.83966133014,414.6795130731,439.03603741286,465.77732204887,492.79300649794,523.2511306012],description:"Equal beating Victorian piano temperament, interpr. by Bill Bremmer (improved)"},victorian:{frequencies:[261.6255653006,276.5429423948,293.32570896007,310.76776326996,328.29744538229,349.22823143301,368.92737853004,391.99543598175,414.58565256441,438.73106346722,465.89457252293,492.17459484008,523.2511306012],description:"Form of Victorian temperament (1885)"},vitale1:{frequencies:[261.6255653006,280.31310567921,294.32876096318,305.22982618403,327.03195662575,336.37572681506,343.38355445704,348.83408706747,373.75080757229,392.4383479509,420.46965851882,441.49314144476,457.84473927605,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Rami Vitale's 7-limit just scale"},vitale2:{frequencies:[261.6255653006,274.70684356563,294.32876096318,299.00064605783,305.22982618403,313.95067836072,336.37572681506,348.83408706747,366.27579142084,392.4383479509,412.06026534844,441.49314144476,448.50096908674,457.84473927605,470.92601754108,504.56359022259,523.2511306012],description:"Rami Vitale, inverse mode of vitale1"},vitale3:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,412.06026534844,420.46965851882,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,515.07533168556,523.2511306012],description:"Superset of several Byzantine scales by Rami Vitale, TL 29-Aug-2001"},vogel_21:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,310.07474405997,313.95067836072,321.55899383997,330.74639366397,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,413.43299207996,418.60090448096,428.74532511996,440.99519155196,465.11211608996,482.33849075995,496.11959049595,523.2511306012],description:"Martin Vogel's 21-tone Archytas system, see Divisions of the tetrachord"},vogelh_b:{frequencies:[261.6255653006,276.37000081643,292.73769384471,310.07474405997,327.54963108844,349.78078158391,367.49599295996,391.37619916626,413.43299207996,437.91808280662,465.11211608996,489.99465727995,523.2511306012],description:"Harald Vogel's temperament, van Eeken organ in Bunschoten, Immanuelkerk, 1992"},vogelh_fisk:{frequencies:[261.6255653006,274.01856817608,292.73769384471,312.85332572834,327.54963108844,349.78078158391,366.49445363528,391.37619916626,409.75340805561,437.91808280662,467.82492621575,489.99465727995,523.2511306012],description:"Modified meantone tuning of Fisk organ in Memorial Church at Stanford"},vogelh_hb:{frequencies:[261.6255653006,276.50527247638,293.79744652436,312.85332572834,329.92547760025,349.78078158391,369.82037393809,392.08397832814,413.47189899094,440.29822362186,467.82492621575,494.44133512215,523.2511306012],description:"Harald Vogel hybrid meantone (1984)"},vogelh_jakobi:{frequencies:[261.6255653006,275.2485073924,292.86986732103,310.4251397446,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.87276088221,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Harald Vogel's temperament for the Schnitger organ in St. Jakobi, Hamburg"},volans:{frequencies:[261.6255653006,288.78654445823,322.09885310804,352.06379107796,388.6137256405,429.95038611107,482.60299106564,523.2511306012],description:"African scale according to Kevin Volans 1/1=G"},vong:{frequencies:[261.6255653006,287.78812183066,324.77656382143,353.19451315581,392.4383479509,431.68218274599,476.53227965466,523.2511306012],description:"Vong Co Dan Tranh scale, Vietnam"},"vries19-72":{frequencies:[261.6255653006,271.89678302796,282.57123920205,293.66476791741,305.19382000629,314.13668154225,326.46944327063,339.28638158975,352.60650301302,366.44956000397,377.18735172911,391.99543598175,407.38487419079,423.37848741825,452.89298412314,470.6732130613,489.15147723638,508.3551866238,523.2511306012],description:"Leo de Vries 19/72 Through-Transposing-Tonality 18 tone scale"},"vries35-72":{frequencies:[261.6255653006,320.24370022528,326.46944327063,332.81622067851,339.28638158975,345.88232658126,352.60650301302,359.46139971304,366.44956000397,448.5538823653,457.27406033445,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Leo de Vries 35/72 Through-Transposing-Tonality 17 tone scale"},"vries5-72":{frequencies:[261.6255653006,269.29177952703,274.52698453615,282.57123920205,288.06460709314,296.5055443788,302.26980244078,317.17549194805,332.81622067851,349.22823143301,366.44956000397,384.52011812375,403.48177901006,423.37848741825,444.25635547592,466.16376151809,489.15147723638,513.27277840175,523.2511306012],description:"Leo de Vries 5/72 Through-Transposing-Tonality 18 tone scale"},"vries6-31":{frequencies:[261.6255653006,292.57243455474,299.18791603519,334.57791819083,342.14320575162,382.6142546815,391.26571058456,437.54730686196,447.44088028055,500.36726155789,511.68128147674,523.2511306012],description:'Leo de Vries 6/31 TTT used in "For 31-tone organ" (1995)'},vulture:{frequencies:[261.6255653006,265.58852967049,269.02996542365,272.51599294435,276.04719319079,279.62414831161,283.24745441839,286.9177088442,290.63552324927,294.40151054717,298.21629835234,302.73351960911,306.6562716924,310.62985211059,314.65492307423,318.73214815075,322.86220682342,327.0457799678,331.28356479042,335.57625992643,339.9245807679,344.32924417279,349.54496173019,354.07428378691,358.66229781376,363.30976018416,368.01744541334,372.78612960355,377.61660747204,382.50967536449,387.46614872711,392.486844677,398.43202813578,403.59481739244,408.82450722915,414.12195980508,419.48805795853,424.92368633675,430.42975080549,436.00715908665,441.65684067409,447.37972696622,453.17677170128,460.0412514682,466.0023613576,472.04071122634,478.15730738573,484.35315820906,490.6292962557,496.98675620078,503.42659462849,509.94988192555,516.55769649554,523.2511306012],description:"Vulture temperament, g=475.542233, 5-limit"},walker_21:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,327.03195662575,336.37572681506,348.83408706747,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:'Douglas Walker, 1977, for "out of the fathomless dark/into the limitless light'},walkerr_11:{frequencies:[261.6255653006,291.47537246454,299.00064605783,333.11471138804,341.71502406609,380.70252730062,390.53145607553,435.08860262928,484.72943438718,497.2441172906,510.08190181294,523.2511306012],description:'Robert Walker, "Seven to Pi" scale, TL 09-07-2002'},wauchope:{frequencies:[261.6255653006,274.70684356563,305.22982618403,327.03195662575,366.27579142084,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Symmetrical 7-limit JI whole-half step scale, Ken Wauchope"},wendell1:{frequencies:[261.6255653006,276.25045813601,293.35468319005,310.78176509232,328.42642049784,348.83408706747,369.47972269069,391.8804287311,414.37568699689,438.92294511207,466.17264740545,492.63963050051,523.2511306012],description:"Robert Wendell's Natural Synchronous well-temperament (2003)"},wendell1r:{frequencies:[261.6255653006,276.25560153172,293.36810129327,310.78755172318,328.43721515437,348.83408706747,369.49186704867,391.89926583958,414.38340229758,438.93945576706,466.18132758477,492.65582273156,523.2511306012],description:"Rational version of wendell1 by Gene Ward Smith"},wendell2:{frequencies:[261.6255653006,276.37223575148,293.46077701205,310.91876490958,328.50868755512,348.91469434159,369.57235851938,392.00856887742,414.55835341999,438.92345217603,466.37814713124,492.76314493882,523.2511306012],description:"Robert Wendell's Very Mild Synchronous well-temperament (2003)"},werck1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"Werckmeister I (just intonation)"},werck3:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,491.65745674141,523.2511306012],description:"Andreas Werckmeister's temperament III (the most famous one, 1681)"},werck3_eb:{frequencies:[261.6255653006,275.62199471997,292.52927773082,310.07474405997,328.06371231954,348.83408706747,367.49599295996,391.41011079897,413.43299207996,437.41828331138,465.11211608996,492.10978071589,523.2511306012],description:"Werckmeister III equal beating version, 5/4 beats twice 3/2"},werck3_mod:{frequencies:[261.6255653006,275.62199471997,292.34127285051,310.07474405997,327.77163799145,348.83408706747,367.49599295996,391.11111150212,413.43299207996,437.02884834934,465.11211608996,490.82535372381,523.2511306012],description:"Modified Werckmeister III with B between E and F#, Nijsse (1997), organ Soest"},werck4:{frequencies:[261.6255653006,274.37997440822,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,390.66969766777,411.5699614066,437.52264545758,467.21778431035,489.99465727995,523.2511306012],description:"Andreas Werckmeister's temperament IV"},werck5:{frequencies:[261.6255653006,276.55731914056,294.32876096318,311.12698372208,328.88393162803,350.01785633742,369.99442271164,392.4383479509,413.43299207996,440,466.69047534984,493.32589719545,523.2511306012],description:"Andreas Werckmeister's temperament V"},werck6:{frequencies:[261.6255653006,275.69145590816,291.35574317567,310.77945938738,328.70904358281,348.83408706747,368.91086905696,391.43977709097,413.53718386224,438.27872477707,466.16918908107,493.06356537421,523.2511306012],description:`Andreas Werckmeister's "septenarius" tuning VI`},werck6_dup:{frequencies:[261.6255653006,275.62199471997,291.49363009634,310.67551062492,328.56569462012,348.83408706747,368.92162485303,391.67947347082,413.43299207996,438.08759304581,466.01326570444,492.84854168382,523.2511306012],description:"Andreas Werckmeister's VI in the interpretation by Dupont (1935)"},werck_cl5:{frequencies:[261.6255653006,274.56549986328,292.86986732103,309.97737261399,327.84547867349,349.70184487387,366.99801003998,391.46454285105,412.14811800305,438.2147004401,466.26912673157,490.54793493862,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/5-comma"},werck_cl6:{frequencies:[261.6255653006,275.36250599118,293.11251278827,310.35057963607,328.38895179964,349.55706816887,367.91095120397,391.62667645325,413.31226430431,438.75941205608,466.0760911248,491.56462836305,523.2511306012],description:"Werckmeister Clavier temperament (Nothw. Anm.) Poletti reconstr. 1/6-comma"},werck_puzzle:{frequencies:[261.6255653006,272.52663052146,291.60349465796,306.59245933664,327.03195662575,347.47145391486,365.18568489875,389.71308164569,408.78994578219,436.04260883433,461.93263873387,490.54793493862,523.2511306012],description:"From Hypomnemata Musica, 1697, p. 49, 1/1=192, fifths tempered superparticular"},white:{frequencies:[261.6255653006,275.93321340298,289.72987407313,294.32876096318,305.22982618403,310.42486507835,327.03195662575,331.11985608357,343.38355445704,348.83408706747,367.91095120397,386.30649876417,392.4383479509,406.97310157871,413.89982010446,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"Justin White's 22-tone scale based on Al-Farabi's tetrachord"},wicks:{frequencies:[261.6255653006,276.65728054629,293.45376109391,310.36444075595,329.26048109616,348.28499607284,369.54304125029,391.93835601961,414.48592121967,439.68064187634,465.04666232412,493.39072329352,523.2511306012],description:"Mark Wicks' equal beating temperament for organs (1887)"},wier_cl:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Danny Wier, ClownTone (2003)"},wiesse:{frequencies:[261.6255653006,277.49581689502,294.32876096318,312.18279369479,331.11985608357,348.83408706747,369.99442271164,392.4383479509,416.24372513446,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Von Wiesse's 1/2 Pyth. comma tuning"},wilson1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 19-tone Scott scale (1976)"},wilson11:{frequencies:[261.6255653006,271.31540105247,277.4816601673,291.35574317567,305.22982618403,312.16686768822,325.57848126297,332.97799220076,348.83408706747,366.27579142084,374.60024122586,392.4383479509,406.97310157871,416.22249025095,437.0336147635,457.84473927605,468.25030153232,488.36772189445,499.46698830115,523.2511306012],description:"Wilson 11-limit 19-tone scale, 1977"},wilson1t:{frequencies:[261.6255653006,273.34666024156,279.64601698606,292.92954243175,306.05308604033,313.10617410217,327.13365148064,334.67254769546,349.66622272551,366.27579142084,374.71672979763,391.50442319155,409.04422481132,418.47077311482,437.21869500104,457.98711402938,468.54156606881,489.53271107931,500.81414097667,523.2511306012],description:"Wilson's Scott scale, wilson1, in minimax minerva tempering"},wilson2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,392.4383479509,406.97310157871,418.60090448096,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 19-tone, 1975"},wilson3:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Wilson 19-tone"},wilson5:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson's 22-tone 5-limit scale"},wilson7:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson's 22-tone 7-limit 'marimba' scale"},wilson7_2:{frequencies:[261.6255653006,263.718569823,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,329.64821227876,343.38355445704,353.19451315581,366.27579142084,376.74081403286,392.4383479509,408.78994578219,412.06026534844,436.04260883433,439.53094970501,457.84473927605,470.92601754108,490.54793493862,494.47231841813,523.2511306012],description:"Wilson 7-limit scale"},wilson7_3:{frequencies:[261.6255653006,267.90457886781,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Wilson 7-limit scale"},wilson7_4:{frequencies:[261.6255653006,271.31540105247,279.06726965397,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,372.08969287196,387.59343007496,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 7-limit 22-tone scale XH 3, 1975"},wilson_17:{frequencies:[261.6255653006,275.93321340298,290.69507255622,294.32876096318,310.42486507835,327.03195662575,331.11985608357,348.83408706747,367.91095120397,372.50983809402,392.4383479509,413.89982010446,436.04260883433,441.49314144476,465.11211608996,490.54793493862,496.67978412536,523.2511306012],description:"Wilson's 17-tone 5-limit scale"},wilson_31:{frequencies:[261.6255653006,265.7783520514,271.31540105247,279.06726965397,285.40970760065,294.32876096318,299.00064605783,305.22982618403,313.95067836072,321.08592105074,327.03195662575,332.22294006425,339.14425131559,348.83408706747,354.37113606854,361.75386806997,372.08969287196,380.54627680087,392.4383479509,398.6675280771,406.97310157871,418.60090448096,428.11456140098,441.49314144476,448.50096908674,457.84473927605,470.92601754108,481.6288815761,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:"Wilson 11-limit 31-tone scale XH 3, 1975"},wilson_41:{frequencies:[261.6255653006,265.7783520514,271.31540105247,275.62199471997,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,321.08592105074,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.37113606854,361.75386806997,367.49599295996,372.08969287196,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,413.43299207996,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,481.6288815761,490.54793493862,496.67978412536,504.56359022259,515.07533168556,523.2511306012],description:"Wilson 11-limit 41-tone scale XH 3, 1975"},wilson_alessandro:{frequencies:[261.6255653006,265.58571790036,269.80136421624,270.50397193556,275.93321340298,278.232656848,284.55612632182,286.15296204753,288.53757006459,294.32876096318,295.09524211152,303.52653474327,304.3169684275,305.22982618403,309.14739649778,314.76825825228,321.92208230347,324.60476632267,327.03195662575,331.98214737546,337.2517052703,340.06213614756,343.38355445704,347.79082106,351.18772614924,354.11429053382,359.73515228832,365.180362113,367.91095120397,370.97687579734,379.40816842909,386.30649876417,391.2646736925,392.4383479509,393.46032281536,404.70204632437,405.75595790334,413.89982010446,417.348985272,419.69101100305,429.2294430713,432.80635509689,441.49314144476,442.64286316727,449.66894036041,456.47545264125,457.84473927605,463.72109474667,472.15238737843,482.88312345521,486.907149484,490.54793493862,494.63583439645,505.87755790546,515.07533168556,521.68623159,523.2511306012],description:"D'Alessandro, genus [3 3 3 5 7 11 11] plus 8 pigtails, XH 12, 1989"},wilson_bag:{frequencies:[261.6255653006,294.32876096318,318.85615771011,349.51540364377,392.4383479509,425.14154361347,466.02053819169,523.2511306012],description:"Erv's bagpipe, mar '97, after Theodore Podnos (37-39)."},wilson_class:{frequencies:[261.6255653006,272.52663052146,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,381.53728273004,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"Class Scale, Erv Wilson, 9 july 1967"},wilson_dia1:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,362.25078272391,371.78369805875,381.83190611439,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycles, tetrachordal form"},wilson_dia2:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle, conjunctive form"},wilson_dia3:{frequencies:[261.6255653006,268.51044859798,275.76748774928,283.42769574232,291.52562990638,300.09991313892,309.19384990071,318.85615771011,329.14184021688,340.11323489078,351.84127747322,364.40703738298,377.90359432309,392.4383479509,403.65087217807,415.52295665389,428.11456140098,441.49314144476,455.73485568492,470.92601754108,487.16484573215,504.56359022259,523.2511306012],description:"Wilson Diaphonic cycle on 3/2"},wilson_dia4:{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,324.77656382143,336.37572681506,348.83408706747,358.01393146398,381.83190611439,377.90359432309,388.70083987518,400.13321751856,412.25846653428,425.14154361347,438.85578695585,453.48431318771,469.12170329763,485.87604984397,503.87145909745,523.2511306012],description:"Wilson Diaphonic cycle on 4/3"},wilson_duo:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,361.75386806997,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Wilson 'duovigene'"},wilson_enh:{frequencies:[261.6255653006,264.37951861955,279.06726965397,348.83408706747,392.4383479509,396.56927792933,418.60090448096,523.2511306012],description:"Wilson's Enharmonic & 3rd new Enharmonic on Hofmann's list of superp. 4chords"},wilson_enh2:{frequencies:[261.6255653006,265.7783520514,275.62199471997,348.83408706747,392.4383479509,398.6675280771,413.43299207996,523.2511306012],description:"Wilson's 81/64 Enharmonic, a strong division of the 256/243 pyknon"},wilson_facet:{frequencies:[261.6255653006,271.31540105247,274.70684356563,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,366.27579142084,387.59343007496,392.4383479509,406.97310157871,412.06026534844,436.04260883433,452.19233508746,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson study in 'conjunct facets', Hexany based"},wilson_gh1:{frequencies:[261.6255653006,286.54684077898,313.84200313831,343.73718179912,398.2573899082,436.19359890902,477.74343791599,523.2511306012],description:"Golden Horagram nr.1: 1phi+0 / 7phi+1"},wilson_gh11:{frequencies:[261.6255653006,294.51148904212,316.87124012705,356.70145865606,383.78276711707,432.02365977685,464.82353976398,523.2511306012],description:"Golden Horagram nr.11: 1phi+0 / 3phi+1"},wilson_gh2:{frequencies:[261.6255653006,290.51361927671,322.59142140135,358.21117585067,382.16527586729,424.3630293795,471.22015545621,523.2511306012],description:"Golden Horagram nr.2: 1phi+0 / 6phi+1"},wilson_gh50:{frequencies:[261.6255653006,270.80964219588,280.31611759965,306.81496952381,317.58537244461,347.60736272384,359.80973785756,372.44046183271,407.64801512355,421.95805149354,461.8466031062,478.05922145,523.2511306012],description:"Golden Horagram nr.50: 7phi+2 / 17phi+5"},wilson_helix:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,425.14154361347,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"Wilson's Helix Song, see David Rosenthal, Helix Song, XH 7&8, 1979. Also Secor, 1964"},wilson_hypenh:{frequencies:[261.6255653006,266.38239376061,271.31540105247,348.83408706747,392.4383479509,399.57359064092,406.97310157871,523.2511306012],description:"Wilson's Hyperenharmonic, this genus has a CI of 9/7"},wilson_l1:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,314.76825825228,327.03195662575,337.2517052703,343.38355445704,359.73515228832,366.27579142084,377.72190990274,392.4383479509,404.70204632437,419.69101100305,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l2:{frequencies:[261.6255653006,267.07609791103,279.79400733536,287.78812183066,294.32876096318,305.22982618403,314.76825825228,327.03195662575,335.75280880244,348.83408706747,359.73515228832,373.05867644715,381.53728273004,392.4383479509,411.12588832951,419.69101100305,436.04260883433,447.67041173658,457.84473927605,479.64686971777,490.54793493862,503.62921320365,523.2511306012],description:"Wilson 11-limit scale"},wilson_l3:{frequencies:[261.6255653006,269.80136421624,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,332.97799220076,343.38355445704,359.73515228832,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 11-limit scale"},wilson_l4:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l5:{frequencies:[261.6255653006,267.07609791103,279.79400733536,285.40970760065,299.00064605783,305.22982618403,313.95067836072,327.03195662575,332.97799220076,348.83408706747,356.10146388137,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,479.64686971777,488.36772189445,508.71637697339,523.2511306012],description:"Wilson 11-limit scale"},wilson_l6:{frequencies:[261.6255653006,267.57160087561,277.4816601673,285.40970760065,294.32876096318,305.22982618403,312.16686768822,327.03195662575,332.97799220076,348.83408706747,356.76213450082,369.97554688974,381.53728273004,392.4383479509,406.97310157871,416.22249025095,436.04260883433,443.97065626768,457.84473927605,475.68284600109,490.54793493862,499.46698830115,523.2511306012],description:"Wilson 1 3 7 9 11 15 eikosany plus 9/8 and tritone. Used Stearns: Jewel"},window:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,297.67175429757,306.59245933664,327.03195662575,334.88072358477,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,446.50763144636,459.88868900496,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Window lattice"},wonder1:{frequencies:[261.6255653006,272.72256190885,277.86237426839,283.09905309511,288.43442562998,293.8703485525,299.4087202614,312.10830899518,317.99039712482,323.98334274799,330.08923137594,336.31019538088,342.64839962317,357.18202566262,363.91358676728,370.77201292014,377.75969724053,384.87907140314,392.13262172187,408.76514672187,416.46885901676,424.31776026786,432.3145818485,440.46211650535,448.76319953449,467.79774494453,476.61400354229,485.59641603135,494.74811665626,504.07229015717,513.57219283465,523.2511306012],description:"Wonder Scale, gen=~233.54 cents, 8/7+1029/1024^7/25, LS 12:14:18:21, M.Schulter"},wonder36:{frequencies:[261.6255653006,271.89678302796,277.18263097687,282.57123920205,288.06460709314,293.66476791741,299.37379946195,311.12698372208,317.17549194805,323.3415889232,329.62755691287,336.03572815422,342.56848033562,356.01745236555,362.93866220634,369.99442271164,377.18735172911,384.52011812375,391.99543598175,407.38487419079,415.30469757995,423.37848741825,431.60923940535,440,448.5538823653,466.16376151809,475.22628419761,484.46499093218,493.88330125613,503.48470957687,513.27277840175,523.2511306012],description:"Wonder Scale, 36-tET version"},wronski:{frequencies:[261.6255653006,277.97716313189,294.32876096318,308.86351459099,327.03195662575,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,463.29527188648,494.18162334558,523.2511306012],description:`Wronski's scale, from Jocelyn Godwin, "Music and the Occult", p. 105.`},wurschmidt:{frequencies:[261.6255653006,275.93321340298,294.32876096318,313.95067836072,331.11985608357,353.19451315581,367.91095120397,392.4383479509,413.89982010446,441.49314144476,470.92601754108,490.54793493862,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's normalised 12-tone system"},wurschmidt1:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,490.54793493862,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-1 19-tone scale"},wurschmidt2:{frequencies:[261.6255653006,272.52663052146,282.55561052465,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,484.4917875937,502.32108537715,523.2511306012],description:"W\xEF\xBF\xBDrschmidt-2 19-tone scale"},wurschmidt_31:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system"},wurschmidt_31a:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,372.08969287196,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,454.2110508691,465.11211608996,476.27480687611,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 31-tone system with alternative tritone"},wurschmidt_53:{frequencies:[261.6255653006,264.89588486686,267.90457886781,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,297.67175429757,301.39265122629,306.59245933664,310.07474405997,313.95067836072,319.36714514233,321.48549464138,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,396.89567239676,401.85686830172,408.78994578219,413.43299207996,418.60090448096,425.82286018978,428.6473261885,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.27480687611,484.4917875937,490.54793493862,496.11959049595,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"W\xEF\xBF\xBDrschmidt's 53-tone system"},wurschmidt_temp:{frequencies:[261.6255653006,270.6876810201,276.46178051834,282.35904862511,288.38211267756,294.53365605714,300.81641938515,307.23320174366,313.78686192261,320.48031969341,327.31655710978,338.6540596739,345.87796520471,353.25596548096,360.79134753214,368.48746850413,376.34775715481,384.37571538166,392.57491978195,400.94902556208,409.5017589506,423.68596790742,432.72370810117,441.95423435346,451.38165902684,461.01018486849,470.84409628664,480.88777706987,491.14570185547,501.62244073019,512.32266126632,523.2511306012],description:"W\xEF\xBF\xBDrschmidt temperament, 5-limit, g=387.744375, 5-limit"},"t-side":{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"Tau-on-Side"},"t-side2":{frequencies:[261.6255653006,294.32876096318,306.59245933664,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,459.88868900496,470.92601754108,490.54793493862,523.2511306012],description:"Tau-on-Side opposite"},tagawa_55:{frequencies:[261.6255653006,277.01530443593,277.97716313189,279.06726965397,280.31310567921,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,296.50897400735,299.00064605783,301.87565226992,305.22982618403,307.79478270659,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,356.76213450082,359.73515228832,362.25078272391,366.27579142084,369.35373924791,370.63621750918,373.75080757229,377.90359432309,380.54627680087,383.71749577421,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,442.75095666255,444.76346101102,448.50096908674,453.48431318771,457.84473927605,461.69217405988,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,488.36772189445,490.54793493862,492.47165233054,494.18162334558,523.2511306012],description:"Rick Tagawa, 17-limit diamond subset with good 72-tET approximation, 2003"},tamil:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,372.50983809402,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.67978412536,523.2511306012],description:"Possible Tamil sruti scale. Alternative 11th sruti is 45/32 or 64/45"},tamil_vi:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.91095120397,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale in Tamil music, Vidyasankar Sundaresan"},tamil_vi2:{frequencies:[261.6255653006,275.62199471997,290.69507255622,310.07474405997,327.03195662575,348.83408706747,367.49599295996,387.59343007496,413.43299207996,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Vilarippalai scale with 1024/729 tritone"},tanaka:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,331.11985608357,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,459.88868900496,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"26-note choice system of Shoh\xEF\xBF\xBD Tanaka, Studien i.G.d. reinen Stimmung (1890)"},tanbur:{frequencies:[261.6255653006,268.33391312882,275.39533189537,282.83844897362,290.69507255622,299.00064605783,306.66732929008,314.73752216614,323.24394168414,332.22294006425,341.71502406609,351.76546595039,523.2511306012],description:"Sub-40 tanbur scale"},tansur:{frequencies:[261.6255653006,275.71279889585,293.19126194179,310.07474405997,328.21516866261,348.83408706747,367.61706537823,391.78834765065,413.56919813705,438.48689188122,465.11211608996,491.022754507,523.2511306012],description:"William Tans'ur temperament from A New Musical Grammar (1746) p. 73"},tartini_7:{frequencies:[261.6255653006,294.32876096318,313.95067836072,367.91095120397,392.4383479509,418.60090448096,490.54793493862,523.2511306012],description:"Tartini (1754) with 2 neochromatic tetrachords, 1/1=d, Minor Gipsy (Slovakia)"},taylor_g:{frequencies:[261.6255653006,274.70684356563,287.78812183066,294.32876096318,313.95067836072,353.19451315581,366.27579142084,392.4383479509,412.06026534844,418.60090448096,431.68218274599,470.92601754108,523.2511306012],description:"Gregory Taylor's Dutch train ride scale based on pelog_schmidt"},taylor_n:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,348.83408706747,367.9112241576,391.33200541501,413.90012676351,437.76975193523,465.63764214343,491.10256480205,523.2511306012],description:"Nigel Taylor's Circulating Balanced temperament (20th cent.)"},telemann:{frequencies:[261.6255653006,264.94361147373,271.70648167539,275.15237829755,278.64197723942,282.17583275232,289.3785657319,293.0485888979,296.76515515861,300.52885648597,304.34029066685,308.20006306951,312.10878854255,316.06708432391,324.13491490251,328.24573110938,332.40868242763,336.62443200122,345.21700307457,349.59519124833,354.02890545793,363.06573983159,367.67029324081,372.33324354561,377.05533136015,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,417.05301810033,422.34226102699,433.12283887627,438.61588607285,444.17860098504,449.81186203693,461.29362042034,467.14394139401,473.06846134744,485.14386048744,491.29666030217,497.52749252881,503.83734680745,516.69814597997,523.2511306012],description:"G.Ph. Telemann (1767). 55-tET interpretation of Klang- und Intervallen-Tafel"},telemann_28:{frequencies:[261.6255653006,264.94361147373,275.15237829755,278.64197723942,293.0485888979,296.76515515861,308.20006306951,312.10878854255,328.24573110938,332.40868242763,345.21700307457,349.59519124833,354.02890545793,367.67029324081,372.33324354561,386.67993129161,391.58396987353,396.55020354877,406.67242132093,411.83001550364,438.61588607285,444.17860098504,461.29362042034,467.14394139401,473.06846134744,491.29666030217,497.52749252881,516.69814597997,523.2511306012],description:"Telemann's tuning as described on Sorge's monochord, 1746, 1748, 1749"},"temes-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,378.62819763364,399.72843132859,423.31905787312,446.91000942727,523.2511306012],description:"Temes' 5-tone Phi scale mixed with its octave inverse"},"temes-ur":{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312],description:"Temes' Ur 5-tone phi scale"},temes:{frequencies:[261.6255653006,306.31659399917,323.38703872151,342.47239171077,361.55773069062,423.31905787312,495.63057556553,523.2511306012,554.13187513888,585.01259700885,684.94462120932],description:"Temes' 5-tone Phi scale / 2 cycle"},"temes2-mix":{frequencies:[261.6255653006,306.31659399917,323.38698268281,342.47239171077,361.55773069062,399.72843132859,423.31905787312,468.0102705885,495.63057556553,523.2511306012,552.41124604023,585.01259700885,646.77396536561,684.94438778203,757.25639526728,799.45686265718,846.63811574624,893.82001885454,1046.5022612024],description:"Temes' 2 cycle Phi scale mixed with its 4/1 inverse"},temp10coh:{frequencies:[261.6255653006,279.06726965397,299.10339764541,320.57805584394,343.5945271479,368.2635494613,394.70435354475,423.05284121745,453.57582505819,488.36772189445,523.2511306012],description:"Differential coherent 10-tone scale, OdC, 2003"},temp10ebss:{frequencies:[261.6255653006,280.43397904206,300.58585223371,322.17714382919,345.31067040124,370.09659148016,396.65293718743,425.1061627261,455.59176355181,488.25490599611,523.2511306012],description:`Cycle of 10 equal "beating" 15/14's`},temp11ebst:{frequencies:[261.6255653006,278.68301283272,296.80966039395,316.07252488244,336.70993118161,358.64093492832,381.94662420398,406.71316497313,433.24697173408,461.44397806515,491.40843569917,523.2511306012],description:"Cycle of 11 equal beating 9/7's"},temp12coh3:{frequencies:[261.6255653006,279.8393060116,294.68135606466,311.32770136359,332.21069717879,353.56473801237,370.2386298036,397.61708850394,418.97112933752,440.1984563065,471.2874275201,496.80305467842,523.2511306012],description:"Differential coherent scale, interval=3, OdC, 2003"},temp12ebf:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.5354160273,349.23174343306,369.98176018664,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating temperament tuned by The Best Factory Tuners (1840)"},temp12ebf4:{frequencies:[261.6255653006,276.98801737971,293.51517393789,310.79793252689,329.39098365485,348.83408706747,369.75126958642,391.78747833067,414.83115644933,439.62189128662,465.54602917011,493.43560586205,523.2511306012],description:"Eleven equal beating fifths and just fourth"},temp12ebfo:{frequencies:[261.6255653006,277.20265787963,293.64844512428,311.16011036869,329.64835309433,349.33484978517,370.11921182839,392.06266066657,415.42830219132,440.09698059047,466.36447845344,494.0968438935,523.62658899088],description:"Equal beating fifths and fifth beats twice octave at C"},temp12ebfp:{frequencies:[261.6255653006,277.75307788644,293.77513637875,310.82931496301,329.94340332986,349.12935317325,370.63270249518,391.99544730302,416.18671544528,440.21980402758,465.80107112682,494.47220378931,523.2511306012],description:"All fifths except G#-Eb beat same as 700 c. C-G"},temp12ebfr:{frequencies:[261.6255653006,277.1880780098,293.58315312731,311.09097992515,329.53543943235,349.23174457993,369.98176152553,391.84186168221,415.185630746,439.77824342227,466.03998361904,493.70667287983,523.2511306012],description:"Exact values of equal beating temperament of Best Factory Tuners (1840)"},temp12ep:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767],description:"Pythagorean comma distributed equally over octave and fifth: 1/19-Pyth comma"},temp12fo1o:{frequencies:[261.6255653006,277.20349049726,293.7089710611,311.19723286579,329.72679517909,349.35966199273,370.1615231373,392.20198585541,415.5548023839,440.29810917508,466.51470234738,494.29230838881,523.72386870485],description:"Fifth beats same octave opposite"},temp12fo2o:{frequencies:[261.6255653006,277.19623399848,293.69359242342,311.17279259662,329.69226891672,349.31393351076,370.10338107372,392.13011658806,415.46777521802,440.19437666896,466.39258399594,494.14997995304,523.55935978973],description:"Fifth beats twice octave opposite"},temp12p10:{frequencies:[261.6255653006,277.12003622197,293.53214922797,310.91625060765,329.32990524605,349.3071136959,369.493381814,391.90691363044,415.11714643072,439.70197837153,465.74281849401,493.32589719545,523.2511306012],description:"1/10-Pyth. comma well temperament"},temp12p6:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,349.6228209638,367.9112241576,391.5530240856,413.43299207996,438.51190905657,466.16376151809,491.10256480205,523.2511306012],description:"Modified 1/6-Pyth. comma temperament"},temp12p8:{frequencies:[261.6255653006,277.02617059261,293.33333347996,310.60041853231,328.88393162803,349.42547049952,369.36822764145,391.77416758435,414.83597850347,439.25532436715,465.90062756558,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament"},temp12p8a:{frequencies:[261.6255653006,276.55731914056,293.33333347996,311.12698372208,328.88393162803,349.42547049952,368.74309237173,391.77416758435,414.83597850347,439.25532436715,466.69047534984,492.49097043477,523.2511306012],description:"1/8-Pyth. comma well temperament, consecutive just fifths"},temp12s17:{frequencies:[261.6255653006,275.41266079541,292.61316553779,309.9334225479,327.2710181906,348.78108411875,367.16108497228,391.29294726693,413.18177371806,437.63868343995,464.97078294553,490.98112850332,523.2511306012],description:'4/17th synt. comma "well"-temperament. OdC 1999'},temp12s3:{frequencies:[261.6255653006,275.79485124716,293.07576161921,310.19140758515,326.99095182327,348.87783040382,367.77258074571,390.81668391305,413.640406907,437.79703699716,465.22877230071,490.42492909292,523.2511306012],description:'1/3 synt. comma "well"-temperament. OdC 1999'},temp12septendec:{frequencies:[261.6255653006,277.01530443593,293.31032234393,310.5638707171,328.83233370046,348.17541215342,368.65631875068,390.34198455955,413.30334035457,437.61515184999,463.35732874365,494.18162334558,523.2511306012],description:"Scale with 18/17 steps"},temp12w2b:{frequencies:[261.6255653006,276.80621914251,293.38957467182,310.9374037046,329.12408537692,349.33498699812,369.32540968366,391.68699838314,414.83365420901,439.33301386008,466.03043161756,492.93477894539,523.2511306012],description:"The fifths on white keys beat twice the amount of fifths on black keys"},temp15coh:{frequencies:[261.6255653006,273.98642352939,286.93424587686,300.52595924487,314.76156220527,329.6715499436,345.28562122078,360.48992106995,377.61407292725,395.54746439596,414.33033691342,434.93480826785,455.53927928881,477.11963158959,499.65025190386,523.2511306012],description:"Differential coherent 15-tone scale, OdC, 2003"},temp15ebmt:{frequencies:[261.6255653006,274.13344448045,287.10161388969,300.54701305042,315.02372625978,330.03318193885,345.59498492211,361.72946206059,379.10151766291,397.1128647533,415.78702800292,435.14840215297,455.99486887387,477.60848441971,500.01748339385,523.2511306012],description:"Cycle of 15 equal beating minor thirds"},temp15ebsi:{frequencies:[261.6255653006,274.09084013406,287.01483652929,300.41443756554,314.84183942382,329.80016763418,345.30896502873,361.38848559819,378.7013656391,396.65136316555,415.2619179078,434.55734100747,455.33280077531,476.87279531786,499.20546063174,523.2511306012],description:"Cycle of 15 equal beating major sixths"},temp15mt:{frequencies:[261.6255653006,272.10155294862,290.46827626332,302.09918118188,314.19580976213,326.77681046955,348.83408706747,362.80207077951,377.32935907335,392.4383479509,418.92774655891,435.70241417719,453.14877154631,471.29371440761,503.10581234929,523.2511306012],description:"Cycle of 15 minor thirds, Petr Parizek"},temp16d3:{frequencies:[261.6255653006,272.52663052146,287.69189096389,299.67905363019,312.16568143019,325.17258353382,338.72144179457,352.83483584176,372.46899992671,387.98854005196,404.15472995283,420.99451113006,438.53594735503,462.93911228358,482.22824196207,502.32108537715,523.2511306012],description:"Cycle of 16 thirds tempered by 1/3 small diesis"},temp16d4:{frequencies:[261.6255653006,271.36369423603,291.82218013836,302.68427617679,313.95067836072,325.63643364742,337.75715313333,350.32902355546,376.74081403286,390.76372105392,405.30858212106,420.39482899491,436.04260883433,468.91646607712,486.37029938793,504.47379566792,523.2511306012],description:"Cycle of 16 thirds tempered by 1/4 small diesis"},temp16ebs:{frequencies:[261.6255653006,273.35566334732,285.38860666159,297.73221513295,311.13803992337,324.88997598926,338.996955196,354.31789928052,370.0343963911,386.15666093499,403.66631166114,421.62802297921,440.05346707662,460.0644954801,480.59216613216,501.64981691394,523.2511306012],description:"Cycle of 16 equal beating sevenths"},temp16ebt:{frequencies:[261.6255653006,273.54317752885,285.74681450472,298.24333695649,311.03977535434,324.14332902314,339.04034606654,354.29488987405,369.91554384313,385.91109319424,402.29053605603,420.91180538217,439.97998583037,459.50580330844,479.50024102158,499.97454326842,523.2511306012],description:"Cycle of 16 equal beating thirds"},temp16l4:{frequencies:[261.6255653006,278.81939890042,286.59644689091,305.43134787805,313.95067836072,322.70763593891,343.91573686494,353.50850469302,376.74081403286,387.24916379762,412.69888495295,424.21020636659,436.04260883433,464.69899736225,477.66074674968,509.05224558146,523.2511306012],description:"Cycle of 16 fifths tempered by 1/4 major limma"},temp17c10:{frequencies:[261.6255653006,278.13248184697,287.25399162485,296.67464640038,315.39293803189,325.73642523995,336.41913481987,347.45218787195,369.37422084479,381.48805431277,393.9991677018,418.85802036446,432.59470262079,446.78188702878,474.97099505857,490.54793493862,506.63572944675,523.2511306012],description:'Cycle of 17 fifths tempered by 1/10 of "17-tET comma"'},temp17c11:{frequencies:[261.6255653006,276.93071634298,286.5293181416,296.46061382736,313.80362259461,324.68026371274,335.93389640617,347.57758745223,367.91095120397,380.66298908833,393.8570200719,416.89773925535,431.34769064645,446.29848691039,472.40704302301,488.78098359819,505.72245578392,523.2511306012],description:'Cycle of 17 fifths tempered by 1/11 of "17-tET comma"'},temp17c12:{frequencies:[261.6255653006,275.93321340298,285.92682111936,296.28237159295,312.48531442823,323.80274674587,335.53006800342,347.68212334757,366.69599021774,379.97679689512,393.73860099464,415.27118158544,430.3112595477,445.8960513142,470.2809925818,487.31338757149,504.96265307831,523.2511306012],description:'Cycle of 17 fifths tempered by 1/12 of "17-tET comma"'},temp17c13:{frequencies:[261.6255653006,275.09197878886,285.41800532755,296.13163442011,311.37414725128,323.06208421743,335.18874504319,347.77059980835,365.67107999768,379.3971387881,393.63842979584,413.89982010446,429.43622376713,445.55581352332,468.48950048969,486.07501593832,504.32063522708,523.2511306012],description:'Cycle of 17 fifths tempered by 1/13 of "17-tET comma"'},temp17c14:{frequencies:[261.6255653006,274.37296298479,284.98259752889,296.00249241327,310.42486507835,322.42857866752,334.89645942743,347.84645641687,364.79486552165,378.90099378095,393.5525871037,412.72797362103,428.68761089217,445.26438593469,466.95936897503,485.01606158014,503.77098227424,523.2511306012],description:'Cycle of 17 fifths tempered by 1/14 of "17-tET comma"'},temp17c15:{frequencies:[261.6255653006,273.75133628611,284.60578240525,295.8906154666,309.60449456672,321.88054534371,334.64335075548,347.91221098893,364.0371787025,378.47152629398,393.47820661021,411.71505587788,428.03986711385,445.01196937812,465.63729761752,484.10016650719,503.29510175355,523.2511306012],description:'Cycle of 17 fifths tempered by 1/15 of "17-tET comma"'},temp17ebf:{frequencies:[261.6255653006,272.44226039746,283.83762774933,295.84262353625,308.01140541539,320.83119298602,334.33681303028,348.02669374128,362.44895565855,377.64277622383,393.64943714798,409.87448211667,426.96753159265,444.97502525992,463.22819966593,482.45788080796,502.71631088044,523.2511306012],description:"Cycle of 17 equal beating fifths"},temp17ebs:{frequencies:[261.6255653006,272.25303191034,284.09302419378,294.99486987374,307.14054534497,320.67196534338,333.1312181383,347.01199086095,362.47647062671,376.71561430061,392.57935523584,410.25304697073,426.52635565248,444.65634289229,464.854847056,483.45291583119,504.17290303449,523.2511306012],description:"Cycle of 17 equal beating sevenths"},temp17fo2:{frequencies:[261.6255653006,272.49443630436,283.81483782984,295.60553136463,307.88605111976,320.67674980257,333.99881838086,347.87433573796,362.32629011314,377.37863296804,393.05630224552,409.38528080469,426.39262165238,444.10651133426,462.55629730628,481.77255670213,501.78712602614,522.6331757532],description:"Fifth beats twice octave"},temp17nt:{frequencies:[261.6255653006,272.67141175251,283.62400127587,295.59862296305,308.07881564783,321.08592105074,333.98321109015,348.08400151932,362.78013022893,377.35217954558,393.28401259522,409.88848628312,426.35277308246,444.35341180422,463.11404114636,482.66674266598,502.05436630802,523.2511306012],description:"17-tone temperament with 27/22 neutral thirds"},temp17s:{frequencies:[261.6255653006,272.47577100117,283.83144686231,295.66037914716,307.98229466369,320.75501909295,334.12277657932,348.04764753103,362.48197303348,377.58873713905,393.32509157531,409.63717539588,426.70917767843,444.49267120113,463.01730800927,482.21968335939,502.31662775181,523.2511306012],description:"Cycle of 17 fifths tempered by 2 schismas. Schulter, Tuning List 10-9-98"},temp19d5:{frequencies:[261.6255653006,270.66831710441,280.02362001571,289.70227696231,304.50185643804,315.02657220273,325.91506125677,337.17989695691,348.83408706747,360.89108965294,379.3273836973,392.4383479509,406.00247545366,420.03542981361,434.55341522625,449.57319616728,472.53985806789,488.87259164079,505.76984518255,523.2511306012],description:"Cycle of 19 thirds tempered by 1/5 small diesis. Third = 3\\5"},temp19ebf:{frequencies:[261.6255653006,271.21349495395,281.45216719787,291.55303152151,302.33945232218,313.85796000757,325.22143162672,337.35615460362,350.31447634238,363.09838134063,376.74994653359,390.21776437961,404.59965986997,419.95766938963,435.10896436483,451.288596451,468.56635736893,485.61156561298,503.81364896584,523.2511306012],description:"Cycle of 19 equal beating fifths"},temp19ebmt:{frequencies:[261.6255653006,271.3515811897,281.43551369743,291.89053542337,302.73030209663,313.98726376766,325.65848288741,337.75920164946,350.30522706536,363.3129458114,376.82130195458,390.82676353803,405.34762742982,420.40285701732,436.01212051281,452.22214724761,469.0287008844,486.45373685079,504.52001310976,523.2511306012],description:"Cycle of 19 equal beating minor thirds"},temp19ebo:{frequencies:[261.6255653006,277.22364042749,293.65618047886,311.2040149966,329.6906225544,349.43193638686,370.22936988938,392.1394232912,415.53653598153,440.18534605859,466.50709783521,494.2370091719,523.84897992059,555.04513017437,587.91021027711,623.0058793126,659.97909442818,699.46172209312,741.05658909815,784.8766959018],description:"Cycle of 19 equal beating octaves in twelfth"},temp19ebt:{frequencies:[261.6255653006,271.59402175166,281.80172126331,292.25440577595,302.95795550425,313.91838845704,325.14187338321,337.60244413755,350.36206814823,363.42792409681,376.80735887968,390.50790160795,404.53725818867,420.11297167574,436.06250107414,452.39482160095,469.11911613638,486.2447950704,503.78149001575,523.2511306012],description:"Cycle of 19 equal beating thirds"},temp19k10:{frequencies:[261.6255653006,271.76196854941,282.29109592175,293.22816309454,304.58897525989,314.09773337131,326.2671147593,338.90798583865,352.03861397416,365.67797428016,377.09383089344,391.70392883316,406.88007915549,422.6442137645,439.01911266466,452.72455471179,470.26488431194,488.48479525859,507.41061720556,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/10 kleisma"},temp19k3:{frequencies:[261.6255653006,272.95237156345,284.76956174698,297.09836322231,309.96092731219,314.44113201634,328.05453510669,342.25731432435,357.07498823553,372.53417996774,377.91882441317,394.28042610165,411.35038641496,429.15937528906,447.73938330242,454.2110508691,473.87564511273,494.39160029408,515.79576952378,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/3 kleisma"},temp19k4:{frequencies:[261.6255653006,272.52663052146,283.88190679319,295.71031957624,308.03158289191,314.31844786309,327.4150485592,341.05734286691,355.26806612985,370.07090075127,377.62397563434,393.35830866491,409.74823893478,426.8210805314,444.6052930255,453.67960031314,472.58291784883,492.27387080735,512.78528301977,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/4 kleisma"},temp19k5:{frequencies:[261.6255653006,272.27150423996,283.35064249518,294.88062803952,306.8797443789,314.24485853342,327.03195662575,340.33937954017,354.18830437416,368.6007608062,377.44717941318,392.80607455881,408.78994578219,425.42422593284,442.73537947933,453.36102900438,471.8089732132,491.00759210237,510.98743222773,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/5 kleisma"},temp19k6:{frequencies:[261.6255653006,272.10155294862,282.99701916355,294.32876096318,306.11424676116,314.19580976213,326.77681046955,339.86157848985,353.47028562902,367.62391141072,377.32935907335,392.4383479509,408.1523292189,424.49552853314,441.49314144476,453.14877154631,471.29371440761,490.16521545931,509.79236747994,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/6 kleisma"},temp19k7:{frequencies:[261.6255653006,271.9802243463,282.7447017667,293.93521741989,305.56863311614,314.16077935352,326.59468561952,339.52070304385,352.95830848174,366.92774752709,377.24522513926,392.17589782962,407.69749910471,423.83341578697,440.60837682578,452.99722066906,470.92601754108,489.56440442681,508.94046380742,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/7 kleisma"},temp19k8:{frequencies:[261.6255653006,271.88926339885,282.55561052465,293.64040364533,305.16005936662,314.13450956378,326.45815718343,339.26526937521,352.57481080357,366.4064920117,377.18213591051,391.97917444376,407.35670799125,423.33750965456,439.94524339387,452.88359011983,470.65043349884,489.11427877975,508.30246674991,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/8 kleisma"},temp19k9:{frequencies:[261.6255653006,271.81853598083,282.40862793607,293.41130980736,304.84265779003,314.11407882217,326.35200974457,339.06673262958,352.27682225125,366.00158141044,377.13307501509,391.82623534045,407.09184571451,422.95220417284,439.43048454013,452.79523167251,470.4362008006,488.76446469244,507.80680338678,523.2511306012],description:"Chain of 19 minor thirds tempered by 1/9 kleisma"},temp19lst:{frequencies:[261.6255653006,270.56149416036,279.80263334807,289.3594074481,304.78245180412,315.19242188443,325.95794877725,337.09117667186,348.60466454729,360.5114003397,379.7268899367,392.69661814622,406.10933276067,419.98016416303,434.32475952075,449.15930043669,473.09978287909,489.25870067642,505.96953296163,523.2511306012],description:"Cycle of 19 least squares thirds 5/4^5 = 3/2"},temp19lst2:{frequencies:[261.6255653006,270.86681403244,280.43448605562,290.34011310859,303.98143643885,314.71879896063,325.83542931914,337.34472599098,349.26055890156,361.59728998429,378.58655645252,391.95915298383,405.80409975455,420.1380835834,434.97837844393,450.34287106955,471.50175486263,488.15634183652,505.39920634693,523.2511306012],description:"Cycle of 19 least squares thirds 5/4, 3/2 (5), 6/5 (4)"},temp21ebs:{frequencies:[261.6255653006,270.48603901573,279.57527100587,288.89916626223,298.46378542286,308.59004184051,318.97773454914,329.63361550747,340.56460989801,352.13747205507,364.00912264098,376.18727282918,388.67983604901,401.90596519454,415.47356606258,429.3914526989,443.66866815503,458.78424493347,474.29007331382,490.19622772738,506.51304733863,523.2511306012],description:"Cycle of 21 equal beating sevenths"},temp22ebf:{frequencies:[261.6255653006,269.81217946012,278.43675961795,287.52273893052,297.09479717246,306.30473778727,316.00739221221,326.22911792828,336.99768333647,347.35886661388,358.27435338478,369.77379349451,381.88843101834,394.65117841871,406.93109909525,419.8679691216,433.49693671533,447.85502662133,461.66993710068,476.2239184443,491.55650493929,507.70935693135,523.2511306012],description:"Cycle of 22 equal beating fifths"},temp22ebt:{frequencies:[261.6255653006,270.16401944699,278.90739732088,287.86061708193,297.02871287074,306.4168425362,316.03028815926,325.87445510174,336.54752540671,347.4767459334,358.66827061689,370.12838991426,381.86355177507,393.88036006393,406.18556836568,419.52690380046,433.1884314408,447.17783799964,461.50298590676,476.17193984405,491.19294816955,506.57446222015,523.2511306012],description:"Cycle of 22 equal beating thirds"},temp22fo2:{frequencies:[261.6255653006,269.97341665226,278.58762814388,287.47669703533,296.64939669548,306.114775449,315.88217199169,325.96122111215,336.36187067071,347.09438029185,358.16933884319,369.59767092309,381.39065611261,393.55992749281,406.11749146369,419.07573510033,432.44744798202,446.24582051114,460.48446638525,475.17743368268,490.33921589034,505.98477744485,522.12955176559],description:"Fifth beats twice opposite rate as octave"},temp23ebs:{frequencies:[261.6255653006,269.54528659271,277.75645349026,286.26979186473,295.09642104593,304.24787054065,313.41421505132,322.9178815064,332.77128133421,342.98728793362,353.5792427091,364.56098080918,375.56059498003,386.96499273375,398.78907363541,411.04828247111,423.75862731373,436.93671323096,450.13624919654,463.82153026575,478.01042762353,492.72147385367,507.97388874722,523.2511306012],description:"Cycle of 23 equal beating major sixths"},temp24ebaf:{frequencies:[261.6255653006,269.28287293678,277.23083697142,285.33112867981,293.73889258015,302.30779732819,311.20195864933,320.26658492056,329.67528611807,339.26431305611,349.21731641877,359.36108127338,369.88988063787,380.8183283077,391.95623237686,403.5169050439,415.29914897519,427.52862168357,439.9924847314,452.92944495636,466.1143590732,479.79973930305,493.74741628009,508.22451419243,523.2511306012],description:"Cycle of 24 equal beating 11/8's"},temp24ebf:{frequencies:[261.6255653006,269.29177952703,277.18807786937,285.37455545576,293.58315284916,302.20762754558,311.09098010692,320.17688686519,329.5354160273,339.23795459232,349.23174343306,359.45337270909,369.98176018664,380.89707445632,391.84186131702,403.3411703213,415.18563115404,427.4653330282,439.77824302677,452.71493931339,466.03998256716,479.66882917609,493.70667148145,508.26043277122,523.2511306012],description:"24-tone ET with 23 equal beatings fifths. Fifth on 17 slightly smaller."},temp25ebt:{frequencies:[261.6255653006,269.07040607882,276.69392272178,284.50040351526,292.49424189123,300.67993013952,309.06207502162,317.64539198503,326.43470939254,335.74076076764,345.27015661764,355.02825763358,365.02055286832,375.25266439783,385.73034580726,396.45949385543,407.44613828076,419.07870286007,430.99044652419,443.18807578441,455.67844358274,468.46858279232,481.56568677979,494.97711759939,508.71042703507,523.2511306012],description:"Cycle of 25 equal beating thirds"},temp26eb3:{frequencies:[261.6255653006,268.53506427639,276.23413316293,283.52944261778,291.01742029734,298.70315454572,307.26715974579,315.38204761281,323.71124866952,332.26042290088,341.78653782772,350.81307822085,360.07800843467,370.40166886388,380.18393134541,390.22454217496,400.5303243006,412.0137801623,422.89501338113,434.06361862988,445.5271853685,458.30072684004,470.40439262311,482.82771472967,495.57913524385,509.78770018956,523.2511306012],description:"Cycle of 26 fifths, 5/4 beats three times 3/2"},temp26ebf:{frequencies:[261.6255653006,268.42568455944,275.6873347244,283.44184249631,290.6057533496,298.25588724353,306.42524452376,315.14906491362,323.2084665433,331.81486605817,341.00539333861,350.8196903474,359.88651586494,369.56871668171,379.90806097321,389.45994242989,399.66012078319,410.55259814459,422.18435687733,432.93022440227,444.40542617247,456.65946119637,469.74519313893,481.83429211771,494.74389287961,508.52968420524,523.2511306012],description:"Cycle of 26 equal beating fifths"},temp26ebmt:{frequencies:[261.6255653006,268.65375733515,276.22103845862,283.50786797993,291.35362426947,298.90860888253,307.04308924768,315.80151824033,324.23534814673,333.31608510092,342.06028051348,351.47518831899,360.54116941247,370.30254728737,380.81265974123,390.93325547321,401.83014055422,412.32317421544,423.62106542614,434.50024245702,446.21389528982,458.82603004394,470.97074536855,484.04700949484,496.63864979835,510.1961187079,523.2511306012],description:"Cycle of 26 equal beating minor thirds"},temp26ebs:{frequencies:[261.6255653006,268.70854008298,275.97438147252,283.42781183148,291.07367309004,298.91693448926,307.01176285104,315.31558194419,323.83378869523,332.57191674,341.53564330438,350.78687613393,360.27695513986,370.01204624828,379.9984780646,390.24273934583,400.81557597059,411.66137956276,422.7871998129,434.200265189,445.90799193987,457.99123299379,470.38643795716,483.10166179174,496.14516363988,509.5254229925,523.2511306012],description:"Cycle of 26 equal beating sevenths"},temp27c8:{frequencies:[261.6255653006,268.8683660761,273.88218275531,281.46429379013,289.25630678777,297.26403435806,305.49344487497,313.95067836072,319.80518189674,328.65861797738,337.75715313333,347.10756874671,356.7168418477,363.36884069528,373.42828707985,383.76621672426,394.39034225616,405.30858212106,412.86671295557,424.29645219584,436.04260883433,448.1139452722,460.51946086698,473.26841152735,482.09384659572,495.44005640506,509.15574351714,523.2511306012],description:"Cycle of 27 fifths tempered by 1/8 of difference between augm. 2nd and 5/4"},temp27eb2:{frequencies:[261.6255653006,268.46319812592,275.47953375729,282.6792426258,290.06711722511,297.6480770209,305.21714541248,313.19405229436,321.37943712173,329.77875040935,338.39757940759,347.00289091411,356.07187808578,365.37788286775,374.92710181611,384.72589137834,394.78077412888,404.81988946592,415.39993259502,426.25648711974,437.39677971686,448.82822593369,460.24174609969,472.27024976331,484.61312060812,497.27857467888,510.27504274822,523.2511306012],description:"Cycle of 27 fourths, 5/4 beats twice 4/3"},temp28ebt:{frequencies:[261.6255653006,268.20719354764,274.94677993062,281.84811597329,288.91508487862,296.15166190523,303.56191452522,311.15001492268,318.92023016627,326.87692943437,335.10396312415,343.5284476344,352.15511767098,360.98882840285,370.03454814671,379.29736707683,388.78249121135,398.49525813745,408.44113355924,418.72492751128,429.25553103998,440.03886948281,451.08100913788,462.38815755283,473.96667987616,485.82308640697,497.96404651665,510.39638953936,523.2511306012],description:"Cycle of 28 equal beating thirds"},temp29c14:{frequencies:[261.6255653006,268.03384168485,274.59908446169,281.12309545065,288.00894581307,294.85155418799,302.07367045706,309.47268578827,316.82523654187,324.58557784847,332.29718551084,340.4364979057,348.77517523396,357.06148706459,365.80737813473,374.49834647311,383.67133729641,392.78672100419,402.40767098088,412.26427490957,422.0589810157,432.39692561869,442.66994710331,453.51274088813,464.62111626441,475.65973015548,487.31057837675,498.88825560972,511.10806227553,523.2511306012],description:"Cycle of 29 fifths 1/14 comma positive"},temp29ebf:{frequencies:[261.6255653006,267.97141371953,274.40384216744,281.08918054527,287.86573007783,294.90872015661,302.04780073409,309.28428172011,316.80528774769,324.42890571749,332.35226986162,340.383734589,348.52477529448,356.98590767403,365.56247629567,374.47626314535,383.51165984234,392.90231649713,402.42108995343,412.06973029551,422.09773822292,432.26256191617,442.8270465847,453.53566813958,464.39038927288,475.67189906986,487.10732348594,498.99237046175,511.03956815915,523.2511306012],description:"Cycle of 29 equal beating fifths"},temp29fo:{frequencies:[261.6255653006,267.94780983951,274.42283293416,281.05432651499,287.84607006616,294.80193939197,301.92589896847,309.2220107369,316.69443479624,324.34743177532,332.18536334326,340.21270232633,348.43402388135,356.85401564372,365.47747852664,374.30932945854,383.35460418662,392.61845788025,402.10617708826,411.82316930666,421.77497497272,431.96726840975,442.4058610624,453.0967048103,464.04589268124,475.25967298378,486.74443697706,498.50673304697,510.55326782272,522.89091000079],description:"Fifth beats with opposite equal rate as octave"},temp31c51:{frequencies:[261.6255653006,267.17944246504,273.80687224646,279.61933836952,286.55534345926,292.63843680803,298.85066583755,306.26370726525,312.76517639908,319.40466275447,327.32754956004,334.27616903285,342.56794607269,349.84009583671,357.26662128823,366.1286782788,373.90098334082,383.17565840352,391.30984260196,399.61670205031,409.52926208827,418.22288720188,428.59697681668,437.69538032917,446.98692528774,458.07451174337,467.79867446983,477.72926229583,489.57941763243,499.97237729845,512.37427391379,523.2511306012],description:"Cycle of 31 51/220-comma tempered fifths (twice diff. of 31-tET and 1/4-comma)"},temp31coh:{frequencies:[261.6255653006,267.17903658035,272.71444919697,278.8328003927,286.67318542907,292.31259119845,298.22448926086,305.9625493141,312.79375273624,319.37019903425,325.99008611032,333.53448283298,342.55073731576,349.35067604096,356.49690427728,365.94514964733,373.94225818849,381.74854907994,389.68867781295,401.66236977474,409.34549662494,417.52928752537,426.20510506248,437.61344561246,447.02040600938,456.30467151405,466.17931462488,479.8608061495,489.18804557359,499.02680928636,509.58872491278,523.2511306012],description:"Differential coherent 31-tone scale, interval=8, OdC, 2003"},temp31eb1:{frequencies:[261.6255653006,267.35556661283,273.21106374578,279.19480525048,287.36432599524,293.65804565963,300.08960744161,306.66203029506,313.37839929357,320.24186707858,327.25565533923,334.42305632458,341.74743438901,349.23222958864,356.8809512704,367.32364464292,375.36859607341,383.58974428421,391.99094825517,400.57615379751,409.34938620036,418.31476585427,427.47650107887,436.83889236244,446.40633438056,459.46863260649,469.5317006585,479.81516534138,490.32385367952,501.06269841655,512.03674033076,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats equal 5/4. Third 1/18 synt. comma higher"},temp31eb1a:{frequencies:[261.6255653006,267.52830363402,273.56421824856,279.73631545395,286.19123047598,292.64821393201,299.25087842544,306.00251077972,312.90647197491,319.96619882071,327.18520755731,334.56708808783,342.11551697966,349.83425186023,357.90667665031,365.98168819447,374.23888853079,382.68238383924,391.31637942763,400.14517332125,409.17316051655,418.40483516889,427.84479530109,437.49773526159,447.36846272566,457.69148927209,468.01782376277,478.57713873597,489.37469064597,500.41585743254,511.7061296998,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats equal 7/4"},temp31eb2:{frequencies:[261.6255653006,267.43633367564,273.37616065041,279.44791264824,286.8151286113,293.18536340431,299.69708268426,306.35342885652,313.15761412007,320.11292201761,327.22270902014,334.4904061467,341.91952062013,349.51363755953,357.2764217104,366.69546492458,374.83986170174,383.16514754137,391.67534003419,400.37454600262,409.26696348258,418.35688374945,427.64869338884,437.14687641357,446.85601642745,458.63669049374,468.82312458207,479.23580188553,489.87974732177,500.7600974131,511.88210276525,523.2511306012],description:"Cycle of 31 thirds, 3/2 beats twice 5/4"},temp31eb2a:{frequencies:[261.6255653006,267.30377559621,273.10522335955,279.03258328435,287.71713441117,293.9616250555,300.34164347605,306.86013111019,313.520093235,320.3246003528,327.27678960683,334.37986622751,341.63710501026,349.05185182525,356.62752721996,367.72712485201,375.70811839104,383.86232802855,392.19351543866,400.70551714108,409.40225971792,418.28775270674,427.36609266644,436.64146506587,446.11814621352,460.00303307438,469.98674378481,480.18713671772,490.60891465214,501.25688243424,512.13594919255,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 3/2"},temp31eb2b:{frequencies:[261.6255653006,267.52098517401,273.5492512983,279.71335720518,286.24081966732,292.69091492047,299.28635537219,306.03041620307,312.92644639599,319.97787039914,327.18818982659,334.56098519707,342.09991771207,349.80873107384,357.97195918064,366.0384300542,374.28666922186,382.72077261519,391.34492846269,400.16341936959,409.18062444454,418.40102147414,427.82918914659,437.46980932536,447.32766937413,457.76662230541,468.08184681118,478.62951259033,489.41485742956,500.44323714283,511.72012823096,523.2511306012],description:"Cycle of 31 thirds, 5/4 beats twice 7/4 (7/4 beats twice 5/4 gives 31-tET)"},temp31ebf:{frequencies:[261.6255653006,267.58895287558,273.47207673981,279.84020613447,286.1226232561,292.32048149598,299.02929415269,305.64780689513,312.81195283539,319.87967238294,326.85226402826,334.39967773649,341.84550545999,349.90516819854,357.85635261941,365.7005167875,374.19135817901,382.56791460144,390.83172556312,399.77680617055,408.60149248083,418.153686518,427.57731316062,436.87410111252,446.93731687602,456.86508723973,467.61130449655,478.21288647115,488.67177324268,499.99289085438,511.16163412976,523.2511306012],description:"Cycle of 31 equal beating fifths"},temp31ebf2:{frequencies:[261.6255653006,268.47208070676,273.9410776603,281.1098810272,286.83632036086,292.67941197057,300.33857976184,306.45672349367,312.69950064833,320.88257689406,327.41921873353,335.98749730659,342.8318387903,349.81560715632,358.96997989875,366.28249344322,375.86779039798,383.5245262314,391.33723606718,401.57819634767,409.75867428285,420.48170539436,429.04726334649,437.78730875453,449.24382765192,458.39529367535,467.73318258368,479.97335657757,489.75080836323,502.56716753771,512.80487382351,523.2511306012],description:"Cycle of 31 fifths, 3/2 beats equal 7/4"},temp31ebs:{frequencies:[261.6255653006,267.49970467488,273.5255021102,279.70687352555,286.04783307233,292.55250379055,299.22511217624,305.93841412724,312.82503848113,319.88946348152,327.13627425327,334.57018402367,342.19602042672,349.86836735032,357.73879552978,365.81242398075,374.09449397971,382.59039112658,391.30563169636,400.0740276901,409.06880268892,418.29580572823,427.76103041037,437.4706255228,447.4309015606,457.4519243295,467.73166961576,478.27681510244,489.09421437332,500.19089295757,511.57406697079,523.2511306012],description:"Cycle of 31 equal beating sevenths"},temp31ebs1:{frequencies:[261.6255653006,267.15774161678,272.80689957055,278.57550963341,287.00766304701,293.07655388437,299.27377555355,305.60203820353,312.06411627904,318.6628357552,328.30838543699,335.25059642555,342.33960321815,349.5785118895,356.97048813578,364.51877275634,375.55232561156,383.49353066309,391.60265342908,399.88324912115,408.33893898267,416.9734277591,429.59472356821,438.6786743379,447.954711436,457.42689142912,467.09936712211,476.97636845082,491.41388278482,501.80502418824,512.41589335668,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats equal 7/4. 17/9 schisma fifth"},temp31ebs2:{frequencies:[261.6255653006,267.52957387699,273.56681763873,279.74030009523,286.13080593576,292.58781532731,299.19053769144,305.94226304679,312.84635035505,319.90623967996,327.21431324819,334.59843914397,342.14920188821,349.87035796113,357.76575454309,365.83932576918,374.19671203989,382.64107477964,391.27599615891,400.10577865514,409.13482199124,418.3676180873,427.92498506647,437.58181190976,447.45656083737,457.55415226032,467.87960969795,478.43807796233,489.36771995709,500.41110255739,511.70370009509,523.2511306012],description:"Cycle of 31 sevenths, 3/2 beats twice 7/4. Almost 31-tET"},temp31ebsi:{frequencies:[261.6255653006,267.31506098272,273.2139312212,279.32987994092,285.67089487749,292.24525964349,299.06156112772,306.12870201667,312.71376833043,319.5411631371,326.61980701828,333.95894503443,341.56816427739,349.45740040562,357.63696227352,366.11753111539,374.01961057916,382.2124855973,390.7068565555,399.51382386635,408.64488423766,418.11197066674,427.92744450622,438.10412760018,447.58662182594,457.41807184609,467.61131789159,478.17967690081,489.136951815,500.49745466086,512.27602199232,523.2511306012],description:"Cycle of 31 equal beating major sixths"},temp31ebt:{frequencies:[261.6255653006,267.508686718,273.53300221315,279.70190221389,286.0188552526,292.48741633838,299.11122072338,305.89399777728,312.83956126154,319.95181832117,327.23477005018,334.588671338,342.11906613961,349.83019225353,357.72638299858,365.81208378543,374.09184045976,382.57031224079,391.25226584136,400.14258695229,409.24627647794,418.43865241641,427.85164834976,437.49055334209,447.36079317794,457.46791872903,467.81761394993,478.41570188597,489.26814549043,500.38104816704,511.76065992154,523.2511306012],description:"Cycle of 31 equal beating thirds"},temp31g3:{frequencies:[261.6255653006,266.21023205793,270.87523947024,275.62199471997,289.25983723073,294.32876096318,299.48651076576,304.73464409936,310.07474405997,315.5084236529,331.11985608357,336.92232427465,342.82647426905,348.83408706747,354.94697625466,361.16698614085,379.03761443004,385.6797831671,392.4383479509,399.31534788729,406.31285900225,413.43299207996,433.88975562921,441.49314144476,449.22976592409,457.10196592055,465.11211608996,473.26263524279,496.67978412536,505.38348615935,514.23971114652,523.2511306012],description:"Wonder Scale, cycle of 31 sevenths tempered by 1/3 gamelan residue, s.wonder1"},temp31g4:{frequencies:[261.6255653006,266.75106828164,271.97698492363,277.30528403104,287.97116616014,293.61280545832,299.36497003718,305.22982618403,311.20958045219,317.30648321666,329.51091606373,335.96636137331,342.54827390456,349.25913259695,356.10146388137,363.07784268567,377.0427625798,384.42940207435,391.96075366681,399.63965159508,407.46898671086,415.4517078616,431.43106138252,439.88322158593,448.50096908674,457.28754710584,466.24626137824,475.38048570318,493.66485502092,503.33623955776,513.19709315346,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/4 gamelan residue"},temp31g5:{frequencies:[261.6255653006,267.07609791103,272.64018328418,278.3201871026,287.20071989568,293.1840695693,299.2920706603,305.52732176658,311.89247392994,318.39023342226,328.54930692245,335.39408374843,342.38146206091,349.5144087687,356.79595852417,364.22920722399,375.85089312601,383.68111960674,391.67447579625,399.83436022994,408.16424460367,416.66766586736,429.96253800336,438.92009035289,448.06425836543,457.39892986705,466.92807368021,476.65574406444,491.86469103391,502.11187209711,512.57253609913,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/5 gamelan residue"},temp31g6:{frequencies:[261.6255653006,267.29300481931,273.08321314304,278.9988528944,286.68823620156,292.89859205665,299.24348036203,305.72581270733,312.34856974117,319.11478979112,327.9097940226,335.01310892782,342.27029731995,349.68469585889,357.2597060542,364.99881126821,375.05840734677,383.18307527508,391.48374080678,399.96422099622,408.62840644009,417.48028065389,428.98629965513,438.27917301224,447.77335490729,457.47320099372,467.3831713443,477.50781354513,490.66822826519,501.2972832058,512.15658610391,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/6 gamelan residue"},temp31g7:{frequencies:[261.6255653006,267.44804485495,273.40010374961,279.48462577409,286.32273545638,292.69485077785,299.20877758909,305.86767190621,312.6747599825,319.63333987564,327.45376040978,334.74124806474,342.19091885571,349.80638115363,357.59132564064,365.54952414453,374.49336901227,382.82772265927,391.34755742947,400.0570012071,408.96027492626,418.06169111145,428.2903432132,437.821949061,447.565680886,457.52625955954,467.70851101039,478.11736856842,489.81539667363,500.71624319167,511.85968815724,523.2511306012],description:"Cycle of 31 sevenths tempered by 1/7 gamelan residue"},temp31h10:{frequencies:[261.6255653006,267.8597617245,273.71072489962,279.68949451567,286.35413084244,292.60907359238,299.00064605783,306.12544311476,312.81225819702,320.26616683613,327.26186315247,334.41036913783,342.37893460431,349.85764856047,358.19430059608,366.01847563765,374.01355928612,382.92581520849,391.29021017831,400.61414686654,409.36491649663,418.30683086326,428.27453775026,437.62950220286,447.18881072031,457.84473927605,467.84561789912,478.99376955124,489.45661357347,500.14800438647,512.06587983104,523.2511306012],description:"Cycle of 31 fifths tempered by 1/10 Harrison's comma"},temp31h11:{frequencies:[261.6255653006,269.21878403965,274.22153683641,279.31725480271,287.42394184039,292.76499331753,298.20529308835,306.86017365004,312.56239683413,321.63396690808,327.61072570921,333.69854562169,343.38355445704,349.7644731902,359.91576765193,366.60389537541,373.41630725864,384.25405432087,391.39444778107,402.75397853578,410.23814647641,417.86138882164,429.98907567166,437.9793418028,446.11808436842,459.06587176894,467.59645436585,481.16761342105,490.10890120058,499.21634316923,513.70521350358,523.2511306012],description:"Cycle of 31 fifths tempered by 1/11 Harrison's comma"},temp31h12:{frequencies:[261.6255653006,270.35656674398,274.64794212014,279.0074329748,288.31850430385,292.89498819461,297.54411640065,307.47379627264,312.35433239663,322.77826253379,327.90172667751,333.10651564349,344.2229903876,349.68684701428,361.35664068489,367.0924599966,372.91932620731,385.3644371109,391.48133253101,404.54589939324,410.96726244836,417.49055189439,431.4231018689,438.27108715714,445.22777061734,460.08596806997,467.38892215786,482.98668436162,490.65313915878,498.44128370652,515.07533168556,523.2511306012],description:"Cycle of 31 fifths tempered by 1/12 Harrison's comma"},temp31h8:{frequencies:[261.6255653006,264.15772162327,272.31089540773,280.71571360382,283.4326348965,292.18072491748,301.19882119914,304.11398928909,313.50040506268,316.53463456122,326.30440921209,336.37572681506,339.63135730234,350.11400731728,353.50260556257,364.41338872146,375.66093089504,379.29678648678,391.00370158472,394.788050771,406.97310157871,419.5342415638,423.59472503043,436.668886633,450.14658206855,454.50334862767,468.53149836075,473.06620699858,487.66729542944,502.71904336675,507.58463809481,523.2511306012],description:"Cycle of 31 fifths tempered by 1/8 Harrison's comma"},temp31h9:{frequencies:[261.6255653006,266.20804854623,273.08769296879,280.14512719472,285.05198845745,292.41861893027,299.97562432697,305.22982618403,313.11791376428,318.60230743232,326.83598255713,335.28243953396,341.15505431438,349.97156260351,356.10146388137,365.30423365264,374.74482972428,381.30864508241,391.16284711627,398.01423104415,408.30015740759,418.85190169901,426.18827121524,437.20230245522,448.50096908674,456.35665612784,468.15032961482,476.35018210031,488.66055322307,501.28905975035,510.06935121341,523.2511306012],description:"Cycle of 31 fifths tempered by 1/9 Harrison's comma"},temp31ms:{frequencies:[261.6255653006,267.90457886781,273.56603860918,280.13162379381,286.05147140959,292.91670530125,299.10673210371,306.2852939563,312.75782903301,320.26401722477,327.03195662575,334.88072358477,341.95754947331,350.16453098318,357.56433846376,366.14588292411,373.88341429498,382.85661659068,390.94728541851,400.33002063726,408.78994578219,418.60090448096,427.44693588739,437.70566275183,446.9554220819,457.68235263341,467.35426952494,478.57076966998,488.68410850494,500.41252756995,510.98743222773,523.2511306012],description:"Cycle of 31 5th root of 5/4 chromatic semitones"},temp31mt:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,285.65057792122,292.50627485027,299.52642572255,306.71505845072,314.07622014281,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,365.63273925968,374.40803131735,383.39382442208,392.5952765698,402.01756125559,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,457.04092569426,468.01003810189,479.24227945773,490.7440946167,502.52195335034,510.98743222773,523.2511306012],description:"Cycle of 31 square root of 5/4 meantones"},temp31to:{frequencies:[261.6255653006,267.53589118464,273.57973594714,279.76011588387,286.08011543105,292.54288870475,299.15166280294,305.90973254237,312.82047235615,319.88733118052,327.11383586587,334.50359293692,342.06029039257,349.78769954651,357.68967690936,365.77016611333,374.03319988033,382.48290424395,391.12349182016,399.95927701915,408.9946695077,418.23417857039,427.68241536008,437.34409519915,447.22403993284,457.32718033558,467.65855857191,478.22333071276,489.02676930874,500.07426891005,511.37133726836,522.92361522538],description:"Third beats with opposite equal rate as octave"},temp31w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,356.97015906904,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 31 thirds tempered by 1/10 Wuerschmidt comma"},temp31w11:{frequencies:[261.6255653006,267.42197848694,273.34681181717,279.40291364591,286.91265577589,293.26931399985,299.76680465545,306.40825140143,313.19684009872,320.13583435099,327.22856275086,334.47843511672,341.88893114233,349.46360748692,357.20610515709,366.80702823839,374.93377645155,383.2405741708,391.73141324262,400.41036830387,409.28161120445,418.34939984118,427.61808628905,437.09212645494,446.77606497733,458.78443573652,468.94897543376,479.33871705477,489.95864449434,500.81386326642,511.90958055231,523.2511306012],description:"Cycle of 31 thirds tempered by 1/11 Wuerschmidt comma"},temp31w12:{frequencies:[261.6255653006,267.46216197987,273.42896553533,279.52888390694,286.63976159726,293.03439921138,299.57169286871,306.25482853931,313.08705807777,320.0717057658,327.2121755928,334.51194000906,341.9745565771,349.60365642833,357.40295156876,366.49485373999,374.67097398132,383.02949720151,391.57448819698,400.31011139524,409.24061734241,418.37035125513,427.70376253715,437.24539007841,446.99988402026,458.37102198078,468.59680699416,479.0507177135,489.73784363297,500.66339010461,511.83267129957,523.2511306012],description:"Cycle of 31 thirds tempered by 1/12 Wuerschmidt comma"},temp31w13:{frequencies:[261.6255653006,267.49616787535,273.49850059869,279.63551774138,286.40905375482,292.83577174957,299.40669857094,306.12507001426,312.99419468163,320.01745343487,327.19830857776,334.54029455907,342.04702698539,349.72220057363,357.56974544479,366.23091133098,374.44874787361,382.85098402684,391.44175752404,400.22529663315,409.2059314354,418.38808223908,427.77627085136,437.37511801764,447.18935574711,458.02150335998,468.29902426597,478.80716193382,489.55109116118,500.53609997149,511.7676037195,523.2511306012],description:"Cycle of 31 thirds tempered by 1/13 Wuerschmidt comma"},temp31w14:{frequencies:[261.6255653006,267.52531966849,273.55811412425,279.72695193191,286.21145362846,292.66562728487,299.26534666214,306.01389218024,312.91461811683,319.97095981222,327.18642276261,334.56459899164,342.10915585471,349.82384327668,357.71250180664,366.00482869479,374.25837321367,382.69803863807,391.32802257119,400.15261355898,409.17620468607,418.4030501472,427.83842920638,437.48634583318,447.35182400506,457.72212848121,468.04393370572,478.5984967348,489.39107187298,500.42702361787,511.71183724724,523.2511306012],description:"Cycle of 31 thirds tempered by 1/14 Wuerschmidt comma"},temp31w15:{frequencies:[261.6255653006,267.55058630145,273.60979095449,279.80621811014,286.0403087015,292.51824916652,299.142895223,305.91756930507,312.84566908988,319.93066920159,327.176122954,334.58566413263,342.16300881716,349.91195724514,357.83639571789,365.80900091179,374.09345893182,382.56553686518,391.22947931103,400.08963362509,409.15044340767,418.41645289306,427.89230922859,437.58276480531,447.49267964143,457.46282942114,467.82296651709,478.41773025336,489.25243249537,500.33250769337,511.66351279634,523.2511306012],description:"Cycle of 31 thirds tempered by 1/15 Wuerschmidt comma, almost 31-tET"},temp31w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,278.83674800471,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,356.32163474066,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,445.77026919414,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 31 thirds tempered by 1/8 Wuerschmidt comma"},temp31w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,356.68171037974,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,446.1797636563,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 31 thirds tempered by 1/9 Wuerschmidt comma"},temp32ebf:{frequencies:[261.6255653006,266.99024669658,272.64192755012,278.59596223891,284.86852586219,291.47665855944,298.4383110444,304.47357861204,310.83171904039,317.53000821614,324.58664278196,332.02079024875,339.85265231199,346.64232633314,353.79523650997,361.33080945807,369.26952339658,377.6329406438,386.44378308989,395.72598875513,403.77301123196,412.25053247262,421.18158418009,430.59042797451,440.50262726312,450.945108697,459.9980085603,469.53522100534,479.58265227668,490.16760508681,501.31882698223,513.0666164148,523.2511306012],description:"Cycle of 32 equal beating fifths"},temp33a12:{frequencies:[261.6255653006,266.94139439278,272.36523138282,277.89927397158,284.73748648557,290.5229142688,296.42589304627,302.44880952638,308.5941041528,316.1876182869,322.61206437627,329.16704532903,335.85521147284,342.67927280589,351.11151394887,358.24555988319,365.52455654698,372.95145333883,382.12859604556,389.89286138208,397.81488464837,405.89786889835,414.14508930077,424.3358756666,432.95772800787,441.75476312782,450.73053786756,459.88868900496,471.20507923536,480.77924170569,490.54793493862,500.51511311891,512.83118959171,523.2511306012],description:'Cycle of 33 fifths tempered by 1/12 "11 fifths" comma'},temp34eb2a:{frequencies:[261.6255653006,267.30377714022,273.10522651459,279.03258811962,285.08859470169,291.27603831759,293.96161656556,300.34163653669,306.86012579271,313.52008961307,320.32459850253,327.27678960683,334.37986815896,341.63710895701,349.05185787385,356.62753339984,364.36762821878,372.27571081823,375.70810971034,383.86232137672,392.19350864246,400.70551251195,409.40225735312,418.28775270674,427.36609513501,436.64147011015,446.11815394416,455.80051576031,465.69301950749,469.98673021106,480.18712562304,490.60890615053,501.2568766435,512.13594623433,523.2511306012],description:"Cycle of 34 thirds, 5/4 beats twice 3/2"},temp34ebsi:{frequencies:[261.6255653006,266.99788221884,272.57696520339,278.14698300137,283.93137567849,289.70637009331,295.70363067102,301.69114426564,307.90910207865,314.36637542255,320.81315450625,327.50805511637,334.19207543599,341.13334896852,348.06334108321,355.26005273528,362.44506998142,369.90662102486,377.65534755435,385.39148338011,393.42536256589,401.44618836017,409.77571602141,418.09170597447,426.72775997548,435.3497813463,444.30364141769,453.60211446558,462.88547695756,472.52613162558,482.15112257833,492.14655599832,502.125745683,512.48900933996,523.2511306012],description:"Cycle of 34 equal beating major sixths"},temp34ebt:{frequencies:[261.6255653006,266.93199967636,272.36578831151,277.92998813547,283.62773001764,289.46221547291,295.43672985114,301.55463262869,307.81936583026,314.23445063866,320.80349820247,327.5302045997,334.16324661664,340.95548417522,347.91073392156,355.03290870525,362.32601803901,369.79415983503,377.44153922514,385.2724539348,393.29131162714,401.50262139782,409.91100286066,418.20230551726,426.69260242977,435.3866631899,444.28938530291,453.40576935587,462.74094691381,472.3001707563,482.08881469934,492.11238732973,502.37652397446,512.8870010249,523.2511306012],description:"Cycle of 34 equal beating thirds"},temp34w10:{frequencies:[261.6255653006,267.37376533775,273.24825962152,279.25182297475,281.06516151868,287.24047076273,293.55146000581,300.00110689476,306.59245933664,313.32863150945,320.21280450383,327.24823031411,334.4382321302,341.78620813039,349.29562523194,351.5637974276,359.28803828513,367.18199034811,375.24938058245,383.49402021056,391.91980359563,400.53071066429,409.33081115087,418.32425711308,427.51529892703,436.90827798988,446.50763144636,449.40705529895,459.28102021135,469.37192694062,479.68454193593,490.22373920221,500.99449133668,512.00188868489,523.2511306012],description:"Cycle of 34 thirds tempered by 1/10 Wuerschmidt comma"},temp34w5:{frequencies:[261.6255653006,266.84400329087,272.16653090376,277.59522118835,285.18293865736,290.87125860088,296.67303727804,302.5905394405,308.62607485572,314.78199505921,321.06070411799,327.46464776022,333.99632772474,340.65828815182,347.45313114562,356.95032497057,364.07013256472,371.33195122039,378.73861781039,386.29301712643,393.99809806388,401.85686830172,409.8723892274,418.04779164423,426.38625992488,434.89105154177,443.56547936435,455.68978545099,464.77906877635,474.04965097839,483.50514461458,493.14924173292,502.98569917153,513.01835960126,523.2511306012],description:"Cycle of 34 thirds tempered by 1/5 Wuerschmidt comma"},temp34w6:{frequencies:[261.6255653006,267.02047390967,272.52663052146,278.06968704778,283.80368699438,289.65592453275,295.6288411546,301.72492193478,307.94670831505,314.29679425134,320.77782174252,327.39249271371,334.14356492035,341.03384719449,348.06621207862,355.14570764395,362.46906930947,369.94344613252,377.57194788125,385.35775486011,393.30411308867,401.41432870635,409.69178284295,418.13992649314,426.76227456772,435.56242170336,444.42154779224,453.58584388327,462.93911228358,472.48525217168,482.22824196207,492.17213857029,502.32108537715,512.67931193931,523.2511306012],description:"Cycle of 34 thirds tempered by 1/6 Wuerschmidt comma"},temp34w7:{frequencies:[261.6255653006,267.14659557842,272.78413659373,276.97759061533,282.82259314675,288.79093992594,294.88523549471,301.10813946365,307.46236235072,313.95067836072,320.57591524951,327.34096447962,334.24877325582,341.30235609413,348.50479124753,353.86228320674,361.3297679824,368.9548354601,376.74081403286,384.69109896591,392.80915578714,401.0985286019,409.56282802254,418.20574780595,427.03105980737,436.04260883433,442.74580331919,452.08897683944,461.62931955889,471.37098776125,481.31823237599,491.47539447856,501.84689823661,512.43727265667,523.2511306012],description:"Cycle of 34 thirds tempered by 1/7 Wuerschmidt comma"},temp34w8:{frequencies:[261.6255653006,267.24122592191,272.97742543896,276.16133434798,282.08899791039,288.14389744169,294.32876096318,300.64638059818,307.09960331181,313.69134300364,320.42456924675,327.30232268102,334.32770172848,341.50387698892,348.83408706747,352.90276052629,360.47764004221,368.21511264804,376.11866406852,384.19186344763,392.4383479509,400.86184099795,409.46613795376,418.25512179799,427.23275920923,436.40309460541,441.49314144476,450.96957067185,460.64940473745,470.53701427025,480.63685362987,490.95348377613,501.49155234204,512.25581818623,523.2511306012],description:"Cycle of 34 thirds tempered by 1/8 Wuerschmidt comma"},temp34w9:{frequencies:[261.6255653006,267.31485098896,273.12785536516,279.06726965397,281.5197407082,287.64164332106,293.89667226994,300.28772424256,306.81775371411,313.48978461115,320.30690488373,327.27226963218,334.38910256736,341.66069947616,349.09042189481,352.15826244648,359.81626391233,367.64079770339,375.63548096925,383.80401588848,392.15018302326,400.67784514756,409.39095139962,418.29352970104,427.38970265849,436.68368016368,440.52130132575,450.10083737825,459.88868900496,469.88938665048,480.10755840871,490.54793493862,501.21534712998,512.11473036853,523.2511306012],description:"Cycle of 34 thirds tempered by 1/9 Wuerschmidt comma"},temp35ebsi:{frequencies:[261.6255653006,266.57889315685,271.71450319234,277.03910343536,282.55964921963,288.28335166643,294.21768457231,300.3704033182,306.74954035112,312.48255822683,318.42655208483,324.58928450704,330.97880464114,337.6034601246,344.47190142434,351.59310182482,358.97636423712,366.63132974323,373.51095055492,380.64374131787,388.03901984907,395.70644562254,403.65603146762,411.89816253905,420.4436041444,429.30351656419,438.48947534443,446.74502047858,455.30437022365,464.17870575399,473.37961532931,482.91911915131,492.80967579032,503.06420520117,513.69610107468,523.2511306012],description:"Cycle of 35 equal beating major sixths"},temp37ebs:{frequencies:[261.6255653006,266.54882370674,271.76117582243,276.81154351547,282.15846820925,287.3392230449,292.82419544994,298.13870690002,303.76528724985,309.7222634282,315.49411047005,321.60488016898,327.52574544851,333.79428377068,339.86801168664,346.29839044807,353.1063601343,359.70275861181,366.68649693083,373.45319917734,380.61724149647,387.55864668979,394.907650003,402.68818871569,410.22692643911,418.2083422233,425.94171605945,434.12919568644,442.06222705415,450.46108885682,459.35313199837,467.96883572953,477.09045247204,485.92859505436,495.28571063961,504.35203618851,513.95073426779,523.2511306012],description:"Cycle of 37 equal beating sevenths"},temp37ebt:{frequencies:[261.6255653006,266.44794669373,271.38606435347,276.44269655507,281.62068893017,286.92295259461,292.35247205526,297.91229840101,303.60556084342,309.43546158348,315.40528084,321.51837488336,327.7781831369,333.8061589736,339.9788066307,346.29959662983,352.77208770341,359.39991652139,366.18681567584,373.13659908053,380.25317623321,387.54055229398,395.00282568127,402.64419215928,410.46895395112,418.00392297279,425.71973353547,433.62072344005,441.71133574434,449.99612361773,458.47974493329,467.16697490003,476.06269518051,485.17191513214,494.49975815874,504.05146656861,513.83241864047,523.2511306012],description:"Cycle of 37 equal beating thirds"},temp3ebt:{frequencies:[261.6255653006,330.24866439584,416.02753826489,523.2511306012],description:"Cycle of 3 equal beating thirds"},temp4ebmt:{frequencies:[261.6255653006,310.36356181711,368.84915763691,439.03187262068,523.2511306012],description:"Cycle of 4 equal beating minor thirds"},temp4ebsi:{frequencies:[261.6255653006,310.92686529443,370.08842528703,441.08229727815,523.2511306012],description:"Cycle of 4 equal beating major sixths"},temp53ebs:{frequencies:[261.6255653006,264.97369574946,268.51842903659,272.2713107977,275.7058824095,279.342132921,283.19190440533,286.71515038985,290.44528277978,294.39444663109,298.00865518834,301.83509073593,305.88621462445,310.17522146598,314.10044576101,318.25616227247,322.65590013911,326.68246801001,330.94547393755,335.45880590636,339.58933056423,343.96239778214,348.59225483118,353.4939765515,357.97994689961,362.72933676467,367.75761084241,372.35940104854,377.23140801172,382.38950169412,387.11009989437,392.10789272021,397.3991578827,403.00112480292,408.12795020911,413.55582307376,419.3024201087,424.56160969567,430.12961973912,436.02458225248,441.41955172249,447.13131541518,453.17847579573,459.58072182695,465.43995070361,471.64323472325,478.21077610462,484.22127701861,490.5847168482,497.32181757346,503.48749858841,510.01522804676,516.92626488088,523.2511306012],description:"Cycle of 53 equal beating harmonic sevenths"},temp53ebsi:{frequencies:[261.6255653006,265.08815342092,268.54511416675,272.14096825888,275.73097879106,279.31515577755,283.04333763043,286.76545980208,290.48153462492,294.34691329876,298.20601137227,302.05883614112,306.06646174912,310.06757319581,314.22944103195,318.38454699407,322.53289853772,326.84792360782,331.1559371129,335.45694960827,339.93076775401,344.39731584765,348.85660497561,353.49505873963,358.12597594237,362.74936749482,367.55851619873,372.35985057275,377.35409330215,382.34021841275,387.3182413058,392.49627136254,397.66588656991,402.8271015422,408.19568270781,413.55554119639,418.90668980097,424.47283359145,430.02993471298,435.57800299537,441.34898312942,447.11058430799,453.10367443873,459.08702461554,465.06065502782,471.27428848056,477.47782740925,483.67128540638,490.11358366391,496.54541154487,502.96678854317,509.64616466331,516.31468511822,523.2511306012],description:"Cycle of 53 equal beating major sixths"},temp53ebt:{frequencies:[261.6255653006,265.06408390481,268.61942739596,272.14046995187,275.78114176924,279.3866896354,283.11473715719,286.8068186786,290.62433945466,294.40503066492,298.31417332138,302.18560037327,306.18856199636,310.15290198883,314.25193588094,318.31142144389,322.50883104059,326.66574402863,330.9638909587,335.40807143415,339.80937339101,344.36021509659,348.86714800611,353.52720940583,358.14231011275,362.91421253104,367.64007568808,372.5265022753,377.36578530136,382.3694885676,387.32491504393,392.44870495902,397.52306357866,402.76982394565,407.96596497751,413.33865052838,418.89387526617,424.39550434456,430.08405345947,435.71772111176,441.54279782575,447.31167294612,453.27655186057,459.18388087721,465.29191391782,471.34101945319,477.59564801313,483.78993007475,490.19466758193,496.53761595054,503.09606844751,509.59124455492,516.30709807412,523.2511306012],description:"Cycle of 53 equal beating thirds"},temp57ebs:{frequencies:[261.6255653006,264.8277951114,268.04955507264,271.33445958124,274.63939933433,278.00911284632,281.39937814535,284.85609135359,288.33388628378,291.8798428433,295.4474281527,299.08493440323,302.74462553584,306.42663750246,310.18081323211,313.95788745209,317.80898926922,321.68357852782,325.63410692083,329.60872876069,333.66125215256,337.73849074816,341.89564167341,346.07814569972,350.28615866377,354.57664765081,358.89330206442,363.2945606359,367.72266219717,372.23755268366,376.77997919433,381.41143316036,386.07113633698,390.82216502962,395.60217018381,400.41132814233,405.3147417445,410.24806349136,415.27807310888,420.33876095689,425.4986359826,430.68997922537,435.98307052812,441.30844296951,446.73819252663,452.20105472878,457.69723413281,463.30113726238,468.93921588924,474.68780077646,480.47144432851,486.36844238798,492.30140788993,498.35065469266,504.4367956254,510.6422225112,516.88549425379,523.2511306012],description:"Cycle of 57 equal beating harmonic sevenths"},temp59ebt:{frequencies:[261.6255653006,264.71774803536,267.84005552541,271.00645194849,274.20369404321,277.44608402629,280.72006081878,284.04026812198,287.39281927261,290.79271098314,294.22572486522,297.70721418515,301.22261902261,304.78766466692,308.38743972219,312.03804524126,315.72421513091,319.46243532331,323.23707283878,327.06501147453,330.93024062011,334.83312418563,338.79111909993,342.78767359614,346.84065928187,350.93313112856,355.08338946648,359.27407840069,363.52394351295,367.81521017702,372.16707169716,376.56132871014,381.01763522853,385.51735474883,390.08061088885,394.68832388107,399.36109834092,404.07939600279,408.86431870994,413.69585627072,418.57446131049,423.52195428502,428.51764625978,433.58387848862,438.69946807471,443.88729218006,449.12565432864,454.4379830027,459.80206875391,465.24189440938,470.73471441434,476.30509804765,481.92974808423,487.63381799831,493.39345924022,499.23442935246,505.13230099895,511.11345315981,517.15287439575,523.2511306012],description:"Cycle of 59 equal beating thirds"},temp5ebf:{frequencies:[261.6255653006,300.99242152138,345.28013476976,397.76927639746,456.81956072863,523.2511306012],description:"Cycle of 5 equal beating fifths"},temp5ebs:{frequencies:[261.6255653006,300.72264357012,345.40501873528,396.4705903526,454.83124362955,523.2511306012],description:"Cycle of 5 equal beating harmonic sevenths"},temp6:{frequencies:[261.6255653006,292.50629174609,327.17562781541,373.91502405318,418.23333786749,467.5991148023,523.2511306012],description:"Tempered wholetone scale with approximations to 5/4 (4), 7/5 (4) and 7/4 (1)"},temp65ebf:{frequencies:[261.6255653006,264.41601755103,267.24454169377,270.11165630441,273.01788702098,275.96376822181,278.903505094,281.88335012505,284.90384796088,287.96555727487,291.06903608099,294.16604397209,297.30530343106,300.48739162418,303.71289539257,306.98240612292,310.29652144782,313.60372560746,316.95605020285,320.35411162765,323.7985328567,327.28994911888,330.77408078649,334.30574717623,337.88559766085,341.51429052286,345.19248907458,348.92086961342,352.64147345074,356.41283883338,360.23565716142,364.11063345825,368.0384739541,371.95812372083,375.93124824951,379.95858022583,384.04085801267,388.17883226226,392.30817269042,396.49385281186,400.73664000181,405.03730976228,409.39665754461,413.81548025993,418.22508312451,422.69484912531,427.22559773342,431.81816208034,436.47338166162,441.11888946365,445.82778005125,450.60091414809,455.43916939942,460.34343547357,465.31460883154,470.27541574397,475.30390033467,480.4009926512,485.56762723834,490.80474851567,496.03094699932,501.32844669322,506.69822455894,512.14126217109,517.65855736571,523.2511306012],description:"Cycle of 65 equal beating fifths"},temp65ebt:{frequencies:[261.6255653006,264.43406811535,267.2034679247,270.07937559507,272.91523803531,275.86016780291,278.76409255008,281.77970028627,284.75331888701,287.84130158502,290.886287826,294.04838131756,297.16644728835,300.4044304772,303.59732911309,306.91302510559,310.18255295306,313.57782661988,316.92582314139,320.40258196387,323.83093239735,327.39113302053,330.90176198948,334.36350914498,337.95839429282,341.50322405771,345.18438591943,348.81429298672,352.58380229516,356.30082494405,360.1608038988,363.96703524466,367.91965255368,371.81723365001,375.86471396542,379.85583700975,384.00045811272,388.08736764479,392.33145942297,396.5164558179,400.86240365726,405.1478399234,409.59809307723,413.98637838791,418.31356254814,422.80716945583,427.23820566351,431.83965831621,436.37704077554,441.08892851835,445.73520856761,450.56017999004,455.31796985254,460.25874195194,465.13071889642,470.19006822446,475.1789734801,480.35974823468,485.46838574269,490.77349931217,496.0047455553,501.43718079349,506.7939752079,512.35679191473,517.84214996629,523.2511306012],description:"Cycle of 65 equal beating thirds"},temp6eb2:{frequencies:[261.6255653006,293.46010680596,329.2739659995,369.56455759223,414.89147313404,465.88425311859,523.2511306012],description:"Cycle of 6 equal beating 9/8 seconds"},temp6s:{frequencies:[261.6255653006,271.93638072959,309.96730300827,353.31693843766,402.72911708552,459.05170412301,523.2511306012],description:"Cycle of 6 tempered harmonic sevenths, 6/5 and 4/3 minimax, Op de Coul, 2002"},temp6teb:{frequencies:[261.6255653006,314.31996068356,377.55323514312,453.43316449459,544.48907971635,653.75617798246,784.8766959018],description:"Cycle of 6 equal beating 6/5's in a twelfth"},"temp7-5ebf":{frequencies:[261.6255653006,272.53310095338,288.29512120063,313.54121701986,318.29837158817,352.05202827415,359.67534615791,387.61143614087,414.35283422339,427.61576999092,475.86500581459,472.62064557223,523.2511306012],description:"7 equal beating fifths on white, 5 equal beating fifths on black"},temp7ebf:{frequencies:[261.6255653006,288.29512120063,318.29837158817,352.05202827415,387.61143614087,427.61576999092,472.62064557223,523.2511306012],description:"Cycle of 7 equal beating fifths"},temp7ebnt:{frequencies:[261.6255653006,288.84289825546,318.65722544634,351.9228541964,388.36258888271,429.02057812008,473.55803233064,523.2511306012],description:"Cycle of 7 equal beating 11/9 neutral thirds"},temp8eb3q:{frequencies:[261.6255653006,285.27029088455,311.06453578321,339.20371183191,369.9009952302,403.38894083349,439.92124473489,479.77466958441,523.2511306012],description:`Cycle of 8 equal "beating" 12/11's`},temp9ebmt:{frequencies:[261.6255653006,282.57058469242,305.18178513943,329.6176429161,355.99737593287,384.50587463168,415.28223014648,448.54214811156,484.4478959333,523.2511306012],description:"Cycle of 9 equal beating 7/6 septimal minor thirds"},tenney_11:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,523.2511306012],description:`Scale of James Tenney's "Spectrum II" for wind quintet`},tertiadia:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"Tertiadia 2048/2025 and 262144/253125 scale"},tertiadie:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,383.2405741708,408.78994578219,436.04260883433,476.27480687611,490.54793493862,523.2511306012],description:"First Tertiadie 262144/253125 and 128/125 scale"},tet3a:{frequencies:[261.6255653006,280.31310567921,313.95067836072,336.37572681506,366.27579142084,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Eight notes, two major one minor tetrad"},tetracot:{frequencies:[261.6255653006,266.81074454173,272.09868928948,277.49143626213,289.66902367154,295.4099985897,301.26475437609,307.23554606336,320.71844041089,327.07478634962,333.55710924695,340.16790585091,355.09602205939,362.13370020095,369.31085868177,376.6302618745,393.15851224787,400.95055410677,408.89702710335,417.00099192139,435.30089370336,443.92815899023,452.72640877864,461.69903182491,481.96048707062,491.51250279099,501.25383072009,523.2511306012],description:"tetracot temperament, g=176.28227, 5-limit"},"tetragam-di":{frequencies:[261.6255653006,279.06726965397,290.69507255622,290.69507255622,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,436.04260883433,457.84473927605,523.2511306012],description:"Tetragam Dia2"},"tetragam-enh":{frequencies:[261.6255653006,271.31540105247,279.06726965397,279.06726965397,327.03195662575,348.83408706747,366.27579142084,392.4383479509,406.97310157871,418.60090448096,418.60090448096,457.84473927605,523.2511306012],description:"Tetragam Enharm."},"tetragam-hex":{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,327.03195662575,343.38355445704,381.53728273004,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Tetragam/Hexgam"},"tetragam-py":{frequencies:[261.6255653006,275.62199471997,294.32876096318,294.32876096318,331.11985608357,348.83408706747,372.50983809402,392.4383479509,413.43299207996,441.49314144476,441.49314144476,465.11211608996,523.2511306012],description:"Tetragam Pyth."},"tetragam-slpe":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,279.06726965397,345.21700307457,348.83408706747,396.55020354877,455.51656649021,392.4383479509,455.51656649021,418.60090448096,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-slpe2":{frequencies:[261.6255653006,261.6255653006,300.52885648597,300.52885648597,286.29520819723,345.21700307457,313.29104303136,396.55020354877,396.55020354877,387.04559340587,455.51656649021,423.54155496477,523.2511306012],description:"Tetragam Slendro as 5-tET, Pelog-like pitches on C# E F# A B"},"tetragam-sp":{frequencies:[261.6255653006,271.31540105247,271.31540105247,271.31540105247,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,406.97310157871,406.97310157871,457.84473927605,523.2511306012],description:"Tetragam Septimal"},"tetragam-un":{frequencies:[261.6255653006,269.80136421624,285.40970760065,285.40970760065,319.76457981184,348.83408706747,359.73515228832,392.4383479509,404.70204632437,428.11456140098,428.11456140098,479.64686971777,523.2511306012],description:"Tetragam Undecimal"},tetragam13:{frequencies:[261.6255653006,275.95382006469,307.00724256551,307.00724256551,341.55514486295,341.55514486295,400.80167111126,400.80167111126,445.90437572008,445.90437572008,445.90437572008,496.08254310677,523.2511306012],description:"Tetragam (13-tET)"},tetragam5:{frequencies:[261.6255653006,300.52885648597,300.52885648597,300.52885648597,300.52885648597,345.21700307457,345.21700307457,396.55020354877,455.51656649021,455.51656649021,455.51656649021,455.51656649021,523.2511306012],description:"Tetragam (5-tET)"},tetragam7:{frequencies:[261.6255653006,288.85811466493,288.85811466493,288.85811466493,318.92511007349,352.12195684808,352.12195684808,388.77403176757,429.24143792307,429.24143792307,429.24143792307,473.92081401802,523.2511306012],description:"Tetragam (7-tET)"},tetragam8:{frequencies:[261.6255653006,285.30470202322,311.12698372208,311.12698372208,339.28638158975,339.28638158975,403.48177901006,403.48177901006,440,440,440,440,523.2511306012],description:"Tetragam (8-tET)"},tetragam9a:{frequencies:[261.6255653006,282.57118533961,305.19387818096,305.19387818096,329.62755691287,356.01738450312,415.30469757995,415.30469757995,448.55379686399,448.55379686399,448.55379686399,484.46508327871,523.2511306012],description:"Tetragam (9-tET) A"},tetragam9b:{frequencies:[261.6255653006,282.57118533961,282.57118533961,282.57118533961,305.19387818096,305.19387818096,384.52019141924,384.52019141924,415.30469757995,415.30469757995,415.30469757995,448.55379686399,523.2511306012],description:"Tetragam (9-tET) B"},tetraphonic_31:{frequencies:[261.6255653006,266.96486255163,272.52663052146,278.32506946872,284.37561445717,290.69507255622,297.30177875068,304.21577360535,311.45900631024,319.05556743976,327.03195662575,333.99008336247,341.25073734861,348.83408706747,356.76213450082,365.05892832642,373.75080757229,382.86668092771,392.4383479509,400.61414686654,409.13785211902,418.03215325205,427.32175665765,437.0336147635,447.19718719986,457.84473927605,467.58611670746,477.75103228805,488.36772189445,499.46698830115,511.08249965699,523.2511306012],description:"31-tone Tetraphonic Cycle, conjunctive form on 5/4, 6/5, 7/6 and 8/7"},tetratriad:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"4:5:6 Tetratriadic scale"},tetratriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"3:5:9 Tetratriadic scale"},tetratriad2:{frequencies:[261.6255653006,296.75121990114,305.22982618403,356.10146388137,373.75080757229,415.4517078616,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"3:5:7 Tetratriadic scale"},thailand:{frequencies:[261.6255653006,281.86483947605,307.02089761314,350.84574289301,397.92692612688,408.40584780369,474.03826620294,539.82938999168],description:"Observed ranat tuning from Thailand, Helmholtz/Ellis p. 518, nr.85"},thailand2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,356.77227917518,391.76907592069,435.19747628762,477.88722128969,525.37110555681],description:"Observed ranat t'hong tuning, Helmholtz/Ellis p. 518"},thailand3:{frequencies:[261.6255653006,293.32570896007,322.47117131255,354.92237405774,396.55020354877,437.46578647972,488.21056770985,538.58355905405],description:"Observed tak'hay tuning. Helmholtz, p. 518"},thailand4:{frequencies:[261.6255653006,281.88044777549,304.38587215019,332.5176539627,392.71966479735,416.35036198375,461.923848369,523.2511306012,563.76089555097,608.77174430039,665.59794246809,786.00196746963,831.57545378481,924.97296635309,1046.5022612024,1127.52179110194],description:"Khong mon (bronze percussion vessels) tuning, Gemeentemuseum Den Haag 1/1=465"},thirds:{frequencies:[261.6255653006,272.52663052146,290.69507255622,313.95067836072,327.03195662575,348.83408706747,363.36884069528,392.4383479509,418.60090448096,436.04260883433,454.2110508691,502.32108537715,523.2511306012],description:"Major and minor thirds parallellogram"},thomas:{frequencies:[261.6255653006,280.80530480292,294.66217084622,313.95044496966,332.05645032639,350.21604710412,374.62015588545,391.99543598175,420.73257541073,441.99197952365,468.79922683914,499.49209883845,523.2511306012],description:"Tuning of the Thomas/Philpott organ, Gereformeerde Kerk, St. Jansklooster"},tiby1:{frequencies:[261.6255653006,295.66718139806,337.56154978455,348.04364484358,393.32961502355,444.50800708553,507.49227916989,523.2511306012],description:"Tiby's 1st Byzantine Liturgical genus, 12 + 13 + 3 parts"},tiby2:{frequencies:[261.6255653006,295.66718139806,311.12698372208,348.04364484358,393.32961502355,444.50800708553,467.75037672729,523.2511306012],description:"Tiby's second Byzantine Liturgical genus, 12 + 5 + 11 parts"},tiby3:{frequencies:[261.6255653006,295.66718139806,324.07484847125,348.04364484358,393.32961502355,444.50800708553,487.21628271135,523.2511306012],description:"Tiby's third Byzantine Liturgical genus, 12 + 9 + 7 parts"},tiby4:{frequencies:[261.6255653006,286.76251801126,324.07484847125,348.04364484358,393.32961502355,431.12067692221,487.21628271135,523.2511306012],description:"Tiby's fourth Byzantine Liturgical genus, 9 + 12 + 7 parts"},todi_av:{frequencies:[261.6255653006,276.38325105256,310.05056613125,371.27895029721,392.44854854484,413.39000965417,495.88429116026,523.2511306012],description:"Average of 8 interpretations of raga Todi, in B. Bel, 1988."},tonos15_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,383.71749577421,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,767.43499154843,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-15"},tonos17_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,418.60090448096,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,738.70747849581,784.8766959018,897.00193817349,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-17"},tonos19_pis:{frequencies:[261.6255653006,281.75060878526,305.22982618403,332.97799220076,385.55346465352,406.97310157871,457.84473927605,523.2511306012,542.63080210495,563.50121757052,610.45965236807,665.95598440153,771.10692930703,813.94620315742,915.6894785521,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-19"},tonos21_pis:{frequencies:[261.6255653006,299.00064605783,322.00069575458,348.83408706747,398.6675280771,440.63253103259,465.11211608996,523.2511306012,558.13453930795,598.00129211566,644.00139150917,697.66817413493,797.33505615421,881.26506206518,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-21"},tonos23_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,409.50088481833,448.50096908674,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,819.00176963666,897.00193817349,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-23"},tonos25_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,376.74081403286,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,753.48162806573,856.22912280196,941.85203508216,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-25"},tonos27_pis:{frequencies:[261.6255653006,290.69507255622,327.03195662575,373.75080757229,387.59343007496,436.04260883433,498.33441009638,523.2511306012,550.79066379074,581.39014511244,654.0639132515,747.50161514457,775.18686014993,872.08521766867,996.66882019276,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-27"},tonos29_pis:{frequencies:[261.6255653006,287.78812183066,319.76457981184,359.73515228832,396.94913355953,442.75095666255,479.64686971777,523.2511306012,548.16785110602,575.57624366132,639.52915962369,719.47030457665,793.89826711906,885.50191332511,959.29373943553,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-29"},tonos31_pis:{frequencies:[261.6255653006,273.51763645063,300.86940009569,334.29933343966,388.21858076863,429.81342870813,462.87600014722,501.44900015948,523.2511306012,547.03527290125,601.73880019138,668.59866687931,776.43716153726,859.62685741626,925.75200029443,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31"},tonos31_pis2:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,405.0976494977,448.50096908674,483.00104363188,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,810.19529899541,897.00193817349,966.00208726375,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-31B"},tonos33_pis:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012,546.00117975777,570.81941520131,627.90135672144,697.66817413493,761.09255360175,837.20180896192,930.22423217991,1046.5022612024],description:"Diatonic Perfect Immutable System in the new Tonos-33"},top31:{frequencies:[261.6255653006,267.49189720203,273.48976766293,279.62212612306,285.89198815637,292.30243695391,298.85662483994,305.55777482212,312.40918217641,319.41421606749,326.57632120555,333.89901954025,341.38591199258,349.04068022565,358.99452880887,367.04412845091,375.2742212459,383.6888543241,392.29216556304,401.08838562235,410.08184002413,419.27695128006,428.67824106611,438.29033244612,448.11795214515,458.16593287385,468.4392157049,478.94285250284,489.68200840824,500.66196437769,511.88811978069,523.36599505479],description:"Top temperament, 11-limit, {225/224, 385/384, 1331/1323}, Gene Ward Smith"},trab19:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,367.91095120397,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,5,45,75,225}"},trab19a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,297.67175429757,306.59245933664,313.95067836072,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,436.04260883433,446.50763144636,459.88868900496,465.11211608996,490.54793493862,523.2511306012],description:"Diamond {1,3,9,15,675}"},tranh:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"Bac Dan Tranh scale, Vietnam"},tranh2:{frequencies:[261.6255653006,290.69507255622,307.79478270659,392.4383479509,436.04260883433,523.2511306012],description:"Dan Ca Dan Tranh Scale"},tranh3:{frequencies:[261.6255653006,317.68818643644,348.83408706747,392.4383479509,473.41768959156,476.53227965466,523.2511306012],description:"Sa Mac Dan Tranh scale"},"tri12-1":{frequencies:[261.6255653006,264.29521392612,275.21650375777,319.76457981184,323.02748368748,332.97799220076,336.37572681506,406.97310157871,411.12588832951,428.11456140098,432.48307733364,502.48719684718,523.2511306012],description:"12-tone Tritriadic of 7:9:11"},"tri12-2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,504.56359022259,523.2511306012],description:"12-tone Tritriadic of 6:7:9"},"tri19-1":{frequencies:[261.6255653006,266.96486255163,269.10058145205,305.22982618403,311.45900631024,313.95067836072,320.35783506196,356.10146388137,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,427.32175665765,436.04260883433,439.53094970501,448.50096908674,508.71637697339,512.78610798918,523.2511306012],description:"3:5:7 Tritriadic 19-Tone Matrix"},"tri19-2":{frequencies:[261.6255653006,282.55561052465,290.69507255622,294.32876096318,313.95067836072,322.99452506247,327.03195662575,348.83408706747,353.19451315581,363.36884069528,376.74081403286,387.59343007496,392.4383479509,418.60090448096,423.83341578697,436.04260883433,465.11211608996,470.92601754108,484.4917875937,523.2511306012],description:"3:5:9 Tritriadic 19-Tone Matrix"},"tri19-3":{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,334.88072358477,348.83408706747,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"4:5:6 Tritriadic 19-Tone Matrix"},"tri19-4":{frequencies:[261.6255653006,264.89588486686,290.69507255622,294.32876096318,322.99452506247,327.03195662575,331.11985608357,334.88072358477,363.36884069528,367.91095120397,372.08969287196,376.74081403286,408.78994578219,413.43299207996,418.60090448096,423.83341578697,465.11211608996,470.92601754108,516.79124009995,523.2511306012],description:"4:5:9 Tritriadic 19-Tone Matrix"},"tri19-5":{frequencies:[261.6255653006,266.96486255163,284.8811711051,290.69507255622,302.73815413355,316.53463456122,322.99452506247,329.64821227876,336.37572681506,366.27579142084,373.75080757229,406.97310157871,415.27867508032,423.83341578697,432.48307733364,452.19233508746,470.92601754108,480.53675259294,512.78610798918,523.2511306012],description:"5:7:9 Tritriadic 19-Tone Matrix"},"tri19-6":{frequencies:[261.6255653006,267.07609791103,294.32876096318,299.00064605783,305.22982618403,336.37572681506,341.71502406609,343.38355445704,348.83408706747,356.10146388137,384.42940207435,392.4383479509,398.6675280771,400.61414686654,406.97310157871,448.50096908674,457.84473927605,465.11211608996,512.57253609913,523.2511306012],description:"6:7:8 Tritriadic 19-Tone Matrix"},"tri19-7":{frequencies:[261.6255653006,271.31540105247,288.32205155576,294.32876096318,299.00064605783,305.22982618403,316.53463456122,336.37572681506,348.83408706747,356.10146388137,384.42940207435,392.4383479509,406.97310157871,432.48307733364,448.50096908674,457.84473927605,465.11211608996,474.80195184183,504.56359022259,523.2511306012],description:"6:7:9 Tritriadic 19-Tone Matrix"},"tri19-8":{frequencies:[261.6255653006,264.29521392612,272.43653907335,275.21650375777,316.53463456122,319.76457981184,323.02748368748,332.97799220076,336.37572681506,350.27555023717,390.82337532559,406.97310157871,411.12588832951,423.79017189188,428.11456140098,432.48307733364,497.4115685962,502.48719684718,517.96576564563,523.2511306012],description:"7:9:11 Tritriadic 19-Tone Matrix"},"tri19-9":{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,341.71502406609,366.27579142084,373.75080757229,400.61414686654,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"4:5:7 Tritriadic 19-Tone Matrix"},triang11:{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,418.60090448096,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"11-limit triangular diamond lattice with 64/63 intervals removed"},triaphonic_12:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,367.19377586049,387.59343007496,410.39304360878,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"12-tone Triaphonic Cycle, conjunctive form on 4/3, 5/4 and 6/5"},triaphonic_17:{frequencies:[261.6255653006,271.31540105247,281.75060878526,293.02063313667,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,390.69417751556,406.97310157871,422.62591317789,439.53094970501,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"17-tone Triaphonic Cycle, conjunctive form on 4/3, 7/6 and 9/7"},trichord7:{frequencies:[261.6255653006,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,392.4383479509,436.04260883433,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Trichordal undecatonic, 7-limit"},tricot:{frequencies:[261.6255653006,264.94025538413,268.70564228797,272.11003565477,275.55755973666,279.4738436282,283.01466417842,286.6003471482,290.673570175,294.35628843049,298.08566525814,302.32211998602,306.15242072385,310.03124984507,314.43747949204,318.42127516569,322.45554578164,327.03835025925,331.18179578139,335.37773516927,339.62683737367,344.45368576554,348.81777463097,353.23715677741,358.25743790514,362.79641682209,367.39290067029,372.61436622199,377.33523951767,382.11592657559,387.54663888312,392.45669803325,397.4289679423,403.0773124301,408.18413893183,413.35566924724,419.23036738005,424.541846554,429.92062250389,436.03074525334,441.55507841911,447.14940523431,453.50438708518,459.25010687752,465.06861996272,470.9608512551,477.65424916833,483.70593529179,489.8342966599,496.79592520903,503.09012862502,509.46407999504,516.70469117363,523.2511306012],description:"Tricot temperament, g=565.988015, 5-limit"},tritriad:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Tritriadic scale of the 10:12:15 triad, natural minor mode"},tritriad10:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,366.27579142084,392.4383479509,488.36772189445,523.2511306012],description:"Tritriadic scale of the 10:14:15 triad"},tritriad11:{frequencies:[261.6255653006,309.19384990071,356.76213450082,383.71749577421,421.62797713733,453.48431318771,486.49381977384,523.2511306012],description:"Tritriadic scale of the 11:13:15 triad"},tritriad13:{frequencies:[261.6255653006,294.32876096318,340.11323489078,348.83408706747,392.4383479509,453.48431318771,510.16985233617,523.2511306012],description:"Tritriadic scale of the 10:13:15 triad"},tritriad14:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509,448.50096908674,504.56359022259,523.2511306012],description:"Tritriadic scale of the 14:18:21 triad"},tritriad18:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,426.35277308246,479.64686971777,523.2511306012],description:"Tritriadic scale of the 18:22:27 triad"},tritriad22:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,481.6288815761,523.2511306012],description:"Tritriadic scale of the 22:27:33 triad"},tritriad26:{frequencies:[261.6255653006,294.32876096318,301.87565226992,348.83408706747,392.4383479509,402.50086969323,452.81347840488,523.2511306012],description:"Tritriadic scale of the 26:30:39 triad"},tritriad3:{frequencies:[261.6255653006,305.22982618403,356.10146388137,373.75080757229,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Tritriadic scale of the 3:5:7 triad. Possibly Mathews's 3.5.7a"},tritriad32:{frequencies:[261.6255653006,294.32876096318,322.00069575458,348.83408706747,392.4383479509,429.33426100611,483.00104363188,523.2511306012],description:"Tritriadic scale of the 26:32:39 triad"},tritriad3c:{frequencies:[261.6255653006,305.22982618403,366.27579142084,373.75080757229,427.32175665765,436.04260883433,512.78610798918,523.2511306012],description:"From 1/1 7/6 7/5, a variant of the 3.5.7 triad"},tritriad3d:{frequencies:[261.6255653006,305.22982618403,313.95067836072,363.36884069528,366.27579142084,436.04260883433,508.71637697339,523.2511306012],description:"From 1/1 7/6 5/3, a variant of the 3.5.7 triad"},tritriad5:{frequencies:[261.6255653006,290.69507255622,329.64821227876,366.27579142084,406.97310157871,423.83341578697,470.92601754108,523.2511306012],description:"Tritriadic scale of the 5:7:9 triad. Possibly Mathews's 5.7.9a."},tritriad68:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Tritriadic scale of the 6:7:8 triad"},tritriad68i:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,398.6675280771,448.50096908674,465.11211608996,523.2511306012],description:"Tritriadic scale of the subharmonic 6:7:8 triad"},tritriad69:{frequencies:[261.6255653006,294.32876096318,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Tritriadic scale of the 6:7:9 triad, septimal natural minor"},tritriad7:{frequencies:[261.6255653006,264.29521392612,323.02748368748,332.97799220076,336.37572681506,411.12588832951,428.11456140098,523.2511306012],description:"Tritriadic scale of the 7:9:11 triad"},tritriad9:{frequencies:[261.6255653006,272.93037367779,319.76457981184,362.25078272391,377.90359432309,442.75095666255,461.88217083933,523.2511306012],description:"Tritriadic scale of the 9:11:13 triad"},tsjerepnin:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,470.92601754108,490.54793493862,523.2511306012],description:"Scale from Ivan Tsjerepnin's Santur Opera (1977) & suite from it Santur Live!"},tsuda13:{frequencies:[261.6255653006,281.75060878526,283.42769574232,322.00069575458,340.11323489078,362.25078272391,377.90359432309,402.50086969323,425.14154361347,442.75095666255,485.87604984397,518.26778650024,523.2511306012],description:"Mayumi Tsuda's Harmonic-13 scale. 1/1=440 Hz."},tuneable3:{frequencies:[36.70809598968,41.95210970249,42.82611198796,43.59086398774,44.04971518762,44.86545065405,45.8851199871,46.71939489596,47.1961234153,47.72052478658,48.94412798624,49.55592958607,50.47363198581,51.39133438555,52.00313598538,52.44013712811,53.02280531843,53.39359416681,55.06214398452,57.10148265061,57.68415084093,58.73295358349,59.65065598323,61.1801599828,62.40376318246,62.92816455374,64.23916798194,66.07457278142,66.74199270851,67.29817598108,68.17217826655,68.82767998065,70.35718398022,73.41619197936,79.53420797764,80.7578111773,82.59321597678,85.65222397592,87.18172797549,88.09943037523,89.14823311779,89.73090130811,90.10169015649,91.7702399742,94.39224683061,95.44104957317,96.35875197291,97.88825597248,100.94726397162,102.7826687711,104.00627197076,104.88027425623,105.53577597033,110.12428796904,114.20296530123,114.71279996775,115.36830168185,116.24230396732,117.46590716698,119.30131196646,120.61231539466,122.3603199656,123.88982396517,124.80752636491,125.85632910747,128.47833596388,132.14914556285,134.59635196216,137.6553599613,139.49076476078,140.71436796044,141.58837024591,146.83238395872,152.950399957,154.17400315666,156.00940795614,159.06841595528,161.51562235459,165.18643195356,168.85724155253,171.30444795184,174.36345595098,176.19886075046,183.5404799484,190.88209914634,192.71750394582,195.77651194496,201.89452794324,205.56533754221,208.01254394152,211.07155194066,220.24857593808,229.4255999355,232.48460793464,238.60262393292,244.7206399312,247.77964793034,256.95667192776,269.19270392432,275.3107199226,281.42873592088,293.66476791744],description:"Marc Sabat, 3 octaves of intervals tuneable by ear"},tuners1:{frequencies:[261.6255653006,276.50456653385,293.15590636358,311.0676370396,328.627540632,349.28088891463,369.11955599459,391.76814585061,414.75684959346,439.06365754828,466.60145532616,492.6062100846,523.2511306012],description:"The Tuner's Guide well temperament no. 1 (1840)"},tuners2:{frequencies:[261.6255653006,276.9861853325,293.55936848273,311.27971878774,329.48489606404,349.42029142443,369.90111701824,391.99869425741,415.03962525779,439.89939957166,466.4799232208,493.78769382322,523.2511306012],description:"The Tuner's Guide well temperament no. 2 (1840)"},tuners3:{frequencies:[261.6255653006,276.9180796764,293.64050032496,311.25753558078,329.38199580693,349.20116137147,369.59117881045,391.8877401954,415.37711930697,439.91014033466,466.33569310799,493.52238512763,523.2511306012],description:"The Tuner's Guide well temperament no. 3 (1840)"},turkish:{frequencies:[261.6255653006,279.06726965397,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:"Turkish, 5-limit from Palmer on a Turkish music record, harmonic minor inverse"},turkish_24:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,344.13890881665,348.83408706747,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,458.8518784222,465.11211608996,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Ra'uf Yekta, 24-tone Pythagorean Turkish Theoretical Gamut, 1/1=D (perde yegah) at 294 Hz"},turkish_24a:{frequencies:[261.6255653006,275.62199471997,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,344.52749339997,348.83408706747,367.91095120397,372.08969287196,387.59343007496,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,459.36999119996,465.11211608996,490.54793493862,496.67978412536,516.79124009995,523.2511306012],description:"Turkish gamut with schismatic simplifications"},turkish_41:{frequencies:[261.6255653006,266.80864394988,272.09440643071,275.67629620338,281.13773466533,286.70737164501,290.48162858661,294.30556868769,300.13607443832,306.08208692954,310.11139540064,316.25503135793,322.52037740267,326.76608188608,333.2396629384,339.84149442859,344.31521657963,348.8478314504,355.75887527351,362.80683626646,367.58287746967,374.8650823332,382.29155536296,387.32409620162,392.42288612931,400.19720009986,408.12552912594,413.49815209867,421.6899870258,430.04411333507,435.70527569249,441.44096240275,450.1863739015,459.10504388656,465.14876849982,474.36385666592,483.76150545705,490.12981126508,499.83980314828,509.74215733443,516.45247616827,523.2511306012],description:"Abd\xEF\xBF\xBDlkadir T\xEF\xBF\xBDre and M. Ekrem Karadeniz theoretical Turkish gamut"},turkish_41a:{frequencies:[261.6255653006,268.5590565112,272.09440643071,275.67629620338,279.3053384865,286.70737164501,290.48162858661,294.30556868769,298.17984938441,306.08208692954,310.11139540064,314.19374626607,322.52037740267,326.76608188608,335.42589979828,339.84149442859,344.31521657963,348.8478314504,353.4401143131,362.80683626646,367.58287746967,377.32440283229,382.29155536296,387.32409620162,392.42288612931,402.82271318249,408.12552912594,413.49815209867,424.45650702809,430.04411333507,435.70527569249,441.44096240275,453.1398459935,459.10504388656,465.14876849982,477.47594368525,483.76150545705,490.12981126508,503.11902634639,509.74215733443,516.45247616827,523.2511306012],description:"Karadeniz's theoretical Turkish gamut, quantized to subset of 53-tET"},turkish_aeu:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,516.20836322497,523.2511306012],description:"Arel-Ezgi-Uzdilek (AEU) 24 tone theoretical system"},turkish_bagl:{frequencies:[261.6255653006,277.01530443593,285.40970760065,294.32876096318,311.64221749042,321.08592105074,331.11985608357,348.83408706747,369.35373924791,380.54627680087,392.4383479509,415.52295665389,428.11456140098,441.49314144476,465.11211608996,492.47165233054,507.3950357345,523.2511306012],description:'Ratios of the 17 frets on the neck of "Baglama" ("saz") according to Yal\xEF\xBF\xBD\xEF\xBF\xBDn Tura'},two29:{frequencies:[261.6255653006,265.43099677612,267.95417262175,271.85165581044,274.43586616969,278.42762776199,281.0743490329,285.16266958193,287.87341387594,292.06062910037,294.83694510625,299.12544722478,301.96892109338,306.36116019141,309.2734164419,313.77190187131,316.75460431924,321.36190613206,324.41675883995,329.13550925662,332.26425750751,337.09715242073,340.3015837153,345.25138423021,348.53332930799,353.60286331966,356.96419720496,362.15636101402,365.59900408717,370.91676405444,374.44268531179,379.88907958456,383.50028913155,389.07842928561,392.77699240278,398.49006531303,402.2780950448,408.12936467525,412.00902517967,418.00183444819,421.97534223334,428.1131149215,432.1827401118,438.46898282094,442.63705045414,449.07535460876,453.34424596425,459.9382898638,464.31044382305,471.06399474345,475.54190918343,482.45882552933,487.04505874954,494.12929225872,498.82646444278,506.0820624438,510.89285715645,518.32396488098,523.2511306012],description:"Two 29-tET scales 25 cents shifted, many near just intervals"},two29a:{frequencies:[261.6255653006,264.02813680074,267.95417262175,270.41486126945,274.43586616969,276.95607779319,281.0743490329,283.65552346679,287.87341387594,290.51702578379,294.83694510625,297.54450482308,301.96892109338,304.74197548856,309.2734164419,312.11354980287,316.75460431924,319.66343925668,324.41675883995,327.39595721478,332.26425750751,335.31552138031,340.3015837153,343.42665631876,348.53332930799,351.73399604284,356.96419720496,360.24228665998,365.59900408717,368.95638908389,374.44268531179,377.88128181162,383.50028913155,387.02206376789,392.77699240278,396.38395721814,402.2780950448,405.97231075214,412.00902517967,415.79260233969,421.97534223334,425.85044246025,432.1827401118,436.15157730833,442.63705045414,446.70189207635,453.34424596425,457.50741431695,464.31044382305,468.5743173866,475.54190918343,479.90892674463,487.04505874954,491.51771254425,498.82646444278,503.40730976502,510.89285715645,515.58451111167,523.2511306012],description:"Two 29-tET scales 15.826 cents shifted, 13-limit chords, Mystery temperament, Gene Ward Smith"},xenakis_chrom:{frequencies:[261.6255653006,274.52698453615,329.62755691287,349.22823143301,391.99543598175,411.32572372413,493.88330125613,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 5 + 19 + 6 parts"},xenakis_diat:{frequencies:[261.6255653006,293.66476791741,326.46944327063,349.22823143301,391.99543598175,440,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 12 + 11 + 7 parts"},xenakis_schrom:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Xenakis's Byzantine Liturgical mode, 7 + 16 + 7 parts"},xenoga24:{frequencies:[261.6255653006,265.7783520514,279.38237857051,283.8170195002,294.32876096318,299.00064605783,310.07474405997,314.99656539426,331.11985608357,336.37572681506,348.83408706747,354.37113606854,372.50983809402,378.42269266694,392.4383479509,398.6675280771,419.07356785577,425.72552925031,441.49314144476,448.50096908674,465.11211608996,472.49484809138,496.67978412536,504.56359022259,523.2511306012],description:"M. Schulter, 3+7 ratios Xeno-Gothic adaptive tuning (keyboards 64:63 apart)"},xylophone2:{frequencies:[261.6255653006,295.19538981304,332.68808325276,388.83826257328,446.65787257783,506.59641128799,527.19506190947,579.57827742703,633.13077520476,751.1860077911,842.69088701475],description:"African Yaswa xylophones (idiophone; calbash resonators with membrane)"},xylophone3:{frequencies:[261.6255653006,292.47977325983,348.01999353916,392.4383479509,442.29334161825,523.2511306012],description:"African Banyoro xylophone (idiophone; loose log)"},xylophone4:{frequencies:[261.6255653006,281.70207497315,314.1971709147,349.63190883464,391.76907592069,436.9606979923,505.71930677521,568.9637969584,597.94115990992,660.7800775993,716.43551549302],description:"African Bapare xylophone (idiophone, loose-log)"},zalzal:{frequencies:[261.6255653006,294.32876096318,321.08592105074,348.83408706747,392.4383479509,428.11456140098,465.11211608996,523.2511306012],description:"Tuning of popular flute by Al Farabi & Zalzal. First tetrachord is modern Rast"},zalzal2:{frequencies:[261.6255653006,294.32876096318,331.11985608357,348.83408706747,387.59343007496,419.89288258121,465.11211608996,523.2511306012],description:"Zalzal's Scale, a medieval Islamic with Ditone Diatonic & 10/9 x 13/12 x 72/65"},zarlino:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Ptolemy's Intense Diatonic Systonon, also Zarlino's scale"},zarlino2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,363.36884069528,367.91095120397,392.4383479509,408.78994578219,436.04260883433,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"16-note choice system of Zarlino, Sopplimenti musicali (1588)"},zartehijaz1:{frequencies:[261.6255653006,280.55696721076,336.07142343876,350.07440004945,375.4060213132,393.89732161404,446.43551156053,468.42549744394,502.32108537715,523.2511306012],description:"Scale from Zarlino temperament extraordinaire -- lower Hijaz tetrachord"},zesster_a:{frequencies:[261.6255653006,279.06726965397,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,502.32108537715,523.2511306012],description:"Harmonic six-star, group A, from Fokker"},zesster_b:{frequencies:[261.6255653006,293.02063313667,299.00064605783,334.88072358477,366.27579142084,418.60090448096,457.84473927605,478.40103369253,523.2511306012],description:"Harmonic six-star, group B, from Fokker"},zesster_c:{frequencies:[261.6255653006,299.00064605783,305.22982618403,348.83408706747,398.6675280771,406.97310157871,457.84473927605,465.11211608996,523.2511306012],description:"Harmonic six-star, group C on Eb, from Fokker"},zesster_mix:{frequencies:[261.6255653006,274.70684356563,279.06726965397,293.02063313667,299.00064605783,313.95067836072,334.88072358477,348.83408706747,358.80077526939,366.27579142084,392.4383479509,418.60090448096,457.84473927605,478.40103369253,488.36772189445,502.32108537715,523.2511306012],description:"Harmonic six-star, groups A, B and C mixed, from Fokker"},zest24:{frequencies:[261.6255653006,269.33468959023,272.52663052146,280.55696721076,292.24684137387,300.8582598368,308.87634556583,317.97777315513,326.45210604021,336.07142343876,350.07440004945,360.38977980792,364.66083404534,375.4060213132,391.04793957621,402.57065589001,410.30971075781,422.39999923493,436.81711699543,449.68847932918,465.03699205118,478.73988827571,487.94322738789,502.32108537715,523.2511306012],description:"Zarlino Extraordinaire Spectrum Temperament (two circles at ~50.28c apart)"},zir_bouzourk:{frequencies:[261.6255653006,281.75060878526,305.22982618403,313.95067836072,353.19451315581,392.4383479509,523.2511306012],description:"Zirafkend Bouzourk (IG #3, DF #9), from both Rouanet and Safi al-Din"},zwolle:{frequencies:[261.6255653006,275.62199471997,294.32876096318,310.07474405997,331.11985608357,348.83408706747,367.49599295996,392.4383479509,413.43299207996,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"Henri Arnaut De Zwolle. Pythagorean on G flat."},zwolle2:{frequencies:[261.6255653006,273.37431312998,292.50627485027,311.68386704488,327.03195662575,349.91912034749,365.63284274659,391.22147055517,408.78994578219,437.39890198442,467.04206359353,489.02683710225,523.2511306012],description:"Henri Arnaut De Zwolle's modified meantone tuning (c. 1440)"},yarman12:{frequencies:[261.6255653006,283.42769574232,294.32876096318,309.19384990071,332.97799220076,348.83408706747,377.90359432309,392.4383479509,411.12588832951,442.75095666255,465.11211608996,499.46698830115,523.2511306012],description:"Detempered Yarman 13-limit, [<1 1 -20 -6 -3 -1|, <0 1 38 15 11 8|]"},yarman12_80:{frequencies:[261.6255653006,282.84340331238,295.36595061166,319.3201344739,333.45764463229,348.2210758395,376.46181130035,393.12919962609,425.01198472693,443.82887286778,479.82340237272,501.06699929295,523.2511306012],description:"Ozan Yarman MOS, 80-et version"},yarman17:{frequencies:[261.6255653006,274.08392555301,283.42769574232,294.32876096318,309.19384990071,322.00069575458,332.97799220076,348.83408706747,362.25078272391,377.90359432309,392.4383479509,411.12588832951,425.14154361347,442.75095666255,465.11211608996,485.87604984397,499.46698830115,523.2511306012],description:"80-et commas 13-limit detempering of a chain of 16 fifths"},"yarman_ney-ahengs":{frequencies:[261.6255653006,275.39533189537,294.32876096318,310.07474405997,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.43299207996,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Well Temperament for piano by Ozan Yarman from Ney Ahengs"},yasser_6:{frequencies:[261.6255653006,291.88463270656,325.64340264099,363.30663963964,405.32593044476,452.20508247496,523.2511306012],description:"Yasser Hexad, 6 of 19 as whole tone scale"},yasser_diat:{frequencies:[261.6255653006,281.42815779395,291.88463270656,313.97755176024,325.64340264099,350.29154279212,376.80531512858,390.80553229045,420.38583225541,436.00528786292,469.00678383895,486.43275040712,523.2511306012],description:"Yasser's Supra-Diatonic, the flat notes are V,W,X,Y,and Z"},yasser_ji:{frequencies:[261.6255653006,282.64904822654,294.32876096318,304.39128270551,327.03195662575,347.87575166344,359.73515228832,391.36022062136,425.14154361347,434.84468957929,457.84473927605,478.32915853722,523.2511306012],description:"Yasser's just scale, 2 Yasser hexads, 121/91 apart"},yekta:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,470.92601754108,502.32108537715,523.2511306012],description:"Rauf Yekta's 12-tone tuning suggested in 1922 Lavignac Music Encyclopedia"},"young-g":{frequencies:[261.6255653006,299.07507698093,319.76457981184,341.88537054616,390.82337532559,446.76650366117,477.67301428683,510.71739232152,583.82257301724,667.39198333921,713.56092257662,762.92356430953,872.13001648254,996.96833978235,1065.93668681199,1139.67601990796,1302.81150610354,1489.29848625885,1592.32474578757,1702.47910946196,1946.17475603251,2224.75468143463,2378.65811671778,2543.20970830682,2907.24890901465,3323.39919648924,3553.30434397593,3799.11599765247,4342.92768045015],description:"Gayle Young's Harmonium, see PNM 26(2): 204-212 (1988)"},"young-lm_guitar":{frequencies:[261.6255653006,279.06726965397,290.69507255622,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"LaMonte Young, Tuning of For Guitar '58. 1/1 March '92, inv.of Mersenne lute 1"},"young-lm_piano":{frequencies:[261.6255653006,289.72987407313,294.32876096318,300.46061014991,343.38355445704,338.01818641865,386.30649876417,392.4383479509,400.61414686654,457.84473927605,450.69091522486,515.07533168556,523.2511306012],description:"LaMonte Young's Well-Tempered Piano"},"young-w10":{frequencies:[261.6255653006,277.18263097687,302.26980244078,320.24370022528,349.22823143301,369.99442271164,391.99543598175,427.47405410759,452.89298412314,493.88330125613,523.2511306012],description:"William Lyman Young 10 out of 24-tET (1961)"},"young-w14":{frequencies:[261.6255653006,277.18263097687,293.66476791741,302.26980244078,320.24370022528,339.28638158975,359.46139971304,369.99442271164,391.99543598175,415.30469757995,427.47405410759,452.89298412314,479.82340237272,508.3551866238,523.2511306012],description:"William Lyman Young 14 out of 24-tET (1961)"},"young-wt":{frequencies:[261.6255653006,285.40970760065,309.19384990071,348.83408706747,392.4383479509,428.11456140098,463.79077485106,523.2511306012],description:'William Lyman Young "exquisite 3/4 tone Hellenic Lyre" dorian'},young:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,328.14198392915,348.83408706747,367.49599295996,391.5530240856,413.43299207996,438.51190905657,465.11211608996,491.10256480205,523.2511306012],description:"Thomas Young well temperament (1807), also Luigi Malerbi nr.2 (1794)"},young2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.14198392915,349.22823143301,368.32692341742,391.5530240856,414.36778843034,438.51190905657,466.16376151809,491.65745674141,523.2511306012],description:"Thomas Young well temperament no.2 (1799)"},yugo_bagpipe:{frequencies:[261.6255653006,277.02257024271,294.00421879736,322.47117131255,341.84370465044,381.9375744369,404.41509766528,430.1988069325,452.63145841613,463.74664903953,478.99265177484,502.22604835608,523.2511306012],description:"Yugoslavian Bagpipe"},yves:{frequencies:[261.6255653006,290.69507255622,327.03195662575,348.83408706747,392.4383479509,436.04260883433,465.11211608996,523.2511306012],description:`St Yves's scale II from Jocelyn Godwin, "Music and the Occult", 1995.`},saba_sup:{frequencies:[261.6255653006,287.78812183066,313.95067836072,327.03195662575,392.4383479509,418.60090448096,470.92601754108,497.08857407114,523.2511306012],description:"Superparticular version of maqam Sab"},sabagh:{frequencies:[261.6255653006,275.67629620338,279.3053384865,286.70737164501,294.30556868769,310.11139540064,314.19374626607,322.52037740267,326.76608188608,331.06767743197,348.8478314504,362.80683626646,367.58287746967,372.42178901277,392.42288612931,413.49815209867,418.94150105041,430.04411333507,441.44096240275,465.14876849982,471.27205084813,483.76150545705,490.12981126508,496.58195036371,523.2511306012],description:"Twfiq Al-Sabagh, Arabic master musical scale in 53-tET (1954)"},sabbagh:{frequencies:[261.6255653006,294.30556868769,321.46759848648,348.8478314504,392.42288612931,428.64035280622,465.14876849982,523.2511306012],description:"Tawfiq as-Sabbagh, a composer from Syria. 1/1=G"},safi_diat:{frequencies:[261.6255653006,276.16031892841,305.22982618403,348.83408706747,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:"Safi al-Din's Diatonic, also the strong form of Avicenna's 8/7 diatonic"},safi_diat2:{frequencies:[261.6255653006,283.79722337692,310.07474405997,348.83408706747,392.4383479509,425.69583506538,465.11211608996,523.2511306012],description:"Safi al-Din's 2nd Diatonic, a 3/4 tone diatonic like Ptolemy's Equable Diatonic"},safi_major:{frequencies:[261.6255653006,281.75060878526,322.00069575458,348.83408706747,375.66747838035,392.4383479509,523.2511306012],description:"Singular Major (DF #6), from Safi al-Din, strong 32/27 chromatic"},salinas_19:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,372.08969287196,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,490.54793493862,510.98743222773,523.2511306012],description:`Salinas' enharmonic tuning for his 19-tone instr. "instrumentum imperfectum"`},salinas_24:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,363.36884069528,367.91095120397,372.08969287196,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,459.88868900496,465.11211608996,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:'Salinas enharmonic system "instrumentum perfectum". Subset of Mersenne'},salinas_enh:{frequencies:[261.6255653006,272.52663052146,279.06726965397,348.83408706747,392.4383479509,408.78994578219,418.60090448096,523.2511306012],description:"Salinas's and Euler's enharmonic"},salunding:{frequencies:[261.6255653006,282.38958039978,310.76686573877,390.36201910543,419.43149305958,523.2511306012],description:"Gamelan slunding, Kengetan, South-Bali. 1/1=378 Hz"},sankey:{frequencies:[261.6255653006,274.88665260982,292.54735824399,309.58527581215,327.03195662575,348.83408706747,366.73895666255,391.24894371175,412.31687950427,437.13741259348,464.79252184829,489.99465727995,523.2511306012],description:"John Sankey's Scarlatti tuning, personal evaluation based on d'Alembert's"},santur1:{frequencies:[261.6255653006,282.02765077995,319.3201344739,347.21689301951,376.46192220133,427.47393558663,475.68393915562,504.55222794679,523.2511306012],description:"Persian santur tuning. 1/1=E"},santur2:{frequencies:[261.6255653006,281.2143451833,317.48098583281,345.21700307457,375.37611551499,423.78627283082,475.68393915562,498.18106573801,523.2511306012],description:"Persian santur tuning. 1/1=E"},sanza:{frequencies:[261.6255653006,293.15632631094,308.97787266236,346.21547002486,390.18821123181,462.40922843744,524.46149515038,595.18445928535,620.10113226249],description:"African N'Gundi Sanza (idiophone; set of lamellas, thumb-plucked)"},sanza2:{frequencies:[261.6255653006,390.63923480058,465.35666077712,523.2511306012,588.68812410589,663.45725712889,702.9084786129,783.08569314515],description:"African Baduma Sanza (idiophone, like mbira)"},sauveur:{frequencies:[261.6255653006,274.85950244128,292.7026939092,313.25286195357,328.80795208256,349.69755047152,367.27338607435,391.35133250294,417.15885134862,438.29716799286,468.84228427561,491.11646492505,523.2511306012],description:"Sauveur's tempered system of the harpsichord. Trait\xEF\xBF\xBD (1697)"},sauveur2:{frequencies:[261.6255653006,278.64199172491,293.04864983565,312.10886966906,328.2456799168,349.5951549002,372.33322418948,391.58401058733,417.05308314313,438.61577206336,467.14384425417,491.2966347616,523.2511306012],description:"Sauveur's Syste^me Chromatique des Musiciens (Memoires 1701), 12 out of 55."},sauveur_17:{frequencies:[261.6255653006,275.62199471997,290.36720431405,294.32876096318,310.07474405997,326.6631048533,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,489.99465727995,496.67978412536,523.2511306012],description:"Sauveur's oriental system, aft. Kitab al-adwar (Bagdad 1294) by Safi al-Din"},sauveur_ji:{frequencies:[261.6255653006,272.52663052146,294.32876096318,313.95067836072,327.03195662575,348.83408706747,367.91095120397,392.4383479509,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Aplication des sons harmoniques aux jeux d'orgues (1702) (PB 81/80 & 128/125)"},savas_bardiat:{frequencies:[261.6255653006,282.57123920205,317.17549194805,349.22823143301,391.99543598175,423.37848741825,475.22628419761,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 12 + 10 parts"},savas_barenh:{frequencies:[261.6255653006,282.57123920205,329.62755691287,349.22823143301,391.99543598175,423.37848741825,493.88330125613,523.2511306012],description:"Savas's Byzantine Liturgical mode, 8 + 16 + 6 parts"},savas_chrom:{frequencies:[261.6255653006,282.57123920205,323.3415889232,349.22823143301,391.99543598175,423.37848741825,484.46499093218,523.2511306012],description:"Savas's Chromatic, Byzantine Liturgical mode, 8 + 14 + 8 parts"},savas_diat:{frequencies:[261.6255653006,288.06460709314,311.12698372208,349.22823143301,391.99543598175,431.60923940535,466.16376151809,523.2511306012],description:"Savas's Diatonic, Byzantine Liturgical mode, 10 + 8 + 12 parts"},savas_palace:{frequencies:[261.6255653006,277.18263097687,336.03572815422,349.22823143301,391.99543598175,415.30469757995,503.48470957687,523.2511306012],description:"Savas's Byzantine Liturgical mode, 6 + 20 + 4 parts"},scalatron:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,510.98743222773,523.2511306012],description:"Scalatron (tm) 19-tone scale, see manual, 1974"},scheengaas:{frequencies:[261.6255653006,273.84069463911,292.6487650037,312.74862113192,327.53979283172,350.03605285217,366.8025131876,391.54284657258,418.19337019276,437.97145880542,467.51204131067,489.62261321254,523.2511306012],description:"Scheengaas' variation"},scheffer:{frequencies:[261.6255653006,274.56546814423,292.86978442859,309.86465789076,327.84548435462,349.70179235499,366.99791252626,391.46460164194,410.82629477826,438.21464222188,467.42914467878,490.54793493862,523.2511306012],description:"H.Th. Scheffer (1748) modified 1/5-comma temperament, Sweden"},schidlof:{frequencies:[261.6255653006,264.89588486686,274.70684356563,280.31310567921,294.32876096318,305.22982618403,315.35224388912,322.99452506247,327.03195662575,348.83408706747,353.19451315581,366.27579142084,373.75080757229,392.4383479509,406.97310157871,420.46965851882,436.04260883433,457.84473927605,467.18850946536,484.4917875937,490.54793493862,523.2511306012],description:"Schidlof"},schillinger:{frequencies:[261.6255653006,262.8879410321,275.85161280553,277.18263097687,278.52007147562,292.25460328695,293.66476791741,295.08173676673,309.63296633914,311.12698372208,312.62820992379,328.04470063332,329.62755691287,331.21805066987,347.55125362114,349.22823143301,350.91330087035,368.21772660991,369.99442271164,371.77969159194,390.11309203208,391.99543598175,393.88686247394,413.31042363438,415.30469757995,417.30859414412,437.88714035463,440,442.12305445465,463.92526470026,466.16376151809,468.41305936011,491.51169649079,493.88330125613,496.26634930797,520.73850287792,523.2511306012],description:"Joseph Schillinger's double equal temperament, p.664 Mathematical Basis..."},schis41:{frequencies:[261.6255653006,266.96486255163,272.52663052146,275.21650375777,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,311.45900631024,313.95067836072,321.08592105074,327.03195662575,329.64821227876,336.37572681506,343.38355445704,348.83408706747,355.95315006884,363.36884069528,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,415.27867508032,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,484.4917875937,490.54793493862,497.4115685962,504.56359022259,512.78610798918,523.2511306012],description:"41&53 <<1 -8 -14 23 -15 -25 33 -10 81 113||"},schisynch17:{frequencies:[261.6255653006,275.80289341725,290.74848220557,294.25152581512,310.19683462128,327.0062098829,330.94609980123,348.87986495302,367.78544978395,387.71551660339,392.38685458718,413.65005636851,436.06549769577,441.31937388998,465.23419873014,490.4449531872,496.35401261224,523.2511306012],description:"fifth satisfies f^9 + f^8 - 64 = 0"},schlick:{frequencies:[261.6255653006,275.62199471997,293.00227310437,311.47852302926,328.14198392915,349.6228209638,367.9112241576,391.5530240856,414.36778843034,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Reconstructed temp. A. Schlick, Spiegel d. Orgelmacher und Organisten (1511)"},schlick2:{frequencies:[261.6255653006,275.31092272332,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.9112241576,391.5530240856,415.30469757995,438.51190905657,466.69047534984,491.10256480205,523.2511306012],description:"Schlick's temperament reconstructed by F.J. Ratte (1991)"},schlick3:{frequencies:[261.6255653006,275.31092431358,293.00227310437,311.83045953724,328.14198392915,349.6228209638,367.70355049744,391.5530240856,415.07027187895,438.51190905657,466.95405539699,491.10256480205,523.2511306012],description:"Possible well-tempered interpretation of 1555 tuning, Margo Schulter"},schlick4:{frequencies:[261.6255653006,275.29566620843,293.00166043901,311.83758337792,328.14192706649,349.6222474261,367.6987228158,391.55300599201,415.35839309639,438.51185079886,466.95962791236,491.10245700671,523.2511306012],description:"Another reconstructed Schlick's modified meantone (Poletti?)"},scholz:{frequencies:[261.6255653006,271.31540105247,299.00064605783,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Simple Tune #1 Carter Scholz"},scholz_epi:{frequencies:[261.6255653006,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4709.2601754108,5232.511306012,5494.1368713126,5755.7624366132,6279.0135672144,6540.639132515,6802.2646978156,7063.8902631162,7325.5158284168,8372.0180896192,8633.6436549198,9156.894785521,9418.5203508216,10203.3970467234,10465.022612024,10988.2737426252,11511.5248732264,11773.150438527,12558.0271344288,12819.6526997294,13081.27826503,14127.7805262324,14389.406091533,14651.0316568336,16482.4106139378,16744.0361792384,17005.661744539],description:"Carter Scholz, Epimore"},schulter:{frequencies:[261.6255653006,277.184065539,293.66520219021,311.12905403417,329.62853176407,349.23107169224,369.99606406306,391.99572582396,415.30715405467,440.00097595231,466.1672081452,493.88512703986,523.25577305438],description:`Margo Schulter's 5-limit JI virt. ET, "scintilla of Artusi" tempered 22-08-98`},schulter_17:{frequencies:[261.6255653006,272.43653907335,282.13181390574,295.15344695336,308.77608605158,319.09647917983,332.97799220076,348.34640884647,361.82138782225,375.64984936577,392.98775403209,410.26687922759,423.79017189188,443.34998408798,463.81254988138,480.53289366295,500.16624277499,523.2511306012],description:"Neo-Gothic well-temperament (14:11, 9:7 hypermeantone fifths) TL 04-09-2000"},schulter_24:{frequencies:[261.6255653006,270.06509966514,283.8170195002,292.97240722602,295.75063903546,305.22982618403,307.79478270659,317.68818643644,334.29933343966,345.08318290545,348.06842720833,359.29644098925,377.90359432309,390.09403284964,393.30161007617,406.07983174306,426.86276443782,440.63253103259,444.76346101102,458.66231916761,462.87600014722,477.80748402293,502.32108537715,518.89070451286,523.2511306012],description:'Rational intonation (RI) scale with some "17-ish" features (24 notes)'},schulter_cart34:{frequencies:[261.6255653006,270.08718526646,272.51337835337,281.3271372098,283.85429714132,293.03484945212,295.66718139806,305.22982618403,307.97166902637,317.93223698752,320.78822215662,331.16330924834,334.13814720468,344.94500399825,348.04364484358,359.30023993517,362.52783176564,374.2528814026,377.61479489998,389.82779436071,393.32961502355,406.05087076101,409.69842558521,422.94908927295,426.7484383229,440.55054172958,444.50800708553,458.88449901367,463.0066556268,477.98143975034,482.27514684959,497.87312179111,502.34551296122,518.59261334435,523.2511306012],description:'"Carthesian tuning" with two 17-tET chains 55.106 cents apart'},schulter_diat7:{frequencies:[261.6255653006,295.1673044417,332.97799220076,348.83408706747,392.4383479509,442.75095666255,499.46698830115,523.2511306012],description:"Diatonic scale, symmetrical tetrachords based on 14/11 and 13/11 triads"},schulter_ham:{frequencies:[261.6255653006,272.52663052146,283.8170195002,295.75063903546,307.79478270659,320.70230585235,334.29933343966,348.01136516401,362.25078272391,377.90359432309,393.36609818246,409.50088481833,426.86276443782,444.76346101102,462.87600014722,482.33849075995,502.32108537715,523.2511306012],description:'New rational tuning of "Hammond organ type", TL 01-03-2002'},schulter_jot17a:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.1673044417,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.75095666255,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:"Just octachord tuning -- 4:3-9:8-4:3 division, 17 steps (7 + 3 + 7), Bb-Bb"},schulter_jot17bb:{frequencies:[261.6255653006,271.31540105247,281.75060878526,295.15228855401,305.22982618403,318.50068819203,332.97799220076,348.83408706747,361.75386806997,375.66747838035,392.4383479509,406.97310157871,422.62591317789,442.72843283101,457.84473927605,477.75103228805,499.46698830115,523.2511306012],description:'"Just Octachord Tuning" (Bb-Eb, F-Bb) -- 896:891 divided into 1792:1787:1782'},schulter_jwt17:{frequencies:[261.6255653006,272.43653907335,282.34838235411,295.1673044417,308.34441624714,319.76457981184,332.97799220076,347.8430811383,362.25078272391,376.08675011961,393.55640592227,409.81906732402,425.14154361347,443.97065626768,462.87600014722,481.6288815761,500.8899711738,523.2511306012],description:'"Just well-tuned 17" circulating system'},"schulter_lin76-34":{frequencies:[261.6255653006,270.6250663876,281.88470155261,291.58108453077,295.07956188513,305.22982618403,308.89206602106,319.51745915009,332.81131277165,344.25948974019,348.39001840879,360.3740779397,375.36781334896,388.27986588625,392.93856423817,406.45502016129,423.36600317146,437.92911415628,443.18352164838,458.42832346067,463.9286840578,479.88708893184,499.85328649772,517.04744024951,523.2511306012],description:"Two 12-note chains, ~704.160 cents, 34 4ths apart (32 4ths = 7:6), TL 29-11-02"},schulter_pel:{frequencies:[261.6255653006,271.31540105247,305.22982618403,392.4383479509,406.97310157871,523.2511306012],description:"Just pelog-style Phrygian pentatonic"},schulter_pepr:{frequencies:[261.6255653006,270.64528702739,281.81099471089,291.52662303231,295.05751399041,305.22982618403,308.92668738628,319.57714790608,332.76158224462,344.23376719628,348.40303271111,360.41446953256,375.28368107222,388.22184469544,392.9238840789,406.47020586181,423.23948674937,437.83095983374,443.13385158124,458.41119660824,463.96335069158,479.95880706014,499.75992392917,516.98949183803,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},schulter_qcm62a:{frequencies:[261.6255653006,262.43934012943,267.90457886781,268.73788454005,273.37431312998,274.22463192287,279.93529690293,280.80602334765,285.65065877038,286.53916259713,292.50627485027,293.41610276971,299.52642572255,300.45808951291,305.64177427204,306.59245933664,312.977175335,313.95067836072,320.36052345918,320.48862783822,327.03195662575,328.04917632434,334.88072358477,335.92235492515,341.71789064962,342.78078913836,349.91912034749,351.00752840096,358.31717956585,359.43170941363,365.63284274659,366.77012764335,374.40803131735,375.5726110527,382.05221698715,383.2405741708,391.22147055517,392.4383479509,400.61078621746,401.85686830172,408.78994578219,410.06146948999,418.60090448096,419.90294514449,427.14736482575,428.47598794138,437.39890198442,438.75941205608,447.89647345742,449.28963835923,457.04105241293,458.46266117889,468.01003810189,469.46576276783,479.24227945773,480.73294151703,489.02683710225,490.54793493862,500.76348165392,502.32108537715,510.98743222773,512.57683571821,523.2511306012],description:"1/4-comma meantone, two 31-notes at 1/4-comma (Vicentino-like system)"},schulter_qcmlji24:{frequencies:[261.6255653006,262.43934012943,273.37431312998,274.22463192287,292.50627485027,293.41610276971,306.59245933664,312.977175335,327.03195662575,328.04917632434,349.91912034749,351.00752840096,365.63284274659,366.77012764335,391.22147055517,392.4383479509,408.78994578219,410.06146948999,437.39890198442,438.75941205608,458.46266117889,468.01003810189,489.02683710225,490.54793493862,523.2511306012],description:"24-note adaptive JI (Eb-G#/F'-A#') for Lasso's Prologue to _Prophetiae_"},schulter_qcmqd8_4:{frequencies:[261.6255653006,273.37431312998,292.50627485027,309.28772967674,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.22091428214,437.39890198442,465.24335632603,489.02683710225,523.2511306012],description:"F-C# in 1/4-comma meantone, other 5ths ~4.888 cents wide or (2048/2025)^(1/4)"},schulter_sq:{frequencies:[261.6255653006,271.31540105247,279.38237857051,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,419.07356785577,434.59481110969,441.49314144476,457.84473927605,465.11211608996,488.9191624984,496.67978412536,515.07533168556,523.2511306012],description:'"Sesquisexta" tuning, two 12-tone Pyth. manuals a 7/6 apart. TL 16-5-2001'},schulter_tedorian:{frequencies:[261.6255653006,295.99553712036,309.28772789022,347.85054122562,393.54796334264,442.61656607198,462.49302735707,523.2511306012],description:"Eb Dorian in temperament extraordinaire -- neo-medieval style"},schulter_zarte84:{frequencies:[261.6255653006,272.52663052146,292.24684137387,308.87634556583,326.45210604021,350.07440004945,364.66083404534,391.04793957621,410.30971075781,436.81711699543,465.03699205118,487.94322738789,523.2511306012],description:"Temperament extraordinaire, Zarlino's 2/7-comma meantone (F-C#)"},schulter_zarte84n:{frequencies:[261.6255653006,272.46997760396,292.1447183254,308.81896225817,326.44489157977,350.01709816983,364.52535053201,391.11195868293,410.09013064752,436.73596474349,465.11312402839,488.01232708701,523.2511306012],description:"Zarlino temperament extraordinaire, 1024-tET mapping"},scotbag:{frequencies:[261.6255653006,290.69507255622,327.03195662575,356.76213450082,387.59343007496,436.04260883433,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning"},scotbag2:{frequencies:[261.6255653006,290.69507255622,319.76457981184,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Scottish bagpipe tuning 2"},scotbag3:{frequencies:[261.6255653006,294.32876096318,327.03195662575,359.73515228832,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Scottish bagpipe tuning 3"},scotbag4:{frequencies:[261.6255653006,293.15632631094,318.58319997217,348.2210758395,392.67530119805,428.21545238314,468.59347232539,523.2511306012],description:"Scottish Higland Bagpipe by Macdonald, Edinburgh. Helmholtz/Ellis p. 515, nr.52"},scottd1:{frequencies:[261.6255653006,275.93341798027,292.67158636845,310.42509491746,327.40170814054,349.22823143301,367.9112241576,391.5530240856,413.90012676351,437.52264545758,465.63764214343,490.54829628849,523.2511306012],description:"Dale Scott's temperament 1, TL 9-6-1999"},scottd2:{frequencies:[261.6255653006,276.1828093671,292.93610587951,310.70566022736,327.9937953665,349.3071136959,368.24374600687,391.64146650178,414.27421384356,438.21489534465,466.05849010807,491.32444638706,523.2511306012],description:"Dale Scott's temperament 2, TL 9-6-1999"},scottd3:{frequencies:[261.6255653006,276.40121172404,293.16775656083,310.95136287868,328.51274831708,349.22813057195,368.53494914961,391.77416758435,414.60181737882,438.75957425603,466.42704408487,491.93513777943,523.2511306012],description:"Dale Scott's temperament 3, TL 9-6-1999"},scottd4:{frequencies:[261.6255653006,276.60439543337,293.30494246724,310.98285414553,328.78580734933,349.37474066871,369.05201453919,391.83105388699,414.77686160481,439.10664961187,466.16991430388,492.5350487994,523.2511306012],description:"Dale Scott's temperament 4, TL 9-6-1999"},scottj:{frequencies:[261.6255653006,294.32876096318,336.37572681506,348.83408706747,392.4383479509],description:`Jeff Scott's "seven and five" tuning, fifth-repeating. TL 20-04-99`},scottj2:{frequencies:[261.6255653006,290.69507255622,299.00064605783,305.22982618403,313.95067836072,348.83408706747,366.27579142084,406.97310157871,418.60090448096,428.11456140098,436.04260883433,485.87604984397,523.2511306012,566.85539148463,581.39014511244,598.00129211566,610.45965236807,680.22646978156,719.47030457665,784.8766959018],description:`Jeff Scott's "just tritone/13" tuning. TL 17-03-2001`},secor12_1:{frequencies:[261.6255653006,275.03488264166,292.74290192225,310.07362690431,327.56128791316,349.21167447253,366.91716522699,391.37968062521,412.76363757129,437.92977184699,465.61556619611,490.01645577464,523.2511306012],description:"George Secor's 12-tone temperament ordinaire #1, proportional beating"},secor12_2:{frequencies:[261.6255653006,275.62199471997,292.79557634972,310.07474405997,327.35540669465,348.83408706747,367.49599295996,391.60840570078,413.43299207996,437.83150862942,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's closed 12-tone well-temperament #2, with 7 just fifths"},secor12_3:{frequencies:[261.6255653006,274.49585366342,292.50627485027,309.76836826904,327.03195662575,349.57337698802,365.99447173417,391.22147055517,411.74378028931,437.39890198442,466.09783352473,489.02683710225,523.2511306012],description:"George Secor's closed 12-tone temperament #3 with 5 meantone, 3 just, and 2 wide fifths"},secor17htt1:{frequencies:[261.6255653006,266.21235100401,283.6936382117,294.88137067808,304.94368688875,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,435.63385416574,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #1 on C (5/4 & 7/4 exact)"},secor17htt2:{frequencies:[261.6255653006,266.21235100401,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,348.50707605838,360.3992766165,372.69727792826,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #2 on Eo (5/4 & 7/4 exact)"},secor17htt3:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,327.03195662575,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,425.93975025566,442.73709545768,457.84473927605,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #3 on G (5/4 & 7/4 exact)"},secor17htt4:{frequencies:[261.6255653006,270.55308473255,279.78524030783,294.88137067808,300.05119287674,319.75456524059,332.36439517321,343.70575469589,360.3992766165,368.60172104124,392.80658053205,399.69321489333,420.07165483694,442.73709545768,450.49910517366,480.08189580921,491.0082387498,523.2511306012],description:"George Secor's 17-tone high-tolerance temperament subset #4 on Bo (5/4 & 7/4 exact)"},secor17wt:{frequencies:[261.6255653006,271.90848849519,284.45827635845,296.12458543709,307.25838681362,320.91221742866,335.17278980765,347.77473997341,362.0378075073,378.74746489181,393.63374363584,408.43373030454,427.2847686483,445.53990619223,462.29147990415,482.0422296857,504.29062567056,523.2511306012],description:"George Secor's well temperament with 5 pure 11/7 and 3 near just 11/6"},secor19wt:{frequencies:[261.6255653006,272.32755795875,282.27948808054,292.18583194851,304.13791554835,314.37102040472,326.31582004031,339.6640167515,350.11094753355,364.43250202589,378.27942889874,391.0071187494,407.00156221801,421.24111755476,436.68033801788,454.54308187078,469.17957429271,487.6886112017,506.92782577841,523.2511306012],description:"George Secor's 19-tone well temperament with ten 5/17-comma fifths"},secor19wt1:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.3856167727,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.33223555387,436.68095599763,454.54522431957,469.16941157468,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.1)"},secor19wt2:{frequencies:[261.6255653006,272.32845615788,282.22605479514,292.18610873661,304.13920677667,314.27577204952,326.31643450984,339.6657766488,350.11078170334,364.43353349925,378.23315721313,391.00730395019,407.00309738029,421.20165315727,436.68095599763,454.54522431957,469.03541436973,487.689760539,506.89867708289,523.2511306012],description:"George Secor's 19-tone proportional-beating (5/17-comma) well temperament (v.2)"},secor1_4tx:{frequencies:[261.6255653006,274.52656755164,292.65557420835,309.65910769439,327.20096538886,349.14957009195,366.50113643833,391.42429537222,412.04336447213,437.62002395673,465.5327601226,489.58458498887,523.2511306012],description:"George Secor's rational 1/4-comma temperament extraordinaire"},secor1_5tx:{frequencies:[261.6255653006,275.23833828784,292.86443876933,310.12174699459,327.84546895566,349.26796031009,366.98445105045,391.462133155,412.85750743176,438.21197504744,465.69061374678,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma temperament extraordinaire (ratios supplied by G. W. Smith)"},secor1_5wt:{frequencies:[261.6255653006,275.62199471997,292.86443876933,310.07474405997,327.84546895566,348.83408706747,367.44664657419,391.462133155,413.43299207996,438.21197504744,465.11211608996,490.54793493862,523.2511306012],description:"George Secor's 1/5-comma well-temperament (ratios supplied by G. W. Smith)"},secor1_7wt:{frequencies:[261.6255653006,276.40791719395,293.28186156416,310.6264877857,328.77715667764,349.45479875891,368.54388959194,391.74026793015,414.61187579093,439.14616729155,465.93973167855,492.29203182992,523.2511306012],description:"George Secor's 1/7-comma well-temperament (ratios supplied by G. W. Smith)"},secor22_19p3:{frequencies:[261.6255653006,266.86058412305,272.32845615788,282.28026746552,292.18610873661,304.13920677667,314.37137994881,326.31643450984,339.6657766488,350.11078170334,357.11635499175,364.43353349925,378.28077924825,391.00730395019,407.00309738029,421.28573964817,436.68095599763,454.54522431957,469.17973147781,477.89781576412,487.689760539,506.93004530576,523.2511306012],description:"George Secor's 19+3 well temperament with ten ~5/17-comma (equal-beating) fifths and 3 pure 9:11. TL 28-6-2002,26-10-2006. Aux=1,10,19"},secor22_ji29:{frequencies:[261.6255653006,272.52663052146,283.42769574232,286.15296204753,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.65828815182,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,414.24047839262,425.14154361347,436.04260883433,441.49314144476,457.84473927605,479.64686971777,490.54793493862,501.44900015948,523.2511306012],description:"George Secor's 22-tone just intonation (29-limit otonality on 4/3)"},secor29htt:{frequencies:[261.6255653006,270.55308473255,276.71069203503,283.6936382117,290.1503157249,294.88137067808,304.94368688875,310.54087273367,319.75456524059,327.03195662575,332.36439517321,343.70575469589,348.50707605838,360.3992766165,368.60172104124,377.19539564757,387.3949548402,392.80658053205,406.21042497925,415.4555026381,425.93975025566,435.63385416574,442.73709545768,457.84473927605,464.24049278842,480.08189580921,491.0082387498,499.01438878341,516.04239079678,523.2511306012],description:"George Secor's 29-tone 13-limit high-tolerance temperament (5/4 & 7/4 exact)"},secor2_11wt:{frequencies:[261.6255653006,275.91396717201,292.9984614786,310.40321306851,328.14053952957,349.20361470207,367.88528956268,391.55148162785,413.87095075801,438.50612639837,465.60481960276,491.10222639053,523.2511306012],description:"George Secor's rational 2/11-comma well-temperament"},secor41htt:{frequencies:[261.6255653006,266.21235100401,270.55308473255,276.71069203503,279.78524030783,283.6936382117,290.1503157249,294.88137067808,300.05119287674,304.94368688875,310.54087273367,315.34936221801,319.75456524059,327.03195662575,332.36439517321,338.19136297459,343.70575469589,348.50707605838,354.61705516636,360.3992766165,368.60172104124,372.69727792826,377.90358994896,387.3949548402,392.80658053205,399.69321489333,406.21042497925,415.4555026381,420.07165483694,425.93975025566,435.63385416574,442.73709545768,450.49910517366,457.84473927605,464.24049278842,473.46789104304,480.08189580921,491.0082387498,499.01438878341,507.7630447553,516.04239079678,523.2511306012],description:"George Secor's 13-limit high-tolerance temperament superset (5/4 & 7/4 exact)"},secor5_23tx:{frequencies:[261.6255653006,275.02417915696,292.7420830065,310.0721322444,327.56084927797,349.21018850905,366.91927748105,391.38056264645,412.75664067387,437.92311604224,465.61358467873,490.0190422864,523.2511306012],description:"George Secor's rational 5/23-comma temperament extraordinaire"},secor5_23wt:{frequencies:[261.6255653006,275.62199471997,292.75872440224,310.07474405997,327.56278518065,348.83408706747,367.49599295996,391.3766908411,413.43299207996,437.81158306864,465.11211608996,489.99465727995,523.2511306012],description:"George Secor's rational 5/23-comma proportional-beating well-temperament"},secor7p:{frequencies:[261.6255653006,281.10327891957,302.03108525935,356.94582815655,383.52002471837,412.07263653985,442.75095666255,523.2511306012],description:"George Secor's pelog-like MOS with near just 11:13:15:19 tetrads (1979)"},secor_vrwt:{frequencies:[261.6255653006,276.32932769153,293.15777167588,310.55777256823,328.11844153148,349.04269216937,368.62018440632,392.00375398861,414.25255044712,438.65017260809,465.6191423793,491.6947801169,523.2511306012],description:"George Secor's Victorian rational well-temperament (based on Ellis #2)"},"secor_wt1-7":{frequencies:[261.6255653006,276.2204353545,293.2843722634,310.74798946314,328.77415062671,349.45463702831,368.55847674989,391.74146894101,414.33065282463,439.14535139523,466.13275379077,492.28548658217,523.2511306012],description:"George Secor's 1/7-comma well-temperament"},secor_wt10:{frequencies:[261.6255653006,276.4188590209,293.2843722634,310.62634254146,328.77415062671,349.45463500978,368.55847887877,391.7414712038,414.6282883241,439.14535393183,465.93951357928,492.28548942572,523.2511306012],description:"George Secor's 12-tone well-temperament, proportional beating"},"secor_wtpb-24a":{frequencies:[261.6255653006,275.62199471997,292.84836938997,310.07474405997,327.30111872997,348.83408706747,367.49599295996,391.90002374246,413.43299207996,437.54991661796,465.11211608996,490.95167809495,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24a)"},"secor_wtpb-24b":{frequencies:[261.6255653006,275.62199471997,292.56126314547,310.07474405997,327.51644841334,348.83408706747,367.49599295996,391.46936437571,413.43299207996,437.76524630133,465.11211608996,490.37746560595,523.2511306012],description:"George Secor's 24-triad proportional-beating well-temperament (24b)"},segah:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Arabic SEGAH (Dudon) Two 4 + 3 + 3 tetrachords"},segah2:{frequencies:[261.6255653006,293.66476791741,318.39923223688,349.22823143301,391.99543598175,425.01198472693,466.16376151809,523.2511306012],description:"Iranian mode Segah from C"},segah_rat:{frequencies:[261.6255653006,294.32876096318,319.76457981184,348.83408706747,392.4383479509,441.49314144476,479.64686971777,523.2511306012],description:"Rationalized Arabic Seg\xEF\xBF\xBDh\r"},seidel974:{frequencies:[261.6255653006,262.64754016506,266.73543962288,267.75741448733,268.77938935179,273.88926367407,274.91123853852,276.95518826743,277.97716313189,280.0211128608,283.08703745416,284.10901231862,285.13098718308,287.17493691199,289.2188866409,290.24086150535,294.32876096318,457.84473927605,461.93263873387,463.97658846278,468.0644879206,474.19633710734,476.24028683625,482.37213602298,486.4600354808,488.50398520971,492.59188466754,498.72373385427,506.89953276991,513.03138195665,515.07533168556,519.16323114338,523.2511306012],description:"Dave Seidel, Base 9:7:4 Symmetry, scale for Passacaglia and Fugue State (2005)"},seikilos:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,441.49314144476,457.84473927605,504.56359022259,523.2511306012],description:"Seikilos Tuning"},sekati1:{frequencies:[261.6255653006,285.2147362526,318.99014578736,340.97107458785,383.86043226246,424.60539155549,468.56721805116,523.2511306012],description:"Gamelan sekati from Sumenep, East-Madura. 1/1=244 Hz."},sekati2:{frequencies:[261.6255653006,288.87830434024,317.34219433319,357.31261688157,393.64955765984,420.29657220667,469.35141988267,523.2511306012],description:"Gamelan Kyahi Sepuh from kraton Solo. 1/1=216 Hz."},sekati3:{frequencies:[261.6255653006,291.90272733088,308.20569577938,369.53649673407,403.69531865382,425.43272843735,475.11832680028,523.2511306012],description:"Gamelan Kyahi Henem from kraton Solo. 1/1=168.5 Hz."},sekati4:{frequencies:[261.6255653006,271.36353278789,288.89182053123,342.12578909252,379.12979967788,410.29128883625,439.50493264224,523.2511306012],description:"Gamelan Kyahi Guntur madu from kraton Jogya. 1/1=201.5 Hz."},sekati5:{frequencies:[261.6255653006,274.79663866182,311.31645994273,355.61927540077,375.97459751383,397.52718524897,433.44837981883,523.2511306012],description:"Gamelan Kyahi Naga Ilaga from kraton Jogya. 1/1=218.5 Hz."},sekati6:{frequencies:[261.6255653006,284.57524936299,310.80330758934,358.01400474517,390.79902205709,427.51850178351,468.18764285778,523.2511306012],description:"Gamelan Kyahi Munggang from Paku Alaman, Jogya. 1/1=199.5 Hz."},sekati7:{frequencies:[261.6255653006,286.67481979642,318.21831168293,371.10013445627,390.58282835584,422.12643845206,463.87524473877,523.2511306012],description:"Gamelan of Sultan Anom from Cheribon. 1/1=282 Hz."},sekati8:{frequencies:[261.6255653006,287.04067548259,315.94410704802,350.82750428678,381.72407804086,425.57749367468,447.5043967797,523.2511306012],description:"The old Sultans-gamelan Kyahi Suka rame from Banten. 1/1=262.5 Hz."},sekati9:{frequencies:[261.6255653006,280.44107893528,310.90439774384,346.74342440827,376.31071188751,412.14996063869,455.1567650372,523.2511306012],description:"Gamelan Sekati from Katjerbonan, Cheribon. 1/1=292 Hz."},selisir:{frequencies:[261.6255653006,278.78833362316,320.24370022528,380.8360868427,417.71053321823,524.76452349887],description:"Gamelan semara pagulingan, Bali. Pagan Kelod"},selisir2:{frequencies:[261.6255653006,279.59466973861,299.66214729245,376.46181130035,408.17001145418,520.23742585195],description:"Gamelan semara pagulingan, Bali. Kamasan"},selisir3:{frequencies:[261.6255653006,284.98499077387,305.5412851438,378.42269266694,406.45400323486,523.2511306012],description:"Gamelan gong, Pliatan, Bali. 1/1=280 Hz, McPhee, 1966"},selisir4:{frequencies:[261.6255653006,277.23130136276,295.59098907682,376.373620257,399.32323124828,523.2511306012],description:"Gamelan gong, Apuan, Bali. 1/1=285 Hz. McPhee, 1966"},selisir5:{frequencies:[261.6255653006,275.89605068063,309.19384990071,383.40037296022,406.23315014465,523.2511306012],description:"Gamelan gong, Sayan, Bali. 1/1=275 Hz. McPhee, 1966"},selisir6:{frequencies:[261.6255653006,282.63199755101,312.23197007902,396.25769882774,415.35445602102,523.2511306012],description:"Gamelan gong, Gianyar, Bali. 1/1=274 Hz. McPhee, 1966"},semipor1:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,353.19451315581,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"First 16/15&250/243 = 648/625&250/243 scale"},semisixths:{frequencies:[261.6255653006,264.19830736984,270.23055453212,272.88791531122,275.57140613391,281.86332858923,284.63508234504,291.13394747727,293.99686553194,300.70948316519,303.66656221886,306.65272199551,313.65430163898,316.7386758187,323.97054074552,327.15636145846,330.37351240232,337.91669168384,341.23965429995,349.03093233441,352.46319080675,360.51072564419,364.05587272954,367.63587953306,376.02984347246,379.72760059524,388.39764380609,392.21702191873,396.07395857323,405.11722624758,409.10101938242,418.44172684717,422.55654641528,426.71183224275,436.45463212963,440.74658728358,450.80983509489,455.24295209046,465.63718490681,470.21611194415,474.84006394159,485.68174342829,490.45777940536,501.656046885,506.58917188228,511.57080469686,523.2511306012],description:"Semisixths temperament, 13-limit, g=443.0"},"scalamakesrc2\\semisixths_8":{frequencies:[261.6255653006,282.20554108354,304.40437778605,337.94858305883,364.53227585368,393.20709362444,436.53702313055,470.87587163898,522.76460573117],description:"8-note MOS of Semisixths [7, 9, 13, -2, 1, 5] temperament, TOP tuning"},semisuper:{frequencies:[261.6255653006,267.78942821112,272.60119889127,277.49943141001,284.03728045772,289.141002119,295.95312328758,301.27095467792,308.36885759663,313.90977919898,321.30545111289,327.07882560827,334.78475653951,340.80033382945,348.82954357113,355.09748450744,363.46353108469,369.99442271164,378.7114412363,385.5163125912,392.44345945086,401.68937424288,408.90712663484,418.54092077997,426.06147005461,436.09942062666,443.93546710474,454.39452662825,462.55931114028,473.45714317395,481.96445416288,493.31947147471,502.18367855499,514.01505508798,523.2511306012],description:"Semisuper temperament, g=71.146064, p=600, 5-limit"},semithirds:{frequencies:[13.75,13.81661017188,13.90316796691,13.99026794524,14.07791366516,14.14611237417,14.23473442257,14.3239115844,14.41364750281,14.48347263281,14.57420816344,14.665512046,14.73655738771,14.82887834882,14.92177776458,15.01525908647,15.08799873642,15.18252139242,15.27763629821,15.37334698758,15.4478213521,15.54459820959,15.64198144101,15.73997475533,15.81622511342,15.91530993122,16.01501558389,16.11534586889,16.19341466585,16.29486248479,16.39694594444,16.47637891809,16.57959953527,16.68346670883,16.78798468204,16.86931199442,16.97499424439,17.08133847,17.18834901569,17.27161584349,17.37981843193,17.48869878298,17.59826134469,17.68351394199,17.7942969746,17.90577393328,18.01794937217,18.10523509614,18.21866011204,18.33279560295,18.42160666689,18.53701356879,18.6531435747,18.77000099922,18.86093005309,18.97908920954,19.09798871479,19.21763298632,19.3107305405,19.43170758802,19.55344264036,19.67594033402,19.77125798984,19.89512013023,20.01975835255,20.14517740386,20.24276822054,20.36958425827,20.49719488615,20.62560496443,20.72552315291,20.85536353332,20.98601745346,21.08768161561,21.21979095359,21.352727802,21.48649759166,21.59058626784,21.72584618454,21.86195334633,21.99891331359,22.10548432428,22.24396995552,22.38332303719,22.52354926226,22.63266180681,22.7744500803,22.91712649141,23.06069686887,23.17241155847,23.3175812365,23.46366023269,23.57732716458,23.72503340608,23.87366512928,24.02322785632,24.1396055475,24.29083432682,24.44301065897,24.59614033986,24.71529329517,24.87012861873,25.02593409262,25.18271565096,25.30471019771,25.46323807533,25.62275923969,25.78327976642,25.90818367164,26.07049216435,26.23381763196,26.36090411207,26.52604894185,26.69222821075,26.85944870765,26.98956598001,27.15864922771,27.32879158412,27.5],description:"Semithirds temperament, g=193.199615, 5-limit"},sensisynch19:{frequencies:[261.6255653006,272.4389540986,281.73678149918,293.38139793239,303.39395317428,313.74821628003,326.71591476706,337.86611241253,351.83064080634,363.83795665907,376.25506171692,391.80626469239,405.17787315281,421.92450060765,436.32398762558,454.35793210906,469.86431365505,485.89989602801,505.98288939536,523.2511306012],description:"Sensi[19] in synch (brat=-1) tuning, generator ~162/125 satisfies g^9-g^7-4=0"},serre_enh:{frequencies:[261.6255653006,265.7783520514,279.06726965397,348.83408706747,392.4383479509,398.6675280771,418.60090448096,523.2511306012],description:"Dorian mode of the Serre's Enharmonic"},"sev-elev":{frequencies:[261.6255653006,279.06726965397,294.32876096318,305.22982618403,327.03195662575,336.37572681506,359.73515228832,392.4383479509,406.97310157871,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:'"Seven-Eleven Blues" of Pitch Palette'},sha:{frequencies:[261.6255653006,266.96486255163,280.31310567921,284.82183961519,290.63452941521,294.32876096318,300.33547037059,305.16625703708,320.42456924675,326.96384715385,343.31203882349,348.83408706747,355.95315006884,373.75080757229,392.4383479509,400.44729382745,406.8883429195,420.46965851882,427.23275920923,435.9517939049,457.74938532681,480.63685362987,490.44577048562,498.33441009638,523.2511306012],description:"Three chains of sqrt(3/2) separated by 10/7"},shahin:{frequencies:[261.6255653006,277.01530443593,282.55561052465,294.32876096318,310.50067090621,317.47821407264,328.55303549378,348.83408706747,357.66532977804,371.78369805875,376.74081403286,392.4383479509,415.52295665389,428.11456140098,441.49314144476,463.20591889287,478.90781444856,495.71159741166,523.2511306012],description:"Mohajeri Shahin Iranian style scale, TL 9-4-2006"},shahin_wt:{frequencies:[261.6255653006,276.93928561067,294.25491037444,311.47852302926,329.62755691287,348.92163548373,370.73795561568,392.4383479509,415.30469757995,439.61371330969,467.10055427519,494.44133512215,523.2511306012],description:"Mohajeri Shahin, well temperament, TL 28-12-2006"},shalfun:{frequencies:[261.6255653006,269.43930514995,277.46904793785,285.74220762407,294.32876096318,302.80736724606,311.45900631024,320.30554027987,329.50323085718,338.98103822311,348.83408706747,359.12912189513,369.78878487717,380.87868001252,392.4383479509,404.24222079821,416.2697936366,428.68354137408,441.49314144476,454.4477424016,467.68960547122,481.19471271032,494.94053216156,508.90014647073,523.2511306012],description:"d'Erlanger vol.5, p.40. After Alexandre ^Salfun (Chalfoun)"},"sharm1c-conm":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,406.97310157871,430.91269578922,457.84473927605,523.2511306012],description:"Subharm1C-ConMixolydian"},"sharm1c-conp":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharm1C-ConPhryg"},"sharm1c-dor":{frequencies:[261.6255653006,319.76457981184,338.57426097725,359.73515228832,383.71749577421,411.12588832951,479.64686971777,547.03527290125,523.2511306012],description:"Subharm1C-Dorian"},"sharm1c-lyd":{frequencies:[261.6255653006,309.19384990071,323.91736656265,340.11323489078,382.37582620857,377.90359432309,485.87604984397,503.87145909745,523.2511306012],description:"Subharm1C-Lydian"},"sharm1c-mix":{frequencies:[261.6255653006,305.22982618403,318.50068819203,332.97799220076,366.27579142084,457.84473927605,488.36772189445,523.2511306012],description:"Subharm1C-Mixolydian"},"sharm1c-phr":{frequencies:[261.6255653006,313.95067836072,330.47439827444,348.83408706747,392.4383479509,483.00104363188,502.32108537715,523.2511306012],description:"Subharm1C-Phrygian"},"sharm1e-conm":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,430.91269578922,443.97065626768,457.84473927605,523.2511306012],description:"Subharm1E-ConMixolydian"},"sharm1e-conp":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,448.50096908674,465.11211608996,483.00104363188,523.2511306012],description:"Subharm1E-ConPhrygian"},"sharm1e-dor":{frequencies:[261.6255653006,338.57426097725,348.83408706747,359.73515228832,383.71749577421,411.12588832951,500.50108144463,511.62332769895,523.2511306012],description:"Subharm1E-Dorian"},"sharm1e-lyd":{frequencies:[261.6255653006,323.91736656265,331.81779013735,340.11323489078,382.37582620857,377.90359432309,503.87145909745,513.37846775967,523.2511306012],description:"Subharm1E-Lydian"},"sharm1e-mix":{frequencies:[261.6255653006,318.50068819203,325.57848126297,332.97799220076,366.27579142084,488.36772189445,505.20798816668,523.2511306012],description:"Subharm1E-Mixolydian"},"sharm1e-phr":{frequencies:[261.6255653006,330.47439827444,339.40613876835,348.83408706747,392.4383479509,502.32108537715,512.57253609913,523.2511306012],description:"Subharm1E-Phrygian"},"sharm2c-15":{frequencies:[261.6255653006,327.03195662575,341.25073734861,356.76213450082,392.4383479509,461.69217405988,490.54793493862,523.2511306012],description:"Subharm2C-15-Harmonia"},"sharm2c-hypod":{frequencies:[261.6255653006,322.00069575458,334.88072358477,348.83408706747,364.00078650518,380.54627680087,465.11211608996,492.47165233054,523.2511306012],description:"SHarm2C-Hypodorian"},"sharm2c-hypol":{frequencies:[261.6255653006,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,475.68284600109,498.33441009638,523.2511306012],description:"SHarm2C-Hypolydian"},"sharm2c-hypop":{frequencies:[261.6255653006,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,470.92601754108,495.71159741166,523.2511306012],description:"SHarm2C-Hypophrygian"},"sharm2e-15":{frequencies:[261.6255653006,341.25073734861,348.83408706747,356.76213450082,392.4383479509,490.54793493862,506.37206187213,523.2511306012],description:"Subharm2E-15-Harmonia"},"sharm2e-hypod":{frequencies:[261.6255653006,334.88072358477,341.71502406609,348.83408706747,364.00078650518,380.54627680087,492.47165233054,507.3950357345,523.2511306012],description:"SHarm2E-Hypodorian"},"sharm2e-hypol":{frequencies:[261.6255653006,327.03195662575,337.58137458142,348.83408706747,373.75080757229,402.50086969323,498.33441009638,510.48890790361,523.2511306012],description:"SHarm2E-Hypolydian"},"sharm2e-hypop":{frequencies:[261.6255653006,348.83408706747,355.41586229515,362.25078272391,376.74081403286,392.4383479509,495.71159741166,509.10920815252,523.2511306012],description:"SHarm2E-Hypophrygian"},sherwood:{frequencies:[261.6255653006,279.50101530337,292.73346657716,312.73435005323,327.54017122074,349.91920725962,366.48547573919,391.52543233055,418.27599117656,438.07873640926,468.01000025525,490.16733894289,523.65750116998],description:"Sherwood's improved meantone temperament"},shrutar:{frequencies:[261.6255653006,269.80136421624,277.49581689502,285.40970760065,294.32876096318,304.37698984459,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,368.95121675679,379.48299988042,392.4383479509,405.83598431812,417.42065019394,428.11456140098,441.49314144476,457.84473927605,470.92601754108,490.54793493862,505.97733342682,523.2511306012],description:"Paul Erlich's Shrutar tuning (from 9th fret) tempered with Dave Keenan"},shrutar_temp:{frequencies:[261.6255653006,269.67683152447,277.97586744827,286.53029793775,295.34798250635,304.4370214407,313.80576690868,327.74897996102,337.83512841993,348.23166805304,358.94815083964,369.99442271164,381.38063259971,393.11724175776,405.21503337437,417.68512248001,430.53896367224,443.78837151315,463.50705251482,477.77102045752,492.47394780842,507.62934310616,523.2511306012],description:"Shrutar temperament, 11-limit, g=52.474, 1/2 oct."},shrutart:{frequencies:[261.6255653006,269.83675183105,278.27349931787,286.14641333958,294.32706056425,305.2349557921,313.94319125793,327.02936607233,337.2932679302,348.82502010853,358.79758764604,369.99442271164,381.540672377,392.44854854484,405.86600994967,418.6042204156,436.0530078362,448.49343183014,465.11480315564,478.41198231361,491.94721442498,507.32849364948,523.2511306012],description:"Paul Erlich's 'Shrutar' tuning tempered by Dave Keenan, TL 29-12-2000"},siamese:{frequencies:[261.6255653006,269.26067151764,288.95340229325,296.22023396764,319.13574119147,352.26720984209,362.5475414329,388.79334481031,400.18585940536,429.40436513853,443.77760270734,473.98350631811,523.2511306012],description:"Siamese Tuning, after Clem Fortuna's Microtonal Guide"},silbermann1:{frequencies:[261.6255653006,275.15551885617,293.66476791741,312.53552595124,327.77163799145,349.82028288879,367.9112241576,391.99543598175,411.56972129721,438.75957425603,467.74568907204,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 1"},silbermann2:{frequencies:[261.6255653006,275.00020270933,293.00227310437,312.18279369479,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Gottfried Silbermann's temperament nr. 2, 1/6 Pyth. comma meantone"},silbermann2a:{frequencies:[261.6255653006,275.00020270933,293.00227310437,310.77584116741,328.14198392915,349.6228209638,367.49599295996,391.5530240856,411.56972129721,438.51190905657,467.21778431035,491.10256480205,523.2511306012],description:"Modified Silbermann's temperament nr. 2, also used by Hinsz in Midwolda"},silver:{frequencies:[261.6255653006,277.18807786937,293.58315284916,311.09098010692,329.53543886896,349.23174545031,369.98176232374,391.84186131702,415.18563115404,439.77824302677,466.03998256716,493.70667148145,523.2511306012],description:"Equal beating chromatic scale, A.L.Leigh Silver JASA 29/4, 476-481, 1957"},silver_10:{frequencies:[261.6255653006,270.26884019355,294.27266239927,320.41022551991,330.99364634362,360.39280035711,392.40094712608,405.36462386145,441.36692569059,480.56953386201,523.2511306012],description:"Ten-tone MOS from 350.9 cents"},silver_11:{frequencies:[261.6255653006,277.73657748574,294.83971256733,315.81001885226,335.25773244276,355.90304440354,381.21644531515,404.69191411574,429.61301214396,460.16899244324,488.50639225338,523.2511306012],description:"Eleven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_11a:{frequencies:[261.6255653006,272.21316796874,283.22923537857,314.22802528801,326.94437231289,340.17533123945,377.40674067136,392.67983758722,408.5710143206,453.28817432381,471.63208149661,523.2511306012],description:"Eleven-tone MOS from 317.17 cents"},silver_11b:{frequencies:[261.6255653006,281.48899567641,302.85877036442,316.87090334834,340.92873240472,366.81310701257,383.78194911277,412.91987382947,444.27004083312,464.82473992747,500.11279777071,523.2511306012],description:"Eleven-tone MOS from 331.67 cents"},silver_7:{frequencies:[261.6255653006,277.73649727228,315.81000061035,335.2576162513,381.21640127531,404.69175048432,460.16888612163,523.2511306012],description:"Seven-tone MOS from 1+sqr(2), 1525.864 cents"},silver_8:{frequencies:[261.6255653006,288.49477506296,306.46277751246,337.93681424842,358.98416079003,395.852196628,420.50662316693,492.57276348379,523.2511306012],description:"Eight-tone MOS from 273.85 cents"},silver_9:{frequencies:[261.6255653006,294.18258755347,307.6617709921,345.94759796409,361.79860795042,406.82129262791,425.46148093979,478.40645551359,500.32661205896,523.2511306012],description:"Nine-tone MOS from 280.61 cents"},silvermean:{frequencies:[261.6255653006,286.15296204753,327.03195662575,345.42750418595,392.4383479509,416.96574469783,474.19633710734,523.2511306012],description:"First 6 approximants to the Silver Mean, 1+ sqr(2) reduced by 2/1"},simonton:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,348.83408706747,370.63621750918,392.4383479509,414.24047839262,436.04260883433,465.11211608996,494.18162334558,523.2511306012],description:"Simonton Integral Ratio Scale, JASA 25/6 (1953): A new integral ratio scale"},sims:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Ezra Sims' 18-tone mode"},sims2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,286.15296204753,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Sims II"},sims_24:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.97716313189,283.42769574232,286.15296204753,294.32876096318,302.50455987882,305.22982618403,310.68035879446,316.13089140489,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"See his article, Reflections on This and That, 1991 p.93-106"},sin:{frequencies:[261.6255653006,275.08939827539,302.09917071192,334.63165645627,369.99442271164,407.01712569342,445.10399729103,483.9175316883,523.2511306012,562.97086325858,602.98541169118,643.23087116255,683.66056756853,724.23972686276,764.94197926416,805.74682982871,846.63811574624,887.6028851904,928.63083777952,969.71346974542,1010.84345850104,1052.01529432917],description:"1/sin(2pi/n), n=4..25"},sinemod12:{frequencies:[261.6255653006,270.6035983646,282.0485507085,292.16840832754,301.82804372114,314.42520179993,326.24260278214,336.76433478807,350.4641458176,364.21811789193,375.86233664064,390.61306119732,406.50371126161,419.61372202861,435.38454314112,453.55584308858,468.551249676,485.36279478778,505.89080731022,523.2511306012],description:"Sine modulated F=12, A=-.08203754"},sinemod8:{frequencies:[261.6255653006,272.43905323978,281.98404270447,290.99567087708,301.68076007415,314.40050256998,326.99158834066,337.97331861211,348.96407538813,362.38276875396,377.76595534172,392.29216556304,405.04934945717,418.6525822649,435.418746849,453.77727371169,470.43955130022,485.47382867757,502.48255971303,523.2511306012],description:"Sine modulated F=8, A=.11364155. Deviation minimal3/2, 4/3, 5/4, 6/5, 5/3, 8/5"},singapore:{frequencies:[261.6255653006,291.46787011619,321.35550581422,354.51258839996,385.70651737906,428.95813651779,462.1422075194,523.2511306012],description:"An observed xylophone tuning from Singapore"},sintemp6:{frequencies:[261.6255653006,277.18263097687,292.42974339757,312.08834713741,327.870830746,349.91196330865,369.15973155124,391.11111150212,416.11779639122,437.6550518996,467.60417912673,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/6 Pyth, one cycle, f0=-90 degrees"},sintemp6a:{frequencies:[261.6255653006,276.17281343288,293.21211353711,310.64741311165,328.42667470471,349.22823143301,368.43838932195,391.77416758435,414.19655102258,438.82595961933,465.90062756558,491.80624587316,523.2511306012],description:"Sine modulated fifths, A=1/12 Pyth, one cycle, f0= D-A"},sintemp_19:{frequencies:[261.6255653006,272.86445838226,281.30973389888,292.50627485027,304.14845459111,313.56198179795,327.03195662575,338.65502209741,350.02113164026,365.30494475029,376.98581738134,391.19763056219,407.47965586966,419.94695489748,437.42555500456,453.91586039553,468.43012697388,488.88431353627,505.29249383438,523.2511306012],description:"Sine modulated thirds, A=7.366 cents, one cycle over fifths, f0=90 degrees"},sintemp_7:{frequencies:[261.6255653006,291.06608881088,319.67397341855,351.09362859375,390.60192440975,432.07134328681,473.03044489876,523.2511306012],description:"Sine modulated fifths, A=8.12 cents, one cycle, f0=90 degrees"},slen_pel:{frequencies:[261.6255653006,261.6255653006,283.17034563789,298.45295203849,338.50336851425,364.68988616898,346.01554587335,389.06292924114,398.38689497567,420.13030572059,455.51656649021,493.31307433255,523.2511306012],description:"Pelog white, Slendro black"},slen_pel16:{frequencies:[261.6255653006,261.6255653006,285.30470202322,285.30470202322,297.93622032612,311.12698372208,339.28638158975,386.37547528213,386.37547528213,403.48177901006,421.34544350737,440,523.2511306012],description:"16-tET Slendro and Pelog"},slen_pel23:{frequencies:[261.6255653006,261.6255653006,295.14355885465,295.14355885465,286.38154466424,343.14246862785,313.47984535337,398.94762483098,398.94762483098,387.10394860926,450.05828708186,423.73315704439,523.2511306012],description:"23-tET Slendro and Pelog"},slen_pel_jc:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,279.06726965397,341.71502406609,348.83408706747,392.4383479509,392.4383479509,392.4383479509,448.50096908674,418.60090448096,523.2511306012],description:"Slendro/JC PELOG S1c,P1c#,S2d,eb,P2e,S3f,P3f#,S4g,ab,P4a,S5bb,P5b"},slen_pel_schmidt:{frequencies:[261.6255653006,261.6255653006,294.32876096318,305.22982618403,327.03195662575,348.83408706747,359.73515228832,392.4383479509,392.4383479509,457.84473927605,457.84473927605,490.54793493862,523.2511306012],description:"Dan Schmidt (Pelog white, Slendro black)"},slendro:{frequencies:[261.6255653006,298.45295203849,346.01554587335,398.38689497567,455.51656649021,523.2511306012],description:"Observed Javanese Slendro scale, Helmholtz/Ellis p. 518, nr.94"},slendro10:{frequencies:[261.6255653006,304.21577360535,342.24274530602,391.67780832635,463.92905474816,523.2511306012],description:"Low gender from Singaraja (banjar Lod Peken), Bali. 1/1=172 Hz. McPhee, 1966."},slendro11:{frequencies:[261.6255653006,299.11221417218,343.62760815601,387.36203100102,452.96366529656,523.2511306012],description:"Low gender from Sawan, Bali. 1/1=167.5 Hz. McPhee, 1966."},slendro2:{frequencies:[261.6255653006,299.13295468097,343.58614396263,395.91119354826,450.08870388136,523.2511306012],description:"Gamelan slendro from Ranchaiyuh, distr. Tanggerang, Batavia. 1/1=282.5 Hz"},slendro3:{frequencies:[261.6255653006,298.44694115772,339.14425131559,391.46936437571,453.48431318771,522.28214737536],description:"Gamelan kodok ngorek. 1/1=270 Hz"},slendro4:{frequencies:[261.6255653006,294.5074669504,344.54514337401,400.3014113889,467.49486258632,523.2511306012],description:"Low gender in saih lima from Kuta, Bali. 1/1=183 Hz. McPhee, 1966"},slendro5_1:{frequencies:[261.6255653006,299.00064605783,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7; from Lou Harrison"},slendro5_2:{frequencies:[261.6255653006,305.22982618403,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 2"},slendro5_4:{frequencies:[261.6255653006,294.32876096318,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:"A slendro type pentatonic which is based on intervals of 7, no. 4"},slendro6:{frequencies:[261.6255653006,295.05549864457,341.56671025356,398.25224940202,461.478427683,523.2511306012],description:"Low gender from Klandis, Bali. 1/1=180 Hz. McPhee, 1966"},slendro8:{frequencies:[261.6255653006,309.85821141747,350.78288084997,406.32350365121,467.71050779996,523.2511306012],description:"Low gender from Tabanan, Bali. 1/1=179 Hz. McPhee, 1966."},slendro9:{frequencies:[261.6255653006,299.00064605783,336.37572681506,388.70083987518,448.50096908674,523.2511306012],description:"Low gender from Singaraja (banjar Panataran), Bali. 1/1=175 Hz. McPhee, 1966."},slendro_7_1:{frequencies:[261.6255653006,299.00064605783,341.71502406609,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 1, From HMSL Manual, also Lou Harrison, Jacques Dudon"},slendro_7_2:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,448.50096908674,523.2511306012],description:"Septimal Slendro 2, From Lou Harrison, Jacques Dudon's APTOS"},slendro_7_3:{frequencies:[261.6255653006,294.32876096318,336.37572681506,392.4383479509,448.50096908674,523.2511306012],description:'Septimal Slendro 3, Harrison, Dudon, called "MILLS" after Mills Gamelan'},slendro_7_4:{frequencies:[261.6255653006,294.32876096318,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:'Septimal Slendro 4, from Lou Harrison, Jacques Dudon, called "NAT"'},slendro_7_5:{frequencies:[261.6255653006,305.22982618403,343.38355445704,400.61414686654,467.3831713443,523.2511306012],description:"Septimal Slendro 5, from Jacques Dudon"},slendro_7_6:{frequencies:[261.6255653006,299.00064605783,341.71502406609,390.53145607553,455.62003208812,523.2511306012],description:"Septimal Slendro 6, from Robert Walker"},slendro_a1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,457.84473927605,523.2511306012],description:`Dudon's Slendro A1, "Seven-Limit Slendro Mutations", 1/1 8:2'94 hexany 1.3.7.21`},slendro_a2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,448.50096908674,523.2511306012],description:`Dudon's Slendro A2 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_alv:{frequencies:[261.6255653006,299.00064605783,348.83408706747,406.97310157871,465.11211608996,523.2511306012],description:"Bill Alves, slendro for Gender Barung, 1/1 vol.9 no.4, 1997. 1/1=282.86"},slendro_ang:{frequencies:[261.6255653006,299.00064605783,340.82516392797,388.43396508487,445.83123341082,523.2511306012],description:"Gamelan Angklung Sangsit, North Bali. 1/1=294 Hz"},slendro_av:{frequencies:[261.6255653006,298.97057995496,344.02264297658,395.86362945285,454.20288100724,525.67465946865],description:"Average of 30 measured slendro gamelans, W. Surjodiningrat et al., 1993."},slendro_dudon:{frequencies:[261.6255653006,305.22982618403,348.83408706747,399.70572476481,457.84473927605,523.2511306012],description:'Dudon\'s Slendro from "Fleurs de lumie`re"'},slendro_gum:{frequencies:[261.6255653006,305.03156112838,348.43777142572,394.8168394034,470.92601754108,525.62941881859],description:"Gumbeng, bamboo idiochord from Banyumas. 1/1=440 Hz"},slendro_ky1:{frequencies:[261.6255653006,297.58776037991,344.33874539242,394.68595744625,449.52853279627,523.2511306012],description:"Kyahi Kanyut Me`sem slendro, Mangku Nagaran, Solo. 1/1=291 Hz"},slendro_ky2:{frequencies:[261.6255653006,302.42139140287,345.87786599062,395.54249276388,453.1886900261,523.2511306012],description:"Kyahi Pengawe' sari, Paku Alaman, Jogya. 1/1=295 Hz"},slendro_laras:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012,598.00129211566,697.66817413493],description:'Lou Harrison, gamelan "Si Betty"'},slendro_m:{frequencies:[261.6255653006,299.00064605783,348.83408706747,392.4383479509,448.50096908674,523.2511306012],description:`Dudon's Slendro M from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_madu:{frequencies:[261.6255653006,300.52885648597,345.61604384578,394.49404533893,447.94973572445,522.94897617031],description:"Sultan's gamelan Madoe kentir, Jogjakarta, Jaap Kunst"},slendro_mat:{frequencies:[261.6255653006,261.6255653006,299.00064605783,299.00064605783,341.71502406609,343.38355445704,348.83408706747,392.4383479509,398.6675280771,448.50096908674,455.62003208812,457.84473927605,523.2511306012],description:`Dudon's Slendro Matrix from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_pa:{frequencies:[261.6255653006,304.19649364034,353.69443592699,411.24653512154,478.16333951147,523.2511306012],description:'"Blown fifth" primitive slendro, von Hornbostel'},slendro_pas:{frequencies:[261.6255653006,300.35531433711,343.03050002254,393.12919962609,450.54468214486,523.2511306012],description:"Gamelan slendro of regent of Pasoeroean, Jaap Kunst"},slendro_pb:{frequencies:[261.6255653006,304.72408298441,342.83241505062,399.30842833955,449.24533531117,523.2511306012],description:'"Blown fifth" medium slendro, von Hornbostel'},slendro_pc:{frequencies:[261.6255653006,299.48910562989,342.83241505062,392.44854854484,449.24533531117,523.2511306012],description:'"Blown fifth" modern slendro, von Hornbostel'},slendro_pliat:{frequencies:[261.6255653006,299.73468146833,339.98478643783,393.08060743874,447.03290350508,523.2511306012,599.46936293666,679.96957287566,786.16121487749,894.06580701017],description:"Gender wayang from Pliatan, South Bali (Slendro), 1/1=305.5 Hz"},slendro_q13:{frequencies:[261.6255653006,307.00725675226,360.2608752926,400.8015646157,470.32478922042,523.2511306012],description:"13-tET quasi slendro, Blackwood"},slendro_s1:{frequencies:[261.6255653006,299.00064605783,348.83408706747,398.6675280771,457.84473927605,523.2511306012],description:`Dudon's Slendro S1 from "Seven-Limit Slendro Mutations", 1/1 8:2 Jan 1994`},slendro_s2:{frequencies:[261.6255653006,299.00064605783,341.71502406609,398.6675280771,455.62003208812,523.2511306012],description:"Dudon's Slendro S2"},slendro_udan:{frequencies:[261.6255653006,305.22982618403,351.32575911795,402.50086969323,465.11211608996,523.2511306012],description:"Slendro Udan Mas (approx)"},slendro_wolf:{frequencies:[261.6255653006,298.18866107946,339.86157848985,395.0032340925,450.20632964813,523.2511306012],description:"Daniel Wolf's slendro. Tuning List 30 5 1997"},slendrob1:{frequencies:[261.6255653006,307.44024341205,355.66611281954,409.9203247543,476.83364134848,523.2511306012],description:"Gamelan miring of Musadikrama, desa Katur, Bajanegara. 1/1=434 Hz"},slendrob2:{frequencies:[261.6255653006,307.55978097874,346.50416420081,398.42969909174,449.35693171058,523.2511306012],description:"Gamelan miring from Bajanegara. 1/1=262 Hz"},slendrob3:{frequencies:[261.6255653006,304.90191053936,342.27700149692,398.33972372326,447.51732140012,523.2511306012],description:"Gamelan miring from Ngumpak, Bajanegara. 1/1=266 Hz"},slendroc1:{frequencies:[261.6255653006,297.59222964268,344.42030317161,394.72197985873,449.50490455178,523.2511306012],description:"Kyahi Kanyut mesem slendro (Mangku Nagaran Solo). 1/1=291 Hz"},slendroc2:{frequencies:[261.6255653006,302.44445076078,346.01554587335,396.09235530397,453.15466093696,523.2511306012],description:"Kyahi Pengawe sari (Paku Alaman, Jogja). 1/1=295 Hz."},slendroc3:{frequencies:[261.6255653006,301.39807245198,344.42030317161,395.40657391157,451.84778706363,523.2511306012],description:"Gamelan slendro of R.M. Jayadipura, Jogja. 1/1=231 Hz"},slendroc4:{frequencies:[261.6255653006,299.14332201883,343.8239850859,396.09235530397,450.28451247858,523.2511306012],description:"Gamelan slendro, Rancha iyuh, Tanggerang, Batavia. 1/1=282.5 Hz"},slendroc5:{frequencies:[261.6255653006,299.83528893666,340.07120590121,393.12919962609,447.17417015401,523.2511306012],description:"Gender wayang from Pliatan, South Bali. 1/1=611 Hz"},slendroc6:{frequencies:[261.6255653006,296.73398952435,343.8239850859,396.7793260952,453.9405988926,527.19506190947,607.33963549452,696.44215167899,797.23415748628,918.4302691641,1071.58188326661],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},slendrod1:{frequencies:[261.6255653006,292.47977325983,340.6610152784,389.06292924114,444.85552088095,523.2511306012],description:"Gender wayang from Ubud (S. Bali). 1/1=347 Hz"},smith_eh:{frequencies:[261.6255653006,272.7117507892,292.30354792656,313.30283124826,326.5788018031,350.04044239751,364.87314355143,391.08587539224,407.65784362321,436.94425707006,468.33462614046,488.17995458879,523.2511306012],description:"Robert Smith's Equal Harmony temperament (1749)"},smith_mq:{frequencies:[261.6255653006,273.37438418823,292.50629623572,312.97714101186,327.03200500996,349.91910755601,365.63292511375,391.22148485648,408.79006910398,437.39894995248,468.01000388518,489.02693031834,523.2511306012],description:"Robert Smith approximation of quarter comma meantone fifth"},"scalamakesrc2\\smithgw-ball":{frequencies:[261.6255653006,267.07609791103,272.52663052146,274.70684356563,280.31310567921,286.15296204753,294.32876096318,300.46061014991,305.22982618403,306.59245933664,313.95067836072,320.49131749323,327.03195662575,333.84512238879,336.37572681506,343.38355445704,350.39138209902,357.69120255941,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,470.92601754108,476.92160341255,480.73697623985,490.54793493862,500.76768358318,515.07533168556,523.2511306012],description:"Ball 2 around tetrad lattice hole"},smithgw46:{frequencies:[261.6255653006,273.72380653152,313.47993226845,327.97605323154,364.46098649856,392.98113253789,436.69740466987,456.89141950378,523.2511306012],description:'Gene Ward Smith 46-tET subset "Star"'},smithgw46a:{frequencies:[261.6255653006,282.09853500802,313.47993226845,327.97605323154,375.61187043063,392.98113253789,436.69740466987,470.87026054824,523.2511306012],description:'46-tET version of "Star", alternative version'},smithgw72a:{frequencies:[261.6255653006,285.30470202322,299.37379946195,326.46944327063,342.56848033562,373.57357677338,391.99543598175,427.47405410759,435.78442404634,457.27406033445,498.66089874196,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72c:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72d:{frequencies:[261.6255653006,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72e:{frequencies:[261.6255653006,279.86396690685,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72f:{frequencies:[261.6255653006,326.46944327063,349.22823143301,435.78442404634,466.16376151809,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72g:{frequencies:[261.6255653006,326.46944327063,349.22823143301,391.99543598175,419.32216217931,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 04-01-2002"},smithgw72h:{frequencies:[261.6255653006,279.86396690685,314.13668154225,349.22823143301,391.99543598175,435.78442404634,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset, TL 09-01-2002"},smithgw72i:{frequencies:[261.6255653006,279.86396690685,293.66476791741,314.13668154225,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,435.78442404634,470.6732130613,489.15147723638,523.2511306012],description:"Gene Ward Smith 72-tET subset version of Duodene, TL 02-06-2002"},smithgw72j:{frequencies:[261.6255653006,274.52698453615,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,435.78442404634,457.27406033445,489.15147723638,523.2511306012],description:"{225/224, 441/440} tempering of decad, 72-et version (2002)"},smithgw84:{frequencies:[261.6255653006,286.48426603331,306.03443598155,335.11270457212,357.98136125932,391.99543598175,418.74586628806,458.53356119912,489.82466832727,523.2511306012],description:'Gene Ward Smith 84-tET subset, 11-limit temperament "Orwell", 2002'},smithgw_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,286.15296204753,294.32876096318,306.59245933664,327.03195662575,343.38355445704,350.39138209902,367.91095120397,381.53728273004,392.4383479509,408.78994578219,420.46965851882,436.04260883433,457.84473927605,467.18850946536,490.54793493862,523.2511306012],description:"Gene Ward Smith chord analogue to periodicity blocks, TL 12-07-2002"},smithgw_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,299.00064605783,305.22982618403,320.49131749323,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,427.14378008261,448.50096908674,457.84473927605,478.40103369253,488.36772189445,512.57253609913,523.2511306012],description:"Gene Ward Smith symmetrical 7-limit JI version of Blackjack, TL 10-5-2002"},smithgw_45:{frequencies:[261.6255653006,267.02002970726,269.13627541126,274.68560334708,276.86260193655,282.57123920205,288.39758300936,290.68325478745,296.67686217097,299.02814898089,305.19382000629,311.48661940174,313.95528147508,320.42873367481,322.96826575344,329.62755691287,336.42415617173,339.09045868095,346.08217376006,348.82502010853,356.01745236555,363.35818557229,366.23795155866,373.78942366597,376.75185941212,384.52011812375,392.44854854484,395.55886785613,403.71490654806,406.9145164708,415.30469757995,423.86787605389,427.22720671064,436.03621571368,439.49198556474,448.5538823653,457.80262665414,461.43090443914,470.94516310483,474.67759826036,484.46499093218,494.45418731234,498.37294408452,508.64890891624,512.68016480935,523.2511306012],description:"Gene Ward Smith large limma repeating 5-tone MOS"},smithgw_58:{frequencies:[261.6255653006,264.89588486686,267.57160087561,269.80136421624,274.70684356563,279.06726965397,282.55561052465,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,301.49231810831,305.22982618403,310.07474405997,313.95067836072,317.12189733406,319.76457981184,323.76163705949,327.03195662575,332.97799220076,336.37572681506,340.54567384169,343.38355445704,348.83408706747,353.19451315581,356.76213450082,359.73515228832,366.27579142084,370.01329949656,373.75080757229,380.54627680087,383.71749577421,387.59343007496,392.4383479509,398.6675280771,401.98975747775,406.97310157871,411.12588832951,418.60090448096,423.83341578697,428.11456140098,431.68218274599,436.04260883433,441.49314144476,448.50096908674,452.23847716247,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,484.4917875937,490.54793493862,498.33441009638,507.3950357345,511.62332769895,516.79124009995,523.2511306012],description:"Gene Ward Smith 58-tone epimorphic superset of Partch's 43-tone scale"},smithgw_9:{frequencies:[261.6255653006,279.06726965397,305.22982618403,327.03195662575,348.83408706747,392.4383479509,418.60090448096,448.50096908674,490.54793493862,523.2511306012],description:'Gene Ward Smith "Miracle-Magic square" tuning, genus chromaticum of ji_12a'},"smithgw_al-baked":{frequencies:[261.6255653006,277.59364499865,293.85651796007,311.0721560172,330.05816364769,349.39467974592,369.86402907174,392.4383479509,415.42941801053,439.76742419786,466.60823379256,493.94455998605,522.88238970142],description:"Baked alaska, with beat ratios of 2 and 3/2"},"smithgw_al-fried":{frequencies:[261.6255653006,277.00141553195,293.28091128458,310.96067952124,329.23597434237,348.58531822795,369.59898601143,391.32048195179,414.31855981944,439.29480556849,465.11235566178,492.44721175277,522.13326741512],description:"Fried alaska, with octave-fifth brats of 1 and 2"},smithgw_asbru:{frequencies:[261.6255653006,275.52281548997,293.66476791741,313.00128725319,329.62755691287,351.33206601369,367.77883484915,391.99543598175,415.30469757995,440,468.97204376297,490.92584627687,523.2511306012],description:"Modified bifrost (2003)"},smithgw_bifrost:{frequencies:[261.6255653006,275.07759559501,292.50627485027,311.03921839762,327.03195662575,349.91912034749,366.77012764335,391.22147055517,413.66634097248,437.39889945791,466.55882736321,489.02683710225,523.2511306012],description:"Six meantone fifths, four pure, two of sqrt(2048/2025 sqrt(5))"},smithgw_cauldron:{frequencies:[261.6255653006,275.03056468741,291.83931845209,312.58541512404,325.54230007562,350.31873582686,364.83969341757,390.77519652096,414.65779561271,435.90375768372,469.07960710644,486.243977751,523.2511306012],description:"Circulating temperament with two pure 9/7 thirds"},smithgw_ck:{frequencies:[195.99771799087,198.06437430898,200.15282320192,202.2632921446,203.72940721765,205.87758869102,208.04842120778,210.24214482145,211.76609376362,213.99901760782,216.25548480725,218.5357448459,220.11981156469,222.44081817627,224.78629944762,227.15651084977,228.80306427848,231.21563094,233.65363506284,235.34728316698,237.82885399313,240.33658984216,242.87076938222,244.63122826831,247.21069030843,249.81735238129,252.45149840587,254.28140507407,256.96262135434,259.67210915034,262.4101678886,264.31225911206,267.09924514556,269.91561641866,272.7616843206,274.73881033537,277.63573538138,280.56320805899,282.59688215652,285.57666497222,288.58786914203,291.63082264784,293.74472081062,296.84205135845,299.9720393359,303.13503255793,305.33231946532,308.55183127196,311.80529233825,315.09305703284,317.37702217863,320.72353853051,324.10533989702,327.52280172307,329.89686439088,333.37539375097,336.89059979959,339.33256534187,342.91058750208,346.52633537645,350.18021075922,352.71850659998,356.43767199462,360.19605541958,363.99406623991,366.6324923874,370.49837299068,374.40501441099,378.35285076765,381.09535716275,385.11373623244,389.17448849491,391.99543598174],description:"Catakleismic temperament, g=316.745, 11-limit"},smithgw_decab:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,439.53094970501,488.36772189445,523.2511306012],description:"(10/9) <==> (16/15) transform of decaa"},smithgw_decac:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,498.33441009638,523.2511306012],description:"inversion of decaa"},smithgw_decad:{frequencies:[261.6255653006,280.31310567921,311.45900631024,327.03195662575,348.83408706747,373.75080757229,392.4383479509,436.04260883433,467.18850946536,498.33441009638,523.2511306012],description:"inversion of decab"},smithgw_diff13:{frequencies:[261.6255653006,274.70684356563,280.31310567921,299.00064605783,313.95067836072,320.35783506196,336.37572681506,406.97310157871,427.32175665765,436.04260883433,457.84473927605,488.36772189445,498.33441009638,523.2511306012],description:"mod 13 perfect difference set, 7-limit"},smithgw_dwarf6_7:{frequencies:[261.6255653006,299.00064605783,327.03195662575,373.75080757229,392.4383479509,448.50096908674,523.2511306012],description:"Dwarf(<6 10 14 17|)"},smithgw_exotic1:{frequencies:[261.6255653006,274.95996987324,293.39100498914,313.05750197389,327.96500300935,349.94905375768,367.78508905896,392.4383479509,411.12588832951,438.68435539504,468.09011223803,491.94750426812,523.2511306012],description:"Exotic temperament featuring four pure 14/11 thirds and two pure fifths"},smithgw_glumma:{frequencies:[261.6255653006,269.10058145205,299.00064605783,313.95067836072,327.03195662575,358.80077526939,373.75080757229,392.4383479509,436.04260883433,448.50096908674,457.84473927605,512.57253609913,523.2511306012],description:"Gene Smith's Glumma scale, 7-limit, 2002"},smithgw_gm:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:'Gene Ward Smith "Genesis Minus" periodicity block'},smithgw_graileq:{frequencies:[261.6255653006,274.83794140225,293.02845982215,312.42294214419,328.20064112269,350.39711148969,365.67350481015,391.53226450123,414.40482204179,438.61355268439,469.63029662389,490.10494633744,523.2511306012],description:"56% RMS grail + 44% JI grail"},smithgw_grailrms:{frequencies:[261.6255653006,274.64037495938,293.11160698959,312.82513967025,328.38692028068,350.6222941497,365.93760986436,391.94882001935,414.52240989365,438.39608269016,469.55771333591,490.068176414,523.2511306012],description:"RMS optimized Holy Grail"},smithgw_hahn12:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Hahn-reduced 12 note scale, Fokker block 225/224, 126/125, 64/63"},smithgw_hahn15:{frequencies:[261.6255653006,279.06726965397,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,373.75080757229,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Hahn-reduced 15 note scale"},smithgw_hahn16:{frequencies:[261.6255653006,280.31310567921,294.32876096318,299.00064605783,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,488.36772189445,490.54793493862,523.2511306012],description:"Hahn-reduced 16 note scale"},smithgw_hahn19:{frequencies:[261.6255653006,274.70684356563,280.31310567921,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 19 note scale"},smithgw_hahn22:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"Hahn-reduced 22 note scale"},smithgw_indianred:{frequencies:[261.6255653006,275.93321340298,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,331.11985608357,348.83408706747,353.19451315581,367.91095120397,372.08969287196,392.4383479509,413.43299207996,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,496.11959049595,523.2511306012],description:"32805/32768 Hahn-reduced"},smithgw_klv:{frequencies:[261.6255653006,271.78681896552,282.34272472006,293.30861211826,314.10491445143,326.30440921209,338.97771913949,352.14324873572,377.11107157735,391.75765725694,406.97310157871,422.77949745352,452.75560414132,470.34014155688,488.60764618722,523.2511306012],description:"Variant of kleismic with 9/7 thirds, g=316.492"},smithgw_meandin:{frequencies:[261.6255653006,280.31310567921,299.00064605783,313.95067836072,336.37572681506,348.83408706747,373.75080757229,392.4383479509,418.60090448096,448.50096908674,470.92601754108,504.56359022259,523.2511306012],description:"Gene Smith, inverted detempered 7-limit meantone"},smithgw_meanred:{frequencies:[261.6255653006,281.29980781121,291.99281841585,313.95067836072,325.57848126297,350.39138209902,363.36884069528,390.69417751556,420.46965851882,436.04260883433,468.83301301868,486.65469735975,523.2511306012],description:"171-et Hahn reduced rational Meantone[12]"},smithgw_meantune:{frequencies:[261.6255653006,273.55401844854,279.77233440758,292.56174910339,312.85829351777,327.16018629281,334.59705725462,349.85254391288,365.77071543428,374.29488261541,391.03456781852,418.40555295943,437.51985793188,468.14464283802,489.08159472971,500.47948461038,523.2511306012],description:"Meantune scale/temperament, Gene Ward Smith, 2003"},smithgw_mir22:{frequencies:[261.6255653006,267.57160087561,274.70684356563,280.31310567921,285.40970760065,299.00064605783,305.22982618403,319.76457981184,327.03195662575,343.38355445704,348.83408706747,366.27579142084,373.75080757229,392.4383479509,398.6675280771,418.60090448096,428.11456140098,448.50096908674,457.84473927605,479.64686971777,490.54793493862,512.78610798918,523.2511306012],description:"11-limit Miracle[22]"},smithgw_mmt:{frequencies:[261.6255653006,273.37431312998,292.50627485027,307.38829724655,327.03195662575,349.91912034749,365.63284274659,391.22147055517,411.12588832951,437.39890198442,459.65271605653,489.02683710225,523.2511306012],description:"Modified meantone with 5/4, 14/11 and 44/35 major thirds, TL 17-03-2003"},smithgw_modmos12a:{frequencies:[261.6255653006,265.27772209197,292.31087910123,304.72408298441,326.59518553839,340.46429857933,364.90060015836,391.09077971329,407.69874723177,425.01198472693,455.51656649021,488.21056770985,523.2511306012],description:"A 12-note modmos in 50-et meantone"},smithgw_octoid:{frequencies:[261.6255653006,272.34559486824,274.88944875317,277.45706359738,280.04865972334,282.66446436432,285.30470202322,296.99497716113,299.76906949343,302.56907333554,305.39522895084,308.24778413898,311.12698372208,323.87531915696,326.90048829645,329.95391413777,333.03585868997,336.14659218049,339.28638158975,353.18853996009,356.48751029933,359.81729479041,363.17817915623,366.5704580819,369.99442271164,385.15483391523,388.75238658,392.38354231563,396.04861270515,399.74791910495,403.48177901006,420.01432465796,423.93748365756,427.89728706578,431.89407466632,435.9281969008,440,458.02886886968,462.30710409523,466.62530033172,470.98382811593,475.38306960714,479.82340237272,499.48402328631,504.14947188193,508.85849826899,513.6115065207,518.40891338474,523.2511306012],description:"Octoid temperament, g=16.096, oct=1/8, 11-limit"},smithgw_orw18r:{frequencies:[261.6255653006,269.10058145205,280.31310567921,286.15296204753,299.00064605783,305.22982618403,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,448.50096908674,457.84473927605,474.80195184183,490.54793493862,523.2511306012],description:'Rational version of two cycles of 9-tone "Orwell"'},smithgw_pel1:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,363.36884069528,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 1"},smithgw_pel2:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 2"},smithgw_pel3:{frequencies:[261.6255653006,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"125/108, 135/128 periodicity block no. 3"},smithgw_pk:{frequencies:[261.6255653006,271.01659746112,280.74472171431,290.822034715,313.8821415949,325.1489200649,336.82012073975,348.91025643633,376.57634157395,390.09352641046,404.09590743895,418.60090448096,451.79296003201,468.01003810189,484.80922990434,523.2511306012],description:"Parakleismic temperament, g=315.263, 5-limit"},smithgw_pris:{frequencies:[261.6255653006,279.06726965397,293.02063313667,305.22982618403,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_prisa:{frequencies:[261.6255653006,274.70684356563,293.02063313667,313.95067836072,327.03195662575,343.38355445704,366.27579142084,392.4383479509,418.60090448096,439.53094970501,457.84473927605,488.36772189445,523.2511306012],description:"optimized (15/14)^3 (16/15)^4 (21/20)^3 (25/24)^2 scale"},smithgw_pum13marv:{frequencies:[261.6255653006,293.67396865289,305.56991629828,343.00138030143,326.66798000724,366.68389807519,349.22276077151,392.00157668785,407.88051296056,457.84473927605,436.04260883433,489.45661357347,549.41368713126,523.2511306012],description:"pum13 marvel tempered and in epimorphic order"},smithgw_qm3a:{frequencies:[261.6255653006,279.86396690685,305.19382000629,326.46944327063,349.22823143301,366.44956000397,391.99543598175,419.32216217931,457.27406033445,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode A, 72-tET, TL 04-01-2002"},smithgw_qm3b:{frequencies:[261.6255653006,279.86396690685,299.37379946195,326.46944327063,349.22823143301,373.57357677338,391.99543598175,419.32216217931,448.5538823653,489.15147723638,523.2511306012],description:"Qm(3) 10-note quasi-miracle scale, mode B"},smithgw_ragasyn1:{frequencies:[261.6255653006,269.16210421872,290.69507255622,313.95067836072,322.99452506247,348.83408706747,363.36884069528,392.4383479509,403.74315632809,436.04260883433,470.92601754108,484.4917875937,523.2511306012],description:"Ragasyn 6561/6250 81/80 scale"},smithgw_rainbow:{frequencies:[261.6255653006,273.37431312998,292.50627485027,310.51268695591,327.03195662575,349.91912034749,365.63284274659,391.22147055517,412.03444522126,437.39889945791,468.01003810189,489.02683710225,523.2511306012],description:"Circulating 1/4-comma meantone, Gene Ward SMith"},smithgw_ratwell:{frequencies:[261.6255653006,275.62199471997,293.02063313667,310.07474405997,326.72451751701,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.57747881743,465.11211608996,489.99465727995,523.2511306012],description:"7-limit rational well-temperament"},smithgw_ratwolf:{frequencies:[261.6255653006,272.55669785235,292.25605339318,313.37920299881,326.47268679644,350.06888377949,364.69531895389,391.05410158062,407.39296674476,436.83777202739,468.410735204,487.98168129749,523.2511306012],description:"Eleven fifths of (418/5)^(1/11) and one 20/13 wolf, G.W. Smith 2003"},smithgw_rectoo:{frequencies:[261.6255653006,290.69507255622,299.00064605783,313.95067836072,327.03195662575,348.83408706747,392.4383479509,408.78994578219,418.60090448096,436.04260883433,457.84473927605,470.92601754108,523.2511306012],description:"Hahn-reduced circle of fifths via <12 19 27 34| kernel"},smithgw_sc19:{frequencies:[261.6255653006,269.16210421872,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,508.60009894437,523.2511306012],description:"Fokker block from commas <81/80, 78732/78125>, Gene Ward Smith 2002"},smithgw_sch13:{frequencies:[261.6255653006,269.71217215021,278.04872701265,282.14859498561,290.86954990528,295.15846273282,304.2815407612,313.68660297237,318.31195648825,328.15068782436,332.98931632582,343.28171142549,353.89223299652,359.11042631209,370.21019888355,375.66900084958,387.28058594818,392.99109319609,405.13808832031,417.66053353744,423.81899742763,436.9188548657,443.36128543927,457.06517711961,471.19264083172,478.14044600934,492.91932687455,500.18749236202,515.64783010531,523.2511306012],description:"13-limit schismic temperament, g=704.3917, TL 31-10-2002"},smithgw_sch13a:{frequencies:[261.6255653006,266.49502311502,271.45511438723,280.18048669638,285.39529457963,294.56874561631,300.051354061,305.6360048159,315.46005229837,321.33149462105,331.66004360268,337.8330052901,344.12086009392,355.18192699392,361.79268541866,373.4217751344,380.37201938485,392.59830625439,399.90547017058,407.34863733398,420.4420328577,428.26743302475,442.03321824291,450.26048038501,458.64087358289,473.38295124548,482.19370453904,497.69284002863,506.95605959354,523.2511306012],description:"13-limit schismic temperament, g=702.660507, TL 31-10-2002"},smithgw_scj22a:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,301.39265122629,313.95067836072,327.03195662575,334.88072358477,348.83408706747,361.67118147155,363.36884069528,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,454.2110508691,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 15625/15552 = [6,5,22,37,-18,-6] catakleismic"},smithgw_scj22b:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,353.19451315581,372.08969287196,387.59343007496,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"5120/5103 ^ 225/224 = [1,-8,-14,-10,25,-15] schismic candidate"},smithgw_scj22c:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,367.91095120397,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"225/224 ^ 65625/65536 = [7,-3,827,7,-21] orwell candidate"},smithgw_secab:{frequencies:[261.6255653006,274.07613169002,291.39807132323,313.10572011471,348.73657263424,365.33268718488,392.54808236386,417.35759110361,437.21932894603,486.97408086388,523.2511306012],description:"{126/125, 176/175} tempering of decab, 328-et version"},smithgw_secac:{frequencies:[261.6255653006,281.11531641881,298.8821409504,313.10572011471,348.73657263424,374.71564313773,392.54808236386,417.35759110361,448.44857247831,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decac, 328-et version"},smithgw_secad:{frequencies:[261.6255653006,281.11531641881,313.10572011471,328.00618883132,348.73657263424,374.71564313773,392.54808236386,437.21932894603,469.78990700991,499.48119153644,523.2511306012],description:"{126/125, 176/175} tempering of decad, 328-et version"},smithgw_smalldi11:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,373.75080757229,423.93031414449,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"Small diesic 11-note block, <10/9, 126/125, 1728/1715> commas"},smithgw_smalldi19a:{frequencies:[261.6255653006,269.10058145205,272.52663052146,299.00064605783,305.22982618403,313.95067836072,317.94773560837,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,430.56093032327,436.04260883433,448.50096908674,457.84473927605,502.32108537715,508.71637697339,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 1728/1715> commas"},smithgw_smalldi19b:{frequencies:[261.6255653006,266.96486255163,274.70684356563,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,358.80077526939,366.27579142084,373.75080757229,381.53728273004,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,498.33441009638,512.78610798918,523.2511306012],description:"Small diesic 19-note block, <16/15, 126/125, 2401/2400> commas"},smithgw_smalldi19c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,286.15296204753,313.95067836072,320.49131749323,327.03195662575,336.37572681506,343.38355445704,373.75080757229,381.53728273004,392.4383479509,400.61414686654,436.04260883433,448.50096908674,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"Small diesic 19-note scale containing glumma"},smithgw_smalldiglum19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,280.40333801024,286.95745534843,312.9293240034,320.24370022528,327.729041887,335.38934511627,343.22869944589,374.29355081838,383.0422478503,391.99543598175,401.15789496562,437.46578647972,447.69106452518,458.15534711532,468.86422071654,511.30005826145,523.2511306012],description:'Small diesic "glumma" variant of 19-note MOS, 31/120 version'},smithgw_smalldimos11:{frequencies:[261.6255653006,267.74077300753,305.78200836532,312.9293240034,320.24370022528,365.74467430283,374.29355081838,427.47405410759,437.46578647972,447.69106452518,511.30005826145,523.2511306012],description:"Small diesic 11-note MOS, 31/120 version"},smithgw_smalldimos19:{frequencies:[261.6255653006,267.74077300753,273.99891691894,298.79793764201,305.78200836532,312.9293240034,320.24370022528,327.729041887,357.39105439675,365.74467430283,374.29355081838,383.0422478503,417.71053321823,427.47405410759,437.46578647972,447.69106452518,458.15534711532,499.62194879119,511.30005826145,523.2511306012],description:"Small diesic 19-note MOS, 31/120 version"},smithgw_star:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, untempered version'},smithgw_star2:{frequencies:[261.6255653006,282.55561052465,313.95067836072,327.03195662575,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:'Gene Ward Smith "Star" scale, alternative untempered version'},starra:{frequencies:[261.6255653006,274.07613169002,294.49338559574,313.10572011471,328.00618883132,343.61575980934,374.71564313773,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrb:{frequencies:[261.6255653006,274.07613169002,287.1192112957,305.26548915336,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,479.82340237272,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_starrc:{frequencies:[261.6255653006,274.07613169002,287.1192112957,313.10572011471,328.00618883132,343.61575980934,365.33268718488,392.54808236386,411.22915413197,437.21932894603,458.02627217006,492.14685988839,523.2511306012],description:"12 note {126/125, 176/175} scale, 328-et version"},smithgw_tetra:{frequencies:[261.6255653006,274.84135386022,293.90210492181,314.2847539672,326.44746606412,342.93767672779,366.7210324511,392.15380743582,419.35039192746,435.57910814854,457.58200907672,489.31615916483,523.2511306012],description:"{225/224, 385/384} tempering of two-tetrachord 12-note scale"},smithgw_tr31:{frequencies:[261.6255653006,267.54129532085,292.57243455474,299.18791603519,305.95298478736,334.57791819083,342.14320575162,349.87955533643,391.26571058456,400.11279059885,409.15991580663,447.44088028055,457.55816161244,467.90420651233,511.68128147674,523.2511306012],description:"6/31 generator supermajor seconds tripentatonic scale"},smithgw_tr7_13:{frequencies:[261.6255653006,183.87449048025,346.05860897284,243.21533855007,457.74028507734,321.70694650116,605.46440189891,425.52973856044,299.06887661109,562.85871464284,395.58580335293,744.50714985079,523.2511306012],description:"81/80 ==> 28561/28672"},smithgw_tr7_13b:{frequencies:[261.6255653006,372.25357492539,395.58580335293,281.42935732142,299.06887661109,425.52973856044,302.73220094945,321.70694650116,457.74028507734,486.43067710015,346.05860897284,367.7489809605,523.2511306012],description:"reverse reduced 81/80 ==> 28561/28672"},smithgw_tr7_13r:{frequencies:[261.6255653006,367.7489809605,346.05860897284,486.43067710015,457.74028507734,321.70694650116,302.73220094945,425.52973856044,299.06887661109,281.42935732142,395.58580335293,372.25357492539,523.2511306012],description:"reduced 81/80 ==> 28561/28672"},smithgw_tra:{frequencies:[261.6255653006,128.35937755236,399.56478905052,196.03545836752,610.23096296248,299.39301413087,931.96857771927,457.24471305759,224.33452437931,698.32199734535,342.61245382262,1066.50464849657,523.2511306012],description:"81/80 ==> 1029/512"},smithgw_tre:{frequencies:[261.6255653006,256.71872396454,399.56476227799,392.07084290614,305.11544059319,299.39293769309,465.98419519089,457.24482979639,448.66910888407,349.16106442144,342.6124767791,533.2523889322,523.2511306012],description:"81/80 ==> 1029/512 ==> reduction"},smithgw_treb:{frequencies:[261.6255653006,266.6261944661,342.6124767791,349.16106442144,448.66910888407,457.24482979639,465.98419519089,299.39293769309,305.11544059319,392.07084290614,399.56476227799,513.43744792908,523.2511306012],description:"reversed 81/80 ==> 1029/512 ==> reduction"},smithgw_trx:{frequencies:[261.6255653006,490.17835855476,354.35176059633,331.954494127,479.94227969828,449.60690021487,325.02250210538,304.47902995326,285.23403465053,412.39349145653,386.32762147798,279.2776760715,523.2511306012],description:"reduced 3/2->7/6 5/4->11/6 scale"},smithgw_trxb:{frequencies:[261.6255653006,279.2776760715,386.32762147798,412.39349145653,285.23403465053,304.47902995326,325.02250210538,449.60690021487,479.94227969828,331.954494127,354.35176059633,490.17835855476,523.2511306012],description:"reversed reduced 3/2->7/6 5/4->11/6 scale"},smithgw_wa:{frequencies:[261.6255653006,273.6474362764,299.37379946195,313.13022722746,327.51877211613,349.22823143301,374.77430422696,391.99543598175,417.97870684853,437.18511000944,469.1652354389,500.26367760099,523.2511306012],description:"Wreckmeister A temperament, TL 2-6-2002"},smithgw_wa120:{frequencies:[261.6255653006,273.99891691894,298.79793764201,312.9293240034,327.729041887,349.22823143301,374.29355081838,391.99543598175,417.71053321823,437.46578647972,468.86422071654,499.62194879119,523.2511306012],description:"120-tET version of Wreckmeister A temperament"},smithgw_wb:{frequencies:[261.6255653006,280.76349612739,291.78605424516,313.13022722746,327.51877211613,349.22823143301,365.2755039332,391.99543598175,417.97870684853,437.18511000944,469.1652354389,487.58430040208,523.2511306012],description:"Wreckmeister B temperament, TL 2-6-2002"},smithgw_well1:{frequencies:[261.6255653006,275.92984511873,292.92635710626,310.42107575858,327.5229776175,349.2237102284,367.90646015831,391.734151992,413.8947676781,437.99072463899,465.63161363786,490.54194687775,523.2511306012],description:"Well-temperament, Gene Ward Smith (2005)"},smithgw_whelp1:{frequencies:[261.6255653006,275.93321340298,292.50627485027,310.07474405997,327.03195662575,348.05120395042,368.50381975103,390.45372436301,413.66634097248,438.25895612273,464.36382062247,491.65133958137,523.2511306012],description:"well-temperament with one pure third, Gene Ward Smith, 2003"},smithgw_whelp2:{frequencies:[261.6255653006,275.85000668176,292.43269265164,309.98104674077,327.03195662575,347.97308568611,368.21146504308,391.7894791814,413.34036955908,438.14417346548,464.48314871299,489.73685071229,523.2511306012],description:"well-temperament with two pure thirds"},smithgw_whelp3:{frequencies:[261.6255653006,275.96871294479,292.50627485027,310.03485655885,327.03195662575,349.46135677641,368.11883862276,391.73393619399,413.66634097248,436.82669499534,464.84945270756,489.66742197778,523.2511306012],description:"well-temperament with three pure thirds"},smithgw_wiz28:{frequencies:[261.6255653006,269.80136421624,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,359.73515228832,370.01329949656,380.54627680087,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,508.71637697339,523.2511306012],description:"11-limit Wizard[28]"},smithgw_wiz34:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[34]"},smithgw_wiz38:{frequencies:[261.6255653006,269.80136421624,272.52663052146,277.4816601673,280.31310567921,285.40970760065,287.78812183066,297.30177875068,305.22982618403,308.34441624714,313.95067836072,317.12189733406,327.03195662575,336.37572681506,339.14425131559,345.34574619679,348.83408706747,356.76213450082,359.73515228832,370.01329949656,380.54627680087,383.71749577421,392.4383479509,396.40237166758,403.65087217807,406.97310157871,418.60090448096,431.68218274599,436.04260883433,443.97065626768,448.50096908674,460.46099492906,475.68284600109,479.64686971777,490.54793493862,493.35106599542,504.56359022259,508.71637697339,523.2511306012],description:"11-limit Wizard[38]"},smithgw_wreckpop:{frequencies:[261.6255653006,272.73569398658,292.31087910123,313.29104303136,326.59518553839,350.03605285217,364.90060015836,391.09077971329,419.16071913933,436.9606979923,455.51656649021,501.93603498211,523.2511306012],description:'"Wreckmeister" 13-limit meanpop (50-et) tempered thirds'},smithj12:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,331.11985608357,344.91651675372,363.36884069528,392.4383479509,408.78994578219,441.49314144476,459.88868900496,496.67978412536,523.2511306012],description:"J. Smith, 5-limit JI scale, MMM 21-3-2006"},smithj17:{frequencies:[261.6255653006,272.57820116223,283.17034563789,295.02492750576,308.97787266236,319.3201344739,332.68808325276,348.42227432308,363.00854876594,377.11473546037,392.90218486657,411.48414905414,425.25755219187,443.06044202496,464.01459698705,479.54632553791,499.62194879119,523.2511306012],description:"J. Smith 17-tone well temperament, MMM 12-2006"},smithrk_19:{frequencies:[261.6255653006,274.68253637698,286.11368885031,294.3308008075,305.19387818096,313.95878694534,327.0246436172,343.34529416761,348.83287827711,366.24211271841,381.48359653409,392.43970784476,406.92376081862,418.61050714007,436.03134720211,457.79213919624,470.93981233279,488.32112480698,508.64303280756,523.2511306012],description:"19 out of 612-tET by Roger K. Smith, 1978"},smithrk_mult:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,457.84473927605,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:'Roger K. Smith, "Multitonic" scale, just version'},solar:{frequencies:[261.6255653006,394.58976180129,774.00176545642,2207.36533954793,5481.83445910426,34573.03685904828,65024.37680021134,105705.6559450381],description:"Solar system scale: 0=Pluto, 8=Mercury. 1/1=248.54 years period"},solemn:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Solemn 6"},songlines:{frequencies:[261.6255653006,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,470.92601754108,479.64686971777,523.2511306012],description:"Songlines.DEM, Bill Thibault and Scott Gresham-Lancaster. 1992 ICMC (=rectsp6)"},sorge:{frequencies:[261.6255653006,272.52663052146,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,470.92601754108,490.54793493862,523.2511306012],description:"Sorge's Monochord (1756)"},sorge1:{frequencies:[261.6255653006,276.86979852503,293.00227310437,311.47852302926,328.88393162803,349.6228209638,369.57684148724,391.5530240856,415.30469757995,439.00737933323,466.69047534984,493.32589719545,523.2511306012],description:"Georg Andreas Sorge, 1744 (A)"},sorge2:{frequencies:[261.6255653006,276.24519242498,293.00227310437,310.77584116741,328.88393162803,348.83408706747,368.74309237173,391.5530240856,414.36778843034,438.51190905657,465.63764214343,492.21297564769,523.2511306012],description:"Georg Andreas Sorge, 1744 (B)"},sorge3:{frequencies:[261.6255653006,276.55731914056,293.00227310437,310.77584116741,328.51274831708,348.83408706747,369.15973155124,391.5530240856,414.83597850347,438.51190905657,465.63764214343,492.7691222293,523.2511306012],description:"Georg Andreas Sorge, well temperament, (1756, 1758)"},sparschuh:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,439.53094970501,465.69350623507,491.85606276513,523.2511306012],description:"Andreas Sparschuh WTC temperament, 1/1=C=250, modified Collatz sequence"},sparschuh2:{frequencies:[261.6255653006,276.27659695743,293.02063313667,310.81117157711,328.60171001755,349.008504111,368.36879594324,391.3918456897,414.41489543615,438.48444744381,465.69350623507,491.85606276513,523.2511306012],description:"Modified Sparschuh temperament with A=419Hz by Tom Dent"},spec1_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,523.2511306012],description:"Spectrum sequence of 8/7: 1 to 27 reduced by 2/1"},spec1_17:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/6: 1 to 27 reduced by 2/1"},spec1_25:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 5/4: 1 to 25 reduced by 2/1"},spec1_33:{frequencies:[261.6255653006,277.97716313189,294.32876096318,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of 4/3: 1 to 29 reduced by 2/1"},spec1_4:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 7/5: 1 to 25 reduced by 2/1"},spec1_5:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Spectrum sequence of 1.5: 1 to 27 reduced by 2/1"},specr2:{frequencies:[261.6255653006,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,408.78994578219,425.14154361347,457.84473927605,474.19633710734,490.54793493862,523.2511306012],description:"Spectrum sequence of sqrt(2): 1 to 29 reduced by 2/1"},specr3:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,392.4383479509,408.78994578219,425.14154361347,441.49314144476,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Spectrum sequence of sqrt(3): 1 to 31 reduced by 2/1"},spon_chal1:{frequencies:[261.6255653006,280.31310567921,285.40970760065,286.15296204753,348.83408706747,392.4383479509,420.46965851882,428.11456140098,429.2294430713,523.2511306012],description:"JC Spondeion, from discussions with George Kahrimanis about tritone of spondeion"},spon_chal2:{frequencies:[261.6255653006,275.62199471997,279.06726965397,285.40970760065,348.83408706747,392.4383479509,413.43299207996,418.60090448096,428.11456140098,523.2511306012],description:"JC Spondeion II, 10 May 1997. Various tunings for the parhypatai and hence trito"},spon_mont:{frequencies:[261.6255653006,271.31540105247,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Montford's Spondeion, a mixed septimal and undecimal pentatonic, 1923"},spon_terp:{frequencies:[261.6255653006,285.40970760065,348.83408706747,392.4383479509,428.11456140098,523.2511306012],description:"Subharm. 6-tone series, guess at Greek poet Terpander's, 6th c. BC & Spondeion, Winnington-Ingram (1928)"},stade:{frequencies:[261.6255653006,274.22463192287,292.50627485027,309.28772967674,327.03195662575,348.83408706747,365.63284274659,391.22147055517,411.33694767869,437.39890198442,465.11211608996,489.02683710225,523.2511306012],description:"Organs in St. Cosmae, Stade; Magnuskerk, Anloo; H.K. Sluipwijk, modif. 1/4 mean"},stanhope:{frequencies:[261.6255653006,275.62199471997,293.00227310437,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,437.52264545758,465.11211608996,489.99465727995,523.2511306012],description:"Well temperament of Charles, third earl of Stanhope (1806)"},stanhope2:{frequencies:[261.6255653006,275.85537639807,293.11251278827,310.16223770573,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.66634097248,437.85193595173,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament (real version?) with 1/3 synt. comma temp."},stanhope_f:{frequencies:[261.6255653006,275.62199471997,292.46014274879,310.07474405997,326.6631048533,348.83408706747,367.49599295996,392.4383479509,413.43299207996,436.79202494356,465.11211608996,489.99465727995,523.2511306012],description:"Stanhope temperament, equal beating version by Farey (1807)"},stanhope_s:{frequencies:[261.6255653006,275.77758308753,293.11247215425,310.2497806633,327.03195662575,348.83408706747,367.7034443005,392.4383479509,413.66637442451,437.85181455341,465.11211608996,490.54793493862,523.2511306012],description:"Stanhope temperament, alt. version with 1/3 syntonic comma"},starling:{frequencies:[261.6255653006,278.9816419584,293.66476791741,313.14630527334,327.50195613664,349.22823143301,367.60851651046,391.99543598175,418.00016846495,437.16266336983,466.16376151809,490.69849857048,523.2511306012],description:"Starling temperament, Herman Miller (1999)"},stearns:{frequencies:[261.6255653006,299.00064605783,336.37572681506,366.27579142084,398.6675280771,448.50096908674,504.56359022259,523.2511306012],description:"Dan Stearns, guitar scale"},stearns2:{frequencies:[261.6255653006,280.31310567921,287.78812183066,299.00064605783,313.95067836072,317.68818643644,336.37572681506,340.11323489078,355.06326719367,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,429.81342870813,444.76346101102,448.50096908674,467.18850946536,470.92601754108,485.87604984397,497.08857407114,504.56359022259,523.2511306012],description:'Dan Stearns, scale for "At A Day Job" based on harmonics 10-20 and 14-28'},stearns3:{frequencies:[261.6255653006,304.11599009871,327.88291945286,364.30920726489,423.47641042702,470.52269644143,546.93995798074,607.70247408742,706.39900722312,784.8766959018],description:"Dan Stearns, trivalent version of Bohlen's Lambda scale"},stearns4:{frequencies:[261.6255653006,296.65550714972,336.37572681506,347.46339693852,393.986457405,446.73865184892,461.46412096988,523.2511306012],description:"Dan Stearns, 1/4-septimal comma temperament, tuning-math 2-12-2001"},steldek1:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,343.38355445704,353.19451315581,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 5 7 9 dekany"},steldek1s:{frequencies:[261.6255653006,274.70684356563,275.93321340298,280.31310567921,286.15296204753,294.32876096318,305.22982618403,309.04519901133,315.35224388912,321.92208230347,327.03195662575,331.11985608357,339.14425131559,343.38355445704,353.19451315581,360.4025644447,367.91095120397,381.53728273004,386.30649876417,392.4383479509,400.61414686654,408.78994578219,412.06026534844,420.46965851882,429.2294430713,436.04260883433,441.49314144476,457.84473927605,482.88312345521,490.54793493862,494.47231841813,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated two out of 1 3 5 7 9 dekany"},steldek2:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.7792935736,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,449.66894036041,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Stellated two out of 1 3 5 7 11 dekany"},steldek2s:{frequencies:[261.6255653006,262.3068818769,269.80136421624,274.70684356563,280.31310567921,286.15296204753,294.32876096318,295.09524211152,299.7792935736,302.17752792219,308.34441624714,312.16686768822,314.76825825228,327.03195662575,337.2517052703,343.38355445704,349.7425091692,356.76213450082,359.73515228832,377.72190990274,381.53728273004,385.43052030892,392.4383479509,393.46032281536,400.61414686654,408.78994578219,416.22249025095,419.69101100305,429.2294430713,431.68218274599,440.49202321019,449.66894036041,454.06089845559,457.84473927605,472.15238737843,490.54793493862,494.63583439645,499.46698830115,503.62921320365,513.90736041189,523.2511306012],description:"Superstellated two out of 1 3 5 7 11 dekany"},steleik1:{frequencies:[220,220.57291666667,224.58333333333,225,226.875,229.16666666667,232.03125,235.27777777778,238.21875,240.625,242.63020833333,243.08035714286,247.5,248.14453125,252.08333333333,252.65625,255.234375,256.66666666667,257.8125,262.5,264.6875,270.703125,272.25,275,277.29166666667,278.4375,280.72916666667,283.59375,288.75,294.09722222222,297.7734375,302.5,308.80208333333,309.375,311.953125,315,315.10416666667,317.625,320.83333333333,324.10714285714,324.84375,330,330.859375,336.11111111111,336.875,340.3125,343.75,346.5,346.61458333333,350,352.91666666667,353.57142857143,360.9375,366.66666666667,371.25,378.125,385,388.92857142857,392.12962962963,393.75,397.03125,401.04166666667,403.33333333333,412.5,415.9375,423.5,425.390625,427.77777777778,432.14285714286,433.125,440],description:"Stellated Eikosany 3 out of 1 3 5 7 9 11"},steleik1s:{frequencies:[123.47082531403,123.79236392162,125.33976847064,127.32928860509,129.9819821177,130.22313607339,131.308328874,132.59082945654,132.63467563031,133.69575303535,135.04621518722,136.42423779117,136.73429287706,138.90467847828,139.26640941182,141.47698733899,141.79852594658,143.24544968073,144.69237341488,145.8499124022,145.89814319334,147.3231438406,148.55083670594,148.82644122673,151.92699208562,154.33853164254,156.26776328807,156.6747105883,159.16161075637,160.43490364242,160.48795751267,162.05545822466,163.70908534941,165.05648522882,165.43161360434,165.73853682068,167.11969129419,168.80776898403,169.77238480679,173.63084809785,175.077771832,175.80123369908,178.26100404713,179.05681210091,180.06162024963,181.89898372156,182.31239050275,185.20623797104,185.68854588243,189.06470126211,189.41547065221,190.99393290764,192.92316455317,195.33470411009,198.06778227459,200.54362955302,202.56932278083,204.25740047067,204.63635668676,208.35701771743,208.89961411773,212.21548100849,212.69778891987,214.8681745211,216.07394429955,217.03856012232,220.07531363843,220.98471576091,222.82625505891,227.89048812843,229.19271948917,231.50779746381,233.43702910934,233.87012192772,234.4016449321,236.33087657764,238.74241613455,241.07423537553,241.15395569146,243.083187337,246.94165062806],description:"Superstellated Eikosany 3 out of 1 3 5 7 9 11"},steleik2:{frequencies:[123.47082531403,124.49974885831,126.04313417474,126.11662871362,127.68005799519,128.74405847848,129.64436657973,130.41605923794,132.04518818306,132.96858110742,133.76006075687,135.81790784543,137.94006265552,138.64744759221,140.44806379471,141.47698733899,144.0492961997,145.92006628022,146.26543921816,147.13606683255,148.16499037684,148.55083670594,151.25176100969,152.15206911093,154.33853164254,154.49287017418,155.62468607289,156.05340421634,157.14468676331,157.64578589202,158.45422581967,160.51207290824,160.9300730981,163.85607442716,164.62776708537,167.20007594608,169.77238480679,170.24007732692,171.65874463798,172.85915543964,173.88807898393,175.56007974339,176.56328019906,180.06162024963,181.09054379391,182.8317990227,183.92008354069,185.20623797104,186.74962328747,187.26408505961,190.14507098361,193.11608771773,194.02558263633,197.55332050245,198.06778227459,200.6400911353,201.66901467958,202.31209189476,203.72686176815,204.2880927923,205.78470885672,205.99049356557,208.95062745451,210.19438118936,214.01609721099,214.57343079747,216.07394429955,217.36009872991,217.87456050205,220.70410024883,224.71690207153,226.36317974239,229.30296129748,230.47887391952,234.08010632452,237.68133872951,239.0961086029,240.76810936236,243.77573203026,245.22677805425,246.94165062806],description:"Stellated Eikosany 3 out of 1 3 5 7 11 13"},steleik2s:{frequencies:[61.73541265702,61.89618196081,62.32902239411,62.70002847979,63.66464430255,64.65940436978,64.99099105886,65.83502990378,66.22690508177,66.31733781516,67.05419712422,67.52310759362,68.40003106886,68.56192463352,68.97003132776,69.45233923915,69.63320470592,70.8992629733,71.32128239576,72.34618670745,72.41853289415,72.94907159667,73.15003322642,73.66157192031,73.89646213689,74.27541835298,75.24003417574,75.43597176474,76.80753488774,77.16926582128,78.37503559973,79.58080537819,79.800036247,80.24397875634,80.46503654906,81.02772911234,81.51003702372,82.29378737972,82.71580680218,82.76403759332,84.40388449202,84.45309958502,84.8861924034,85.7024057919,86.21253915971,86.81542404893,87.05458499673,87.53888591601,87.7800398717,89.13050202357,90.52316611769,90.94949186079,92.60311898553,92.84427294122,94.05004271968,94.53235063106,94.83379307568,95.49696645383,95.7600434964,96.46158227659,96.55804385887,97.94560661931,98.52861618252,100.32004556766,100.58129568632,101.28466139042,101.88754627965,102.12870023534,103.45504699165,104.17850885872,105.33604784604,105.47988405157,106.10774050425,107.4857631082,108.03697214979,109.72504983963,111.41312752947,112.07630090762,112.86005126361,113.15395764711,114.2698743892,114.95005221294,115.75389873191,115.86965263064,116.71851455468,118.16543828883,118.23433941902,119.7000543705,120.57697784574,120.69755482359,121.54159366851,122.26505553558,123.47082531404],description:"Superstellated Eikosany 3 out of 1 3 5 7 11 13"},stelhex1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,294.32876096318,327.03195662575,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 7 hexany, also dekatesserany, mandala, tetradekany"},stelhex2:{frequencies:[261.6255653006,275.93321340298,294.32876096318,327.03195662575,331.11985608357,353.19451315581,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 9 hexany"},stelhex3:{frequencies:[261.6255653006,271.31540105247,279.06726965397,281.36411960997,289.40309445597,297.67175429757,339.14425131559,348.83408706747,358.80077526939,361.75386806997,372.08969287196,385.87079260796,434.10464168396,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on Archytas's Enharmonic"},stelhex4:{frequencies:[261.6255653006,269.10058145205,276.78916949353,279.06726965397,287.04062021552,297.67175429757,336.37572681506,348.83408706747,358.80077526939,361.75386806997,372.08969287196,382.72082695402,430.56093032327,465.11211608996,523.2511306012],description:"Stellated Tetrachordal Hexany based on the 1/1 35/36 16/15 4/3 tetrachord"},stelhex5:{frequencies:[261.6255653006,294.32876096318,305.22982618403,331.11985608357,343.38355445704,386.30649876417,392.4383479509,400.61414686654,441.49314144476,457.84473927605,504.56359022259,515.07533168556,523.2511306012],description:"Stellated two out of 1 3 7 9 hexany, stellation is degenerate"},stelhex6:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,327.03195662575,337.2517052703,356.76213450082,359.73515228832,392.4383479509,408.78994578219,431.68218274599,449.66894036041,490.54793493862,494.63583439645,523.2511306012],description:"Stellated two out of 1 3 5 11 hexany, from The Giving, by Stephen J. Taylor"},stelpd1:{frequencies:[207.65234878997,208.19311011494,212.37172035338,214.14148468966,218.03496622947,219.00833661442,222.07265078927,222.48465941783,222.99030637105,224.84855892414,227.11975648903,229.43730502463,233.60889238872,237.93498298851,240.90917027586,242.2610735883,244.73312535961,245.28933700815,247.76700707894,249.83173213793,250.29524184505,254.84606442405,255.50972605016,256.96978162759,259.56543598746,262.81000393731,267.67685586207,272.54370778684,275.32476602956,277.59081348659,280.33067086646,281.06069865517,283.1622938045,285.52197958621,292.0111154859,297.32040849473,299.79807856552,302.82634198537,305.91640669951,306.61167126019,311.47852318496,312.28966517242,317.24664398468,317.96765908464,318.55758053007,321.21222703448,324.45679498433,327.0524493442,330.35600943859,333.10897618391,333.72698912674,340.67963473354,342.62637550345,346.08724798328,350.41333858307,356.90247448276,363.39161038245,367.09968803941,371.65051061841,374.7475982069,380.69597278161,385.45467244138,389.34815398119,392.59272193104,396.42721132631,399.73077142069,400.47238695209,401.51528379311,403.7684559805,407.88854226601,408.81556168025,415.30469757994],description:"Stellated two out of 1 3 5 7 9 11 pentadekany"},stelpd1s:{frequencies:[21.82676446456,21.88360499702,22.15715005948,22.2309638065,22.3228272933,22.50885085408,22.68892166091,22.91810268779,23.02041564622,23.14959867453,23.15196087848,23.34251199682,23.38581906917,23.43896865797,23.624449876,23.63429339678,23.87302363311,24.11662591508,24.35217522905,24.55511002263,24.61905562165,25.00983428231,25.20991295657,25.32245721084,25.46455854199,25.72440097609,25.78286552376,25.93612444091,26.04329850885,26.26032599642,26.30904645282,26.78739275196,26.85715158725,27.01062102489,27.2834555807,27.56185818867,27.62449877546,27.69643757435,28.01101439619,28.1360635676,28.29395393554,28.36115207614,28.41087110056,28.58266775121,28.64762835974,28.9399510981,29.17813999603,29.29871082246,29.46613202716,29.54286674598,29.7637697244,30.01180113877,30.06748166036,30.69388752829,30.99367756425,31.12334932909,31.25195821062,31.51239119571,31.65307151355,31.83069817748,32.15550122011,32.2285819047,32.41274522987,32.74014669684,32.82540749553,33.0742298264,33.34644570974,33.42223308636,33.48424093995,33.76327628112,34.09304532068,34.10431947588,34.37715403168,34.58149925455,34.7243980118,35.01376799523,35.07872860376,35.45144009517,35.80953544967,36.01416136652,36.17493887262,36.37794077427,36.74914425156,36.83266503394,36.92858343247,37.50234985274,37.51475142346,37.81486943485,37.88116146742,38.19683781298,38.26770393137,38.58660146413,38.90418666137,39.06494776328,39.39048899464,40.01573485169,40.28572738088,40.51593153734,40.92518337105,41.25258483802,41.26622656581,41.342787283,41.66927761416,42.01652159428,42.09447432451,42.2040953514,42.44093090331,42.61630665085,42.87400162681,42.9714425396,43.65352892912],description:"Superstellated two out of 1 3 5 7 9 11 pentadekany"},stelpent1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,343.38355445704,348.83408706747,353.19451315581,366.27579142084,367.91095120397,373.75080757229,381.53728273004,392.4383479509,406.97310157871,412.06026534844,420.46965851882,436.04260883433,441.49314144476,448.50096908674,457.84473927605,470.92601754108,490.54793493862,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Stellated one out of 1 3 5 7 9 pentany"},stelpent1s:{frequencies:[261.6255653006,271.31540105247,274.70684356563,275.93321340298,280.31310567921,282.55561052465,286.15296204753,288.32205155576,290.69507255622,294.32876096318,301.46155672497,305.22982618403,309.04519901133,313.95067836072,315.35224388912,320.35783506196,321.92208230347,327.03195662575,329.64821227876,336.37572681506,339.14425131559,343.38355445704,348.83408706747,353.19451315581,360.4025644447,366.27579142084,367.91095120397,373.75080757229,381.53728273004,386.30649876417,387.59343007496,392.4383479509,395.57785473451,403.65087217807,406.97310157871,411.88864507966,412.06026534844,420.46965851882,429.2294430713,436.04260883433,439.53094970501,441.49314144476,448.50096908674,452.19233508746,457.84473927605,470.92601754108,480.53675259294,482.88312345521,488.36772189445,490.54793493862,494.47231841813,498.33441009638,504.56359022259,508.71637697339,515.07533168556,523.2511306012],description:"Superstellated one out of 1 3 5 7 9 pentany"},steltet1:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,436.04260883433,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 7 tetrany"},steltet1s:{frequencies:[261.6255653006,274.70684356563,280.31310567921,286.15296204753,305.22982618403,313.95067836072,320.35783506196,327.03195662575,343.38355445704,366.27579142084,373.75080757229,381.53728273004,392.4383479509,429.2294430713,436.04260883433,439.53094970501,448.50096908674,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"Superstellated one out of 1 3 5 7 tetrany"},steltet2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,286.15296204753,305.22982618403,327.03195662575,333.84512238879,343.38355445704,381.53728273004,392.4383479509,400.61414686654,408.78994578219,436.04260883433,457.84473927605,476.92160341255,490.54793493862,523.2511306012],description:"Stellated three out of 1 3 5 7 tetrany"},steltet2s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Superstellated three out of 1 3 5 7 tetrany"},steltri1:{frequencies:[261.6255653006,313.95067836072,327.03195662575,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Stellated one out of 1 3 5 triany"},steltri2:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,408.78994578219,490.54793493862,523.2511306012],description:"Stellated two out of 1 3 5 triany"},stevin:{frequencies:[261.6255653006,277.20445571159,293.66434538175,311.1256573916,329.66931111467,349.25319089654,369.99797100919,392.00714009679,415.41055144586,440.15068186507,466.27261682516,494.00597677606,523.2511306012],description:"Simon Stevin, monochord division of 10000 parts for 12-tET (1585)"},stopper:{frequencies:[261.6255653006,277.19910487213,293.6996776193,311.18246278326,329.70593120198,349.3320268423,370.12638880276,392.15855510068,415.50221189151,440.23542223935,466.44090588941,494.20629608476,523.62445363767,554.79375523088,587.81844599272,622.80896314278,659.88233179115,699.16252826162,740.78092441407,784.8766959018],description:"Bernard Stopper, piano tuning with 19th root of 3 (1988)"},storbeck:{frequencies:[261.6255653006,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,353.19451315581,358.80077526939,381.53728273004,387.59343007496,392.4383479509,403.65087217807,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,523.2511306012],description:"Ulrich Storbeck, 2001"},strahle:{frequencies:[261.6255653006,278.94941459687,296.90543930973,315.65242990842,335.0021118691,355.12744448111,376.24442122187,398.15684412917,421.10213511252,444.85552088095,469.94877954106,496.17080790016,523.2511306012],description:"Strahle's Geometrical scale"},"sub24-12":{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Subharmonics 24-12"},sub24:{frequencies:[261.6255653006,10.90106522086,11.37502457829,11.89207115003,12.45836025241,13.08127826503,13.76976659477,14.53475362781,15.38973913533,16.35159783129,17.44170435337,18.68754037861,20.12504348466,21.80213044172,23.78414230005,26.16255653006,29.06950725562,32.70319566257,37.37508075723,43.60426088343,52.32511306012,65.40639132515,87.20852176687,130.8127826503,261.6255653006],description:"Subharmonics 24-1"},sub40:{frequencies:[261.6255653006,275.39533189537,290.69507255622,307.79478270659,327.03195662575,348.83408706747,373.75080757229,402.50086969323,418.60090448096,436.04260883433,475.68284600109,498.33441009638,523.2511306012],description:"sub 40-20"},sub48:{frequencies:[261.6255653006,279.06726965397,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,465.11211608996,502.32108537715,523.2511306012],description:"12 of sub 48 (Leven)"},sub50:{frequencies:[261.6255653006,272.52663052146,290.69507255622,311.45900631024,327.03195662575,344.24416486921,373.75080757229,384.74347838324,408.78994578219,436.04260883433,467.18850946536,484.4917875937,523.2511306012],description:"12 of sub 50"},sub8:{frequencies:[261.6255653006,279.06726965397,299.00064605783,322.00069575458,348.83408706747,380.54627680087,418.60090448096,465.11211608996,523.2511306012],description:"Subharmonic series 1/16 - 1/8"},sumatra:{frequencies:[261.6255653006,266.79889483106,324.44528279699,356.96377863828,390.9602296356,474.47355835313,530.64156666967,639.28283484968,713.92755727656,784.8766959018],description:'"Archeological" tuning of Pasirah Rus orch. in Muaralakitan, Sumatra. 1/1=354 Hz'},super_10:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 10-tone scale"},super_11:{frequencies:[261.6255653006,283.42769574232,305.22982618403,327.03195662575,348.83408706747,370.63621750918,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 11-tone scale"},super_12:{frequencies:[261.6255653006,279.06726965397,296.50897400735,313.95067836072,331.39238271409,348.83408706747,372.08969287196,395.34529867646,418.60090448096,441.85651028546,465.11211608996,494.18162334558,523.2511306012],description:"A superparticular 12-tone scale"},super_12_1:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"Another superparticular 12-tone scale"},super_12_2:{frequencies:[261.6255653006,280.31310567921,299.00064605783,317.68818643644,336.37572681506,355.06326719367,373.75080757229,392.4383479509,420.46965851882,448.50096908674,473.41768959156,498.33441009638,523.2511306012],description:"Another superparticular 12-tone scale"},super_13:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,418.60090448096,444.76346101102,470.92601754108,497.08857407114,523.2511306012],description:"A superparticular 13-tone scale"},super_14:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,414.24047839262,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 14-tone scale"},super_15:{frequencies:[261.6255653006,276.16031892841,290.69507255622,305.22982618403,319.76457981184,334.29933343966,348.83408706747,363.36884069528,381.53728273004,399.70572476481,417.87416679957,436.04260883433,457.84473927605,479.64686971777,501.44900015948,523.2511306012],description:"A superparticular 15-tone scale"},super_17:{frequencies:[261.6255653006,274.08392555301,286.54228580542,299.00064605783,311.45900631024,323.91736656265,336.37572681506,348.83408706747,363.36884069528,377.90359432309,392.4383479509,411.12588832951,429.81342870813,448.50096908674,467.18850946536,485.87604984397,504.56359022259,523.2511306012],description:"Superparticular 17-tone scale"},super_19:{frequencies:[261.6255653006,272.52663052146,283.42769574232,294.32876096318,305.22982618403,316.13089140489,327.03195662575,340.11323489078,353.19451315581,366.27579142084,379.35706968587,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.57848126297,337.20628416522,348.83408706747,363.36884069528,377.90359432309,392.4383479509,408.13588186894,423.83341578697,439.53094970501,455.22848362304,470.92601754108,488.36772189445,505.80942624783,523.2511306012],description:"Superparticular 19-tone scale"},super_19_2:{frequencies:[261.6255653006,269.80136421624,277.97716313189,294.32876096318,302.50455987882,310.68035879446,318.85615771011,327.03195662575,343.38355445704,359.73515228832,376.08675011961,392.4383479509,408.78994578219,425.14154361347,441.49314144476,457.84473927605,474.19633710734,490.54793493862,506.89953276991,523.2511306012],description:"Superparticular 19-tone scale"},super_22:{frequencies:[261.6255653006,270.96933548991,280.31310567921,289.65687586852,299.00064605783,308.34441624714,317.68818643644,327.03195662575,337.93302184661,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,406.45400323486,420.46965851882,434.48531380278,448.50096908674,463.45100138963,478.40103369253,493.35106599542,508.30109829831,523.2511306012],description:"Superparticular 22-tone scale"},super_22_1:{frequencies:[261.6255653006,272.09058791262,282.55561052465,293.02063313667,303.4856557487,313.95067836072,325.16320258789,336.37572681506,347.58825104223,358.80077526939,370.01329949656,381.22582372373,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 22-tone scale"},super_24:{frequencies:[261.6255653006,270.34641747729,279.06726965397,287.78812183066,296.50897400735,305.22982618403,313.95067836072,322.67153053741,331.39238271409,340.11323489078,348.83408706747,359.73515228832,370.63621750918,381.53728273004,392.4383479509,405.51962621593,418.60090448096,431.68218274599,444.76346101102,457.84473927605,470.92601754108,484.00729580611,497.08857407114,510.16985233617,523.2511306012],description:"Superparticular 24-tone scale, inverse of Mans.ur 'Awad"},super_7:{frequencies:[261.6255653006,287.78812183066,313.95067836072,353.19451315581,392.4383479509,431.68218274599,470.92601754108,523.2511306012],description:"A superparticular 7-tone scale"},super_8:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"A superparticular 8 tone scale"},super_9:{frequencies:[261.6255653006,287.78812183066,313.95067836072,340.11323489078,366.27579142084,392.4383479509,425.14154361347,457.84473927605,490.54793493862,523.2511306012],description:"A superparticular 9-tone scale"},suppig:{frequencies:[261.6255653006,272.52663052146,279.06726965397,294.32876096318,306.59245933664,313.95067836072,327.03195662575,340.65828815182,348.83408706747,367.91095120397,376.74081403286,392.4383479509,408.78994578219,418.60090448096,436.04260883433,459.88868900496,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"Friedrich Suppig's 19-tone JI scale. Calculus Musicus, Berlin 1722"},sur_7:{frequencies:[261.6255653006,280.40333801024,327.729041887,351.25128999693,383.0422478503,410.5345162762,479.82340237272,523.2511306012],description:"7-tone surupan"},sur_9:{frequencies:[261.6255653006,280.40333801024,305.78200836532,327.729041887,351.25128999693,383.0422478503,410.5345162762,447.69106452518,479.82340237272,523.2511306012],description:"Theoretical nine-tone surupan gamut"},sur_ajeng:{frequencies:[261.6255653006,285.30470202322,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan ajeng"},sur_degung:{frequencies:[261.6255653006,322.09885310804,345.21700307457,396.55020354877,488.21056770985,523.2511306012],description:"Surupan degung"},sur_madenda:{frequencies:[261.6255653006,322.09885310804,345.21700307457,425.01198472693,488.21056770985,523.2511306012],description:"Surupan madenda"},sur_melog:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,410.5345162762,523.2511306012],description:"Surupan melog"},sur_miring:{frequencies:[261.6255653006,285.30470202322,305.78200836532,389.73770840504,417.71053321823,523.2511306012],description:"Surupan miring"},sur_x:{frequencies:[261.6255653006,280.40333801024,305.78200836532,383.0422478503,417.71053321823,523.2511306012],description:"Surupan tone-gender X (= unmodified nyorog)"},sur_y:{frequencies:[261.6255653006,280.40333801024,300.52885648597,383.0422478503,410.5345162762,523.2511306012],description:"Surupan tone-gender Y (= mode on pamiring)"},sverige:{frequencies:[261.6255653006,293.66476791741,329.62755691287,349.22823143301,391.99543598175,440,466.16376151809,493.88330125613,523.2511306012,554.36526195375,587.32953583482,622.25396744417,659.25511382574,698.45646286601,739.98884542327,783.9908719635,830.60939515989,880,932.32752303618,987.76660251225,1046.5022612024,1174.65907166964,1318.51022765149,1396.91292573202,1567.98174392701],description:"Scale on Swedish 50 crown banknote of some kind of violin."},syntonolydian:{frequencies:[261.6255653006,294.32876096318,331.11985608357,372.50983809402,392.4383479509,441.49314144476,496.67978412536,523.2511306012],description:"Greek Syntonolydian, also genus duplicatum medium, or ditonum (Al-Farabi)"},syrian:{frequencies:[261.6255653006,268.67837258085,275.62199471997,279.38237857051,286.74979536837,294.32876096318,302.10804307229,310.07474405997,314.30517589183,322.59351978942,326.6631048533,331.11985608357,339.85160932548,348.83408706747,358.05397697456,367.49599295996,372.50983809402,382.33306049116,392.4383479509,402.81072409638,413.43299207996,419.07356785577,430.12469305256,441.49314144476,453.13547910064,465.11211608996,477.40530263275,489.99465727995,496.67978412536,509.77741398822,523.2511306012],description:"After ^Sayh.'Ali ad-Darwis^ (Shaykh Darvish) from d'Erlanger vol.5, p.29"},szpak_24:{frequencies:[261.6255653006,270.98948203641,277.18263097687,287.10335517712,293.66476791741,304.17540907689,311.12698372208,322.26262012861,329.62755691287,341.42535271779,349.22823143301,361.7275606831,369.99442271164,383.23700075636,391.99543598175,406.02545869431,415.30469757995,430.16898885692,440,455.74816803176,466.16376151809,482.84836435151,493.88330125613,511.56002220218,523.2511306012],description:"Stephen Szpak's scale, TL 2-1-2004"},pagano_b:{frequencies:[261.6255653006,277.97716313189,289.55954492905,312.72430852337,333.57259575826,351.8148470888,370.63621750918,389.16802838464,416.96574469783,444.76346101102,463.29527188648,486.4600354808,523.2511306012],description:"Pat Pagano and David Beardsley, 17-limit scale, TL 27-2-2001"},palace:{frequencies:[261.6255653006,277.01530443593,294.32876096318,299.00064605783,336.37572681506,348.83408706747,373.75080757229,392.4383479509,409.50088481833,428.11456140098,448.50096908674,470.92601754108,523.2511306012],description:"Palace mode+"},palace2:{frequencies:[261.6255653006,277.01530443593,336.37572681506,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Byzantine Palace mode, 17-limit"},panpipe1:{frequencies:[261.6255653006,305.78200836532,346.61566493686,386.59871897734,424.03113209229,475.68400784708,523.2511306012],description:"Palina panpipe of Solomon Islands. 1/1=f+45c. From Ocora CD Guadalcanal"},panpipe2:{frequencies:[261.6255653006,301.39807245198,340.46429857933,389.512652082,435.70052664441,481.48922855473,540.45338572244,606.98892366383,675.83458963267,749.45240308975,819.17415016614,915.78156525194,979.24522642508,1073.44040298899,1178.73719255088,1360.28482360484],description:"Lalave panpipe of Solomon Islands. 1/1=f'+47c."},panpipe3:{frequencies:[261.6255653006,302.44445076078,341.44901934006,382.59999559751,433.19107626846,482.88183400971,542.01653249392,602.10016957865,677.78929781797,755.1012944609,822.018116801,906.30932187391,994.06270356141,1067.87449159209,1155.14617783291,1300.35790771888],description:"Tenaho panpipe of Solomon Islands. 1/1=f'+67c."},parachrom:{frequencies:[261.6255653006,274.52698453615,288.06460709314,349.22823143301,391.99543598175,411.32572372413,431.60923940535,523.2511306012],description:"Parachromatic, new genus 5 + 5 + 20 parts"},parakleismic:{frequencies:[261.6255653006,269.41173453909,271.00883762044,279.07425994419,280.72864356353,282.39283618632,290.79705467987,292.52093234567,301.22657042972,303.0122754386,312.03014360907,313.87989341557,323.22118988972,325.13728335605,327.06473376202,336.79842078181,338.79499972275,348.87778808468,350.94597487438,361.39038519337,363.53274806687,374.35175001315,376.5709514911,387.77797996035,390.07677146523,392.38919046486,404.06698135965,406.46233589795,418.55895395107,421.04021853379,433.57068509561,436.14094342919,449.12081866987,451.783257426,465.22865943552,467.98658728446,470.76086444006,484.77105399159,487.64483417146,502.15750307968,505.13434926963,520.16751901001,523.2511306012],description:"Parakleismic temperament, g=315.250913, 5-limit"},parizek:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,327.03195662575,343.38355445704,359.73515228832,392.4383479509,425.14154361347,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone Linear Level tuning, 1/1=Ab"},parizek_13lqmt:{frequencies:[261.6255653006,272.70676208351,292.18581651805,313.05623198362,325.57848126297,348.83408706747,365.23227064756,391.32028997953,406.97310157871,436.04260883433,467.18850946536,486.97636086341,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_17lqmt:{frequencies:[261.6255653006,272.52663052146,291.99281841585,312.60407618638,327.03195662575,350.39138209902,364.70475555078,390.75509523297,408.78994578219,436.04260883433,467.18850946536,488.44386904122,523.2511306012],description:"To tune the scale by ear, please choose the intervals in the following order:"},parizek_7lmtd1:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"Use SET MIDDLE 62"},parizek_7lqmtd2:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,390.69417751556,418.60090448096,437.98922762377,468.83301301868,488.36772189445,523.2511306012],description:"Use SET MIDDLE 62"},parizek_cirot:{frequencies:[261.6255653006,273.76082553017,293.33333347996,307.98092841354,327.40170814054,348.04713286849,366.66693712906,392.88175996935,409.71484950008,438.01699797506,463.01593599647,491.10256480205,523.2511306012],description:"Overtempered circular tuning (1/1 is F)"},parizek_epi:{frequencies:[261.6255653006,283.42769574232,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,392.4383479509,418.60090448096,436.04260883433,457.84473927605,479.64686971777,523.2511306012],description:"In The Epimoric World"},parizek_epi2:{frequencies:[261.6255653006,283.42769574232,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,523.2511306012,523.2511306012],description:"In the Epimoric World - extended (version for two keyboards)"},parizek_epi2a:{frequencies:[261.6255653006,283.42769574232,287.78812183066,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,392.4383479509,411.12588832951,418.60090448096,425.14154361347,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,485.87604984397,523.2511306012,523.2511306012],description:"April 2003 - Petr Parizek"},parizek_ji1:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,523.2511306012],description:"Petr Parizek, 12-tone septimal tuning, 2002."},parizek_jiweltmp:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,329.45441556372,348.83408706747,370.63621750918,392.4383479509,416.96574469783,440.63253103259,465.11211608996,494.18162334558,523.2511306012],description:"April 2003 - Petr Parizek"},jiwt2:{frequencies:[261.6255653006,277.97716313189,294.32876096318,310.68035879446,331.11985608357,348.83408706747,372.08969287196,392.4383479509,415.8649508569,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"June 2003 - Petr Parizek"},parizek_llt7:{frequencies:[261.6255653006,283.42769574232,327.03195662575,359.73515228832,392.4383479509,425.14154361347,479.64686971777,523.2511306012],description:"7-tone mode of Linear Level Tuning 2000 (= wilson_helix)"},parizek_qmeb1:{frequencies:[261.6255653006,273.53155294581,293.066620053,305.25690181412,326.9069921792,350.33366042609,366.2083106197,392.1884190578,408.50877577745,437.87542071709,457.7197748295,488.61098601707,523.2511306012],description:"Equal beating quasi-meantone tuning no. 1 - F...A# (1/1 = 261.7Hz)(3/2 5/3 5/4 7/4 7/6)"},parizek_qmeb2:{frequencies:[261.6255653006,274.12423619715,293.39509530855,306.21121252767,327.1564453797,350.32795211486,366.55713600477,391.6914154272,409.44351174042,438.20041390279,457.4712730142,489.73875803795,523.2511306012],description:"Equal beating quasi-meantone tuning no. 2 - F...A# (1/1 = 262.7Hz)"},parizek_qmeb3:{frequencies:[261.6255653006,274.23252240717,293.57983281823,306.4052273004,327.28159934073,350.29865766202,366.78755898655,391.93906252094,409.53887392713,438.37260750749,457.59509656107,490.04864950866,523.2511306012],description:"Equal beating quasi-meantone tuning no. 3 - F...A#. 1/1 = 262Hz"},parizek_qmtp12:{frequencies:[261.6255653006,273.55480692456,293.00227310437,305.44101254122,326.6631048533,350.4133380576,366.39100206434,391.84790908124,408.48291326839,437.52264545758,457.47219685667,489.2574430773,523.2511306012],description:"12-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (F...A#)"},parizek_qmtp24:{frequencies:[261.6255653006,273.14323313659,280.64720643091,285.59764149034,293.00227310437,305.44101254122,313.83229199844,326.6631048533,335.63741195089,341.5578378819,350.4133380576,365.83975262993,375.89034660662,381.37064019061,391.84790908124,407.86833637529,419.07356785577,437.52264545758,448.86620556368,457.47219685667,469.33298761093,489.2574430773,502.69865025911,510.02774559919,523.2511306012],description:"24-tone quasi-meantone tuning with 1/9 Pyth. comma as basic tempering unit (Bbb...C##)"},parizek_syndiat:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,436.04260883433,441.49314144476,484.4917875937,490.54793493862,523.2511306012],description:"Petr Parizek, diatonic scale with syntonic alternatives"},parizek_syntonal:{frequencies:[261.6255653006,272.52663052146,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,490.54793493862,523.2511306012],description:"Petr Parizek, Syntonic corrections in JI tonality, Jan. 2004"},parizek_temp19:{frequencies:[261.6255653006,276.69969455132,294.32876096318,310.68035879446,328.58088727969,349.51540364377,368.93292606842,392.4383479509,415.04954182698,438.10784970625,466.02053819169,492.87133091954,523.2511306012],description:"Petr Parizek, genus [3 3 19 19 19] well temperament"},"partch-barstow":{frequencies:[261.6255653006,279.06726965397,287.78812183066,290.69507255622,294.32876096318,299.00064605783,313.95067836072,327.03195662575,348.83408706747,359.73515228832,373.75080757229,392.4383479509,418.60090448096,436.04260883433,448.50096908674,470.92601754108,479.64686971777,490.54793493862,523.2511306012],description:"Guitar scale for Partch's Barstow (1941, 1968)"},"partch-greek":{frequencies:[261.6255653006,261.6255653006,271.31540105247,294.32876096318,279.06726965397,348.83408706747,313.95067836072,392.4383479509,392.4383479509,406.97310157871,418.60090448096,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" on black/white'},"partch-grm":{frequencies:[261.6255653006,271.31540105247,279.06726965397,294.32876096318,313.95067836072,348.83408706747,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:'Partch Greek scales from "Two Studies on Ancient Greek Scales" mixed'},"partch-indian":{frequencies:[261.6255653006,269.80136421624,277.97716313189,285.40970760065,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,383.71749577421,392.4383479509,406.97310157871,411.12588832951,428.11456140098,441.49314144476,457.84473927605,475.68284600109,490.54793493862,507.3950357345,523.2511306012],description:"Partch's Indian Chromatic, Exposition of Monophony, 1933."},"partch-ur":{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch curved keyboard, published in Interval"},"partch_29-av":{frequencies:[261.6255653006,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,470.92601754108,479.64686971777,488.36772189445,498.33441009638,507.3950357345,523.2511306012],description:"29-tone JI scale from Partch's Adapted Viola 1928-30"},partch_29:{frequencies:[261.6255653006,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,523.2511306012],description:"Partch/Ptolemy 11-limit Diamond"},partch_37:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol.9(2)'},partch_39:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"Ur-Partch Keyboard 39 tones, published in Interval"},partch_41:{frequencies:[261.6255653006,281.75060878526,283.42769574232,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,322.00069575458,327.03195662575,332.97799220076,336.37572681506,340.11323489078,348.83408706747,359.73515228832,362.25078272391,366.27579142084,373.75080757229,377.90359432309,380.54627680087,392.4383479509,402.50086969323,406.97310157871,411.12588832951,418.60090448096,425.14154361347,428.11456140098,436.04260883433,442.75095666255,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,483.00104363188,485.87604984397,523.2511306012],description:"13-limit Diamond after Partch, Genesis of a Music, p 454, 2nd edition"},partch_41a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},partch_41comb:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.08392555301,274.70684356563,279.06726965397,280.31310567921,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,348.83408706747,359.73515228832,366.27579142084,373.75080757229,380.54627680087,392.4383479509,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,488.36772189445,490.54793493862,498.33441009638,499.46698830115,507.3950357345,512.57253609913,523.2511306012],description:"41-tone JI combination from Partch's 29-tone and 37-tone scales"},partch_43:{frequencies:[261.6255653006,264.89588486686,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,516.79124009995,523.2511306012],description:"Harry Partch's 43-tone pure scale"},partch_43a:{frequencies:[261.6255653006,267.07609791103,269.80136421624,274.70684356563,279.06726965397,285.40970760065,287.78812183066,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,356.76213450082,359.73515228832,366.27579142084,373.75080757229,380.54627680087,383.71749577421,392.4383479509,398.6675280771,406.97310157871,411.12588832951,418.60090448096,428.11456140098,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,475.68284600109,479.64686971777,490.54793493862,498.33441009638,507.3950357345,512.57253609913,523.2511306012],description:'From "Exposition on Monophony" 1933, unp. see Ayers, 1/1 vol. 9(2)'},patala:{frequencies:[261.6255653006,289.6217982776,320.24370022528,355.94891173479,393.58362272115,439.74591942221,480.6555937997,537.34060327431],description:"Observed patala tuning from Burma, Helmholtz/Ellis p. 518, nr.83"},pelog1:{frequencies:[261.6255653006,285.79952600623,313.83440569119,359.87690576543,393.35634555235,426.98050185716,482.04578814299,523.2511306012],description:"Gamelan Saih pitu from Ksatria, Den Pasar (South Bali). 1/1=312.5 Hz"},pelog10:{frequencies:[261.6255653006,290.16653606067,310.14521470005,342.49164912079,385.30310526088,418.60090448096,442.38504678101,523.2511306012],description:"Balinese saih 7 scale, Krobokan. 1/1=275 Hz. McPhee, 1966"},pelog11:{frequencies:[261.6255653006,289.11520789678,327.03195662575,352.6257619269,388.64667309147,441.73012112348,478.69895237627,523.2511306012],description:"Balinese saih pitu, gamelan luang, banjar Se`se'h. 1/1=276 Hz. McPhee, 1966"},pelog11i:{frequencies:[261.6255653006,267.83009854382,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,392.61532371972,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog12:{frequencies:[261.6255653006,284.41230790592,308.04300430555,358.68021049276,385.68672051706,409.31741667997,472.61392441399,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Tampak Gangsai, 1/1=310, McPhee"},pelog13:{frequencies:[261.6255653006,289.80062617913,323.61069924911,351.78575931905,394.45085229937,454.02098012766,494.27106657141,523.2511306012],description:"Balinese saih pitu, gamelan Semar Pegulingan, Klungkung, 1/1=325. McPhee, 1966"},pelog14:{frequencies:[261.6255653006,287.66412867175,309.98289727559,347.18084494866,375.69927149802,402.97776645827,427.77639824032,523.2511306012],description:"Balinese saih pitu, suling gambuh, Tabanan, 1/1=211 Hz, McPhee, 1966"},pelog15:{frequencies:[261.6255653006,284.9387344858,307.6043148279,344.51683351465,375.60105909492,407.98046074103,427.4081017287,523.2511306012],description:"Balinese saih pitu, suling gambuh, Batuan, 1/1=202 Hz. McPhee, 1966"},pelog2:{frequencies:[261.6255653006,285.30470202322,314.92395982138,345.81573716922,388.6137256405,424.52127512829,466.97226207056,523.2511306012],description:"Bamboo gambang from Batu lulan (South Bali). 1/1=315 Hz"},pelog3:{frequencies:[261.6255653006,285.63448939555,315.83481057014,390.18821123181,421.34544350737,523.2511306012],description:"Gamelan Gong from Padangtegal, distr. Ubud (South Bali). 1/1=555 Hz"},pelog4:{frequencies:[261.6255653006,290.96323214696,317.29765457754,352.87817160549,385.03871768789,434.94616895528,470.49199937597,523.2511306012],description:"Hindu-Jav. demung, excavated in Banjarnegara. 1/1=427 Hz"},pelog5:{frequencies:[261.6255653006,284.64626913494,310.94732162256,358.21775774651,390.8649420513,427.47405410759,468.32288027948,523.2511306012],description:"Gamelan Kyahi Munggang (Paku Alaman, Jogja). 1/1=199.5 Hz"},pelog6:{frequencies:[261.6255653006,282.02769802256,315.83481057014,354.51258839996,386.37547528213,413.39000965417,523.2511306012],description:"Gamelan Semar pegulingan, Ubud (S. Bali). 1/1=263.5 Hz"},pelog7:{frequencies:[261.6255653006,281.2143451833,303.31920717687,353.89879686059,384.81637482457,412.43597848639,448.72664641273,523.2511306012],description:"Gamelan Kantjilbelik (kraton Jogja). Measured by Surjodiningrat, 1972."},pelog8:{frequencies:[261.6255653006,281.2143451833,305.0763174688,362.1707891162,386.59871897734,415.30469757995,456.83405152976,529.33101587613,573.91491069685,623.33318620372,730.64478690489,786.25839925218,840.74610520523,945.88853913022,1075.30214607265],description:"from William Malm: Music Cultures of the Pacific, the Near East and Asia."},pelog9:{frequencies:[261.6255653006,282.57123920205,305.19382000629,356.01745236555,384.52011812375,415.30469757995,448.5538823653,523.2511306012],description:"9-tET Pelog"},pelog9i:{frequencies:[261.6255653006,287.76973397991,309.19384990071,332.21296611011,356.94582815655,383.52002471837,421.84506978464,453.25093845942,486.99493426005,523.2511306012],description:"George Secor's isopelogic scale with ~537.84194 generator and just 13/11"},pelog_24:{frequencies:[261.6255653006,293.66476791741,320.24370022528,349.22823143301,391.99543598175,440,479.82340237272,523.2511306012],description:"Subset of 24-tET (Sumatra?)"},pelog_a:{frequencies:[261.6255653006,280.7274598329,305.95868600104,363.84824628932,386.82209166041,411.72190027758,452.10885997356,523.2511306012],description:"Pelog, average class A. Kunst 1949"},pelog_alv:{frequencies:[261.6255653006,299.00064605783,313.95067836072,343.38355445704,392.4383479509,418.60090448096,457.84473927605,523.2511306012],description:"Bill Alves JI Pelog, 1/1 vol. 9 no. 4, 1997. 1/1=293.33"},pelog_av:{frequencies:[261.6255653006,280.40333801024,305.78200836532,357.39105439675,385.26118901859,411.72190027758,452.89298412314,523.2511306012],description:'"Normalised Pelog", Kunst, 1949. Average of 39 Javanese gamelans'},pelog_b:{frequencies:[261.6255653006,280.07959041159,302.79405018898,354.30787302884,382.82105786018,408.64182041696,451.58686491179,523.2511306012],description:"Pelog, average class B. Kunst 1949"},pelog_c:{frequencies:[261.6255653006,279.91785681123,304.37225518229,350.84574289301,384.81637482457,410.29745071461,451.58686491179,523.2511306012],description:"Pelog, average class C. Kunst 1949"},pelog_he:{frequencies:[261.6255653006,283.17034563789,338.50336851425,364.68988616898,389.06292924114,420.13030572059,493.31307433255,523.2511306012],description:"Observed Javanese Pelog scale, Helmholtz/Ellis p. 518, nr.96"},pelog_jc:{frequencies:[261.6255653006,294.32876096318,313.95067836072,392.4383479509,418.60090448096,523.2511306012],description:"John Chalmers' Pelog, on keys C# E F# A B c#, like Olympos' Enharmonic on 4/3"},pelog_laras:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,414.24047839262,457.84473927605,523.2511306012],description:'Lou Harrison, gamelan "Si Betty"'},pelog_me1:{frequencies:[261.6255653006,281.13654920971,305.96893643544,353.85975480175,389.33427481332,412.3928606827,454.07565526112,523.2511306012],description:"Gamelan Kyahi Kanyut Mesem pelog (Mangku Nagaran). 1/1=295 Hz"},pelog_me2:{frequencies:[261.6255653006,277.86440299076,299.96729002515,349.58586605592,383.41679241104,405.97081699752,447.47001910635,523.2511306012],description:"Gamelan Kyahi Bermara (kraton Jogja). 1/1=290 Hz"},pelog_me3:{frequencies:[261.6255653006,281.75056896146,306.90688773629,358.59164065877,385.12012728597,411.64865826518,457.38747412584,523.2511306012],description:"Gamelan Kyahi Pangasih (kraton Solo). 1/1=286 Hz"},pelog_pa:{frequencies:[261.6255653006,286.29520819723,313.29104303136,342.83241505062,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:'"Blown fifth" pelog, von Hornbostel, type a.'},pelog_pa2:{frequencies:[261.6255653006,286.29520819723,313.29104303136,353.69443592699,387.04559340587,423.54155496477,463.47885582013,523.2511306012],description:"New mixed gender Pelog"},pelog_pb:{frequencies:[261.6255653006,277.98432293805,304.19649364034,353.69443592699,387.04559340587,411.24653512154,450.02449304881,523.2511306012],description:'"Primitive" Pelog, step of blown semi-fourths, von Hornbostel, type b.'},pelog_pb2:{frequencies:[261.6255653006,277.50302994288,303.66981774726,353.69443592699,387.04559340587,410.5345162762,449.24533531117,523.2511306012],description:'"Primitive" Pelog, Kunst: Music in Java, p. 28'},pelog_schmidt:{frequencies:[261.6255653006,287.78812183066,313.95067836072,366.27579142084,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Modern Pelog designed by Dan Schmidt and used by Berkeley Gamelan"},pelog_selun:{frequencies:[261.6255653006,281.10829462369,350.68958753059,378.52209447746,416.55977244877,523.2511306012,562.21664032682,701.37917506118,757.04418895493,833.11970794305,1046.5022612024,1124.43328065364],description:"Gamelan selunding from Kengetan, South Bali (Pelog), 1/1=141 Hz"},pelog_slen:{frequencies:[261.6255653006,289.4545544734,306.66641795878,334.42210013281,344.22141564971,354.30787302884,386.37547528213,397.69714089209,446.39994737251,459.48046426806,493.88330125613,523.2511306012],description:"W.P. Malm, pelog+slendro, Musical Cultures Of The Pacific, The Near East, And Asia. P: 1,3,5,6,8,10; S: 2,4,7,9"},pelog_str:{frequencies:[261.6255653006,282.73796785026,305.22982618403,329.86096249197,356.10146388137,384.83778957396,415.4517078616,448.97742116962,484.69365917187,523.80699136456],description:"JI Pelog with stretched 2/1 and extra tones between 2-3, 6-7. Wolf, XH 11, '87"},pelogic:{frequencies:[261.6255653006,268.93425429917,294.59920226397,322.71340889889,353.51061198674,363.38617257172,398.06486099125,436.0530078362,477.66644151787,523.2511306012],description:"Pelogic temperament, g=521.1, 5-limit"},pelogic2:{frequencies:[261.6255653006,252.56770712848,285.96465797334,276.06414495892,312.56802260838,301.74646235804,341.64630500046,386.82209166041,373.42974737602,422.80824892286,408.17001145418,462.1422075194,523.2511306012],description:"Pelogic temperament, g=677.0 in cycle of fifths order"},penta1:{frequencies:[261.6255653006,282.55561052465,294.32876096318,313.95067836072,331.11985608357,372.50983809402,376.74081403286,397.34382730029,423.83341578697,441.49314144476,470.92601754108,496.67978412536,523.2511306012],description:"Pentagonal scale 9/8 3/2 16/15 4/3 5/3"},penta2:{frequencies:[261.6255653006,267.07609791103,286.15296204753,305.22982618403,312.97980223949,333.84512238879,356.10146388137,363.36884069528,400.61414686654,436.04260883433,457.84473927605,476.92160341255,523.2511306012],description:"Pentagonal scale 7/4 4/3 15/8 32/21 6/5"},penta_opt:{frequencies:[261.6255653006,292.5084949701,327.03692214239,391.62201198054,436.95817401562,523.2511306012],description:"Optimally consonant major pentatonic, John deLaubenfels, 2001"},pentadekany:{frequencies:[261.6255653006,283.42769574232,299.7792935736,305.22982618403,327.03195662575,354.2846196779,359.73515228832,381.53728273004,389.71308164569,419.69101100305,425.14154361347,436.04260883433,457.84473927605,479.64686971777,495.99846754905,523.2511306012],description:"2)6 1.3.5.7.11.13 Pentadekany (1.3 tonic)"},pentadekany2:{frequencies:[261.6255653006,269.80136421624,294.32876096318,299.7792935736,305.22982618403,327.03195662575,343.38355445704,359.73515228832,381.53728273004,392.4383479509,419.69101100305,436.04260883433,457.84473927605,479.64686971777,490.54793493862,523.2511306012],description:"2)6 1.3.5.7.9.11 Pentadekany (1.3 tonic)"},pentadekany3:{frequencies:[261.6255653006,277.97716313189,278.79474302345,287.78812183066,291.4672313427,300.86940009569,305.77487944508,319.67373760167,359.73515228832,376.08675011961,405.51962621593,413.69542513157,430.86460285443,444.76346101102,506.89953276991,523.2511306012],description:"2)6 1.5.11.17.23.31 Pentadekany (1.5 tonic)"},pentatetra1:{frequencies:[261.6255653006,275.39533189537,290.69507255622,327.03195662575,348.83408706747,392.4383479509,413.09299784305,436.04260883433,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra2:{frequencies:[261.6255653006,275.39533189537,307.79478270659,327.03195662575,348.83408706747,392.4383479509,413.09299784305,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatetra3:{frequencies:[261.6255653006,290.69507255622,307.79478270659,327.03195662575,348.83408706747,392.4383479509,436.04260883433,461.69217405988,490.54793493862,523.2511306012],description:"Penta-tetrachord 20/19 x 19/18 x 18/17 x 17/16 = 5/4. 5/4 x 16/15 = 4/3"},pentatriad:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,367.91095120397,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"4:5:6 Pentatriadic scale"},pentatriad1:{frequencies:[261.6255653006,290.69507255622,294.32876096318,327.03195662575,348.83408706747,387.59343007496,392.4383479509,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:"3:5:9 Pentatriadic scale"},pepper:{frequencies:[261.6255653006,274.70684356563,290.69507255622,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,367.91095120397,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Keenan Pepper's 17-tone jazz tuning, TL 07-06-2000"},pepper2:{frequencies:[261.6255653006,281.81099471089,295.05751399041,308.92668738628,332.76158224462,348.40303271111,375.28368107222,392.9238840789,423.23948674937,443.13385158124,463.96335069158,499.75992392917,523.2511306012],description:`Keenan Pepper's "Noble Fifth" with chromatic/diatonic semitone = Phi (12)`},peprmint:{frequencies:[261.6255653006,270.64528749638,281.81099405977,291.52662269553,295.0575145017,305.22982618403,308.92668738628,319.57714845986,332.76158147578,344.23376699744,348.40303331485,360.41446869983,375.28368085545,388.22184514393,392.92388339801,406.47020562703,423.23948723831,437.83096109824,443.13385158124,458.41119713782,463.9633498876,479.95880678291,499.75992479518,516.98949333115,523.2511306012],description:"Peppermint 24: Wilson/Pepper apotome/limma=Phi, 2 chains spaced for pure 7:6"},"perkis-indian":{frequencies:[261.6255653006,269.10058145205,277.01530443593,285.40970760065,294.32876096318,303.82323712328,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.01393146398,369.99442271164,377.90359432309,388.70083987518,400.13321751856,412.18367363396,425.14154361347,438.99882991118,453.48431318771,469.12170329763,485.27322596079,503.87145909745,523.2511306012],description:"Indian 22 Perkis"},"perrett-tt":{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,348.83408706747,366.27579142084,381.53728273004,392.4383479509,412.06026534844,418.60090448096,436.04260883433,457.84473927605,470.92601754108,490.54793493862,515.07533168556,523.2511306012],description:"Perrett Tierce-Tone"},perrett:{frequencies:[261.6255653006,274.70684356563,279.06726965397,348.83408706747,392.4383479509,412.06026534844,418.60090448096,523.2511306012],description:"Perrett / Tartini / Pachymeres Enharmonic"},perrett_14:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,327.03195662575,343.38355445704,348.83408706747,366.27579142084,392.4383479509,412.06026534844,436.04260883433,457.84473927605,490.54793493862,515.07533168556,523.2511306012],description:"Perrett's 14-tone system (subscale of tierce-tone)"},perrett_chrom:{frequencies:[261.6255653006,274.70684356563,294.32876096318,348.83408706747,392.4383479509,412.06026534844,441.49314144476,523.2511306012],description:"Perrett's Chromatic"},perry:{frequencies:[261.6255653006,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,490.54793493862,523.2511306012],description:"Robin Perry, Tuning List 22-9-'98"},perry2:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,415.27867508032,436.04260883433,457.84473927605,498.33441009638,523.2511306012],description:"Robin Perry, 7-limit scale, TL 22-10-2006"},perry3:{frequencies:[261.6255653006,277.97716313189,294.32876096318,307.79478270659,327.03195662575,348.83408706747,369.35373924791,370.63621750918,392.4383479509,418.60090448096,444.76346101102,465.11211608996,492.47165233054,523.2511306012],description:"Robin Perry, symmetrical 3,5,17 scale, TL 22-10-2006"},"persian-far":{frequencies:[261.6255653006,275.58617649731,282.84340331238,294.51413096332,310.22971009486,318.39923223688,331.53706992441,349.22823143301,362.58942698662,376.46181130035,391.99543598175,412.91271853531,423.78627283082,441.27260666252,464.81937009253,477.05982293263,496.7443381147,523.2511306012],description:"Hormoz Farhat, average of observed Persian tar and sehtar tunings (1966)"},"persian-vaz":{frequencies:[261.6255653006,277.18263097687,285.30470202322,293.66476791741,311.12698372208,320.24370022528,329.62755691287,349.22823143301,359.46139971304,380.8360868427,391.99543598175,415.30469757995,427.47405410759,440,466.16376151809,479.82340237272,493.88330125613,523.2511306012],description:"Vaziri's Persian tuning, using quartertones"},persian:{frequencies:[261.6255653006,275.62199471997,282.55561052465,294.32876096318,310.07474405997,317.87506184023,331.11985608357,348.83408706747,363.36884069528,376.74081403286,392.4383479509,413.43299207996,423.83341578697,441.49314144476,465.11211608996,476.81259276034,496.67978412536,523.2511306012],description:"Persian Tar Scale, from Dariush Anooshfar, Internet Tuning List 2/10/94"},persian2:{frequencies:[261.6255653006,275.62199471997,288.32205155576,294.32876096318,310.07474405997,321.08592105074,331.11985608357,348.83408706747,367.49599295996,384.42940207435,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,489.99465727995,512.57253609913,523.2511306012],description:"Traditional Persian scale, from Mark Rankin"},phi1_13:{frequencies:[261.6255653006,272.27874348295,293.41755524936,305.36527715608,329.07281683115,342.47239171077,356.41758627629,384.088434771,399.72820043646,416.00480451705,448.3020273708,466.55651779723,502.7784067407,523.2511306012],description:"Pythagorean scale with (Phi + 1) / 2 as fifth"},phi_10:{frequencies:[261.6255653006,277.06593756944,293.41755524936,323.38703872151,342.47239171077,362.68389667063,399.72820043646,423.31898451752,448.3020273708,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_12:{frequencies:[261.6255653006,280.653851324,301.06608340242,314.41721066027,337.28508524374,352.24238645938,377.86132347501,405.34355110824,423.31898451752,454.10739278061,474.24531572837,508.73764640933,531.29821178855],description:"Non-Octave Pythagorean scale with Phi as fourth. Jacky Ligon TL 12-04-2001"},phi_13:{frequencies:[261.6255653006,277.06593756944,293.41755524936,305.36527715608,323.38703872151,342.47239171077,362.68389667063,377.45230514615,399.72820043646,423.31898451752,448.3020273708,466.55651779723,494.09131284284,523.2511306012],description:"Pythagorean scale with Phi as fifth"},phi_13a:{frequencies:[261.6255653006,280.653851324,293.09977429907,314.41721066027,328.36040925687,352.24238645938,377.86132347501,394.61802538749,423.31898451752,442.09155952525,474.24531572837,508.73764640933,531.29821178855,569.94005600595],description:"Non-Octave Pythagorean scale with Phi as fifth, Jacky Ligon TL 12-04-2001"},phi_13b:{frequencies:[261.6255653006,277.56939878091,287.90530191745,305.45065986668,316.82478268872,336.13253486432,356.61692887617,369.89633953852,392.4383479509,407.05164722964,431.8579526603,458.17598957099,475.23717379553,504.19880204444],description:"Non-Octave Pythagorean scale with 12 3/2s, Jacky Ligon, TL 12-04-2001"},phi_17:{frequencies:[261.6255653006,276.86436108535,292.99059544936,310.05629713556,328.11582814217,347.22745468775,367.4522682176,388.8548834608,411.50435256812,435.47307590797,460.83762934409,487.67984759381,516.08523529366,546.14543793146,577.9565447239,611.62018657326,647.24497389216,684.94478342154],description:"Phi + 1 equal division by 17, Brouncker (1653)"},phi_7b:{frequencies:[261.6255653006,277.06593756944,299.7954575021,323.38703872151,342.47239171077,369.42210382256,399.72820043646,423.31898451752],description:"Heinz Bohlen's Pythagorean scale with Phi as fifth (1999)"},phi_7be:{frequencies:[261.6255653006,277.18263097687,299.37379946195,323.3415889232,342.56848033562,369.99442271164,399.61607881612,423.37848741825],description:"36-tET approximation of phi_7b"},phi_8:{frequencies:[261.6255653006,280.010356995,292.01318753119,312.53354015396,325.93049860793,348.83408706747,373.34714284662,389.35091690288,416.71138708025],description:"Non-Octave Pythagorean scale with 4/3s, Jacky Ligon, TL 12-04-2001"},phi_8a:{frequencies:[261.6255653006,275.77662731691,284.90271245142,300.31281179658,310.2506767011,327.03195662575,344.72084112096,356.12824371673,375.39107678967],description:"Non-Octave Pythagorean scale with 5/4s, Jacky Ligon, TL 12-04-2001"},phillips_19:{frequencies:[261.6255653006,274.63272075836,286.12988535196,293.66476791741,305.42895910556,326.59518553839,329.62755691287,342.83241505062,349.22823143301,366.5907009274,384.81637482457,391.99543598175,407.69874723177,428.71043212875,440,457.62637091093,489.33987776603,493.88330125613,513.66823365307,523.2511306012],description:"Pauline Phillips, organ manual scale, TL 7-10-2002"},phillips_19a:{frequencies:[261.6255653006,274.58143914872,285.65749968142,293.61100773131,305.45468261618,326.62388782443,329.50688232588,342.79852229325,349.26020182051,366.55580177366,381.34192228364,391.95955371998,407.7704102616,427.96347506501,439.87918162894,457.62301915088,489.33808574423,493.65730140218,509.07699553894,523.2511306012],description:"Adaptation by Gene Ward Smith with more consonant chords, TL 25-10-2002"},phillips_22:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,343.38355445704,349.22797321314,367.91095120397,392.4383479509,407.76797091773,408.78994578219,416.96574469783,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:"All-key 19-limit JI scale (2002), TL 21-10-2002"},phillips_ji:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.5744765615,306.59245933664,327.03195662575,331.11985608357,349.22797321314,367.91095120397,386.30649876417,392.4383479509,407.76797091773,408.78994578219,429.2294430713,441.49314144476,457.84473927605,459.88868900496,490.54793493862,496.67978412536,515.07533168556,523.2511306012],description:'Pauline Phillips, JI 0 #/b "C" scale (2002), TL 8-10-2002'},phryg_chromcon2:{frequencies:[261.6255653006,283.42769574232,294.32876096318,305.22982618403,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Harmonic Conjunct Chromatic Phrygian"},phryg_chromconi:{frequencies:[261.6255653006,283.42769574232,348.83408706747,370.63621750918,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Conjunct Chromatic Phrygian"},phryg_chrominv:{frequencies:[261.6255653006,272.52663052146,283.42769574232,348.83408706747,392.4383479509,414.24047839262,436.04260883433,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian"},phryg_chromt:{frequencies:[261.6255653006,277.01530443593,294.32876096318,313.95067836072,324.77656382143,336.37572681506,362.25078272391,392.4383479509,409.50088481833,418.60090448096,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,627.90135672144,649.55312764287,672.75145363011,724.50156544782,784.8766959018,819.00176963666,837.20180896192,856.22912280196,941.85203508216,1046.5022612024],description:"Phrygian Chromatic Tonos"},phryg_diat:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,392.4383479509,448.50096908674,483.00104363188,523.2511306012],description:"Schlesinger's Phrygian Harmonia, a subharmonic series through 13 from 24"},phryg_diatcon:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,369.35373924791,448.50096908674,483.00104363188,523.2511306012],description:"A Phrygian Diatonic with its own trite synemmenon replacing paramese"},phryg_diatinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Conjunct Phrygian Harmonia with 17, the local Trite Synemmenon"},phryg_diatsinv:{frequencies:[261.6255653006,283.42769574232,305.22982618403,348.83408706747,370.63621750918,392.4383479509,436.04260883433,479.64686971777,523.2511306012],description:"Inverted Schlesinger's Phrygian Harmonia, a harmonic series from 12 from 24"},phryg_enh:{frequencies:[261.6255653006,267.19206668997,273.00058987889,348.83408706747,392.4383479509,405.0976494977,418.60090448096,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the enharmonic genus"},phryg_enhcon:{frequencies:[261.6255653006,283.42769574232,288.87822835275,294.32876096318,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Harmonic Conjunct Enharmonic Phrygian"},phryg_enhinv:{frequencies:[261.6255653006,327.03195662575,337.93302184661,348.83408706747,392.4383479509,501.44900015948,512.35006538034,523.2511306012],description:"Inverted Schlesinger's Enharmonic Phrygian Harmonia"},phryg_enhinv2:{frequencies:[261.6255653006,267.07609791103,272.52663052146,348.83408706747,392.4383479509,403.33941317176,414.24047839262,523.2511306012],description:"Inverted harmonic form of Schlesinger's Enharmonic Phrygian"},phryg_penta:{frequencies:[261.6255653006,270.64713651786,285.40970760065,348.83408706747,392.4383479509,413.09299784305,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the pentachromatic genus"},phryg_pis:{frequencies:[261.6255653006,294.32876096318,336.37572681506,362.25078272391,392.4383479509,428.11456140098,470.92601754108,523.2511306012,554.03060887186,588.65752192635,672.75145363011,724.50156544782,784.8766959018,856.22912280196,941.85203508216,1046.5022612024],description:"The Diatonic Perfect Immutable System in the Phrygian Tonos"},phryg_tri1:{frequencies:[261.6255653006,273.00058987889,285.40970760065,348.83408706747,392.4383479509,418.60090448096,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the chromatic genus"},phryg_tri1inv:{frequencies:[261.6255653006,305.22982618403,327.03195662575,348.83408706747,392.4383479509,479.64686971777,501.44900015948,523.2511306012],description:"Inverted Schlesinger's Chromatic Phrygian Harmonia"},phryg_tri2:{frequencies:[261.6255653006,269.10058145205,285.40970760065,348.83408706747,392.4383479509,409.50088481833,448.50096908674,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the second trichromatic genus"},phryg_tri3:{frequencies:[261.6255653006,269.10058145205,277.01530443593,348.83408706747,392.4383479509,409.50088481833,428.11456140098,523.2511306012],description:"Schlesinger's Phrygian Harmonia in the first trichromatic genus"},phrygian:{frequencies:[261.6255653006,290.69507255622,313.95067836072,327.03195662575,348.83408706747,353.19451315581,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,523.2511306012],description:"Old Phrygian ??"},phrygian_diat:{frequencies:[261.6255653006,277.01530443593,294.32876096318,336.37572681506,348.83408706747,362.25078272391,376.74081403286,392.4383479509,428.11456140098,448.50096908674,470.92601754108,495.71159741166,523.2511306012,554.03060887186,588.65752192635,672.75145363011,697.66817413493,724.50156544782,753.48162806573,784.8766959018,856.22912280196,897.00193817349,941.85203508216,991.42319482333,1046.5022612024],description:"Phrygian Diatonic Tonos"},phrygian_enh:{frequencies:[261.6255653006,277.01530443593,294.32876096318,303.82323712328,308.80394592858,313.95067836072,348.83408706747,392.4383479509,400.78810003496,405.0976494977,409.50088481833,459.44001711325,523.2511306012],description:"Phrygian Enharmonic Tonos"},phrygian_harm:{frequencies:[261.6255653006,273.00058987889,285.40970760065,299.00064605783,313.95067836072,330.47439827444,348.83408706747,369.35373924791,392.4383479509,418.60090448096,448.50096908674,483.00104363188,523.2511306012],description:"Phrygian Harmonia-Aliquot 24 (flute tuning)"},piano:{frequencies:[261.6255653006,275.93321340298,279.06726965397,294.32876096318,305.22982618403,313.95067836072,327.03195662575,348.83408706747,367.91095120397,372.08969287196,392.4383479509,406.97310157871,418.60090448096,436.04260883433,441.49314144476,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"Enhanced Piano Total Gamut, see 1/1 vol. 8/2 January 1994"},piano7:{frequencies:[261.6255653006,275.93321340298,294.32876096318,305.22982618403,327.03195662575,348.83408706747,367.91095120397,392.4383479509,406.97310157871,441.49314144476,457.84473927605,490.54793493862,523.2511306012],description:"Enhanced piano 7-limit"},pipedum_10:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,348.83408706747,372.08969287196,396.89567239676,431.14564594215,459.88868900496,490.54793493862,523.2511306012],description:"2048/2025 and 34171875/33554432 are homophonic intervals"},pipedum_10a:{frequencies:[261.6255653006,279.06726965397,294.32876096318,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025 and 25/24, Manuel Op de Coul, 2001"},pipedum_10b:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,348.83408706747,367.91095120397,392.4383479509,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"225/224, 64/63 and 25/24 are homophonic intervals"},pipedum_10c:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,373.75080757229,392.4383479509,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 49/48 are homophonic intervals"},pipedum_10d:{frequencies:[261.6255653006,279.06726965397,299.00064605783,318.93402246168,343.38355445704,372.08969287196,392.4383479509,425.24536328225,448.50096908674,488.36772189445,523.2511306012],description:"1029/1024, 2048/2025 and 64/63 are homophonic intervals"},pipedum_10e:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,367.91095120397,406.97310157871,429.2294430713,465.11211608996,490.54793493862,523.2511306012],description:"2048/2025, 64/63 and 49/48 are homophonic intervals"},pipedum_10f:{frequencies:[261.6255653006,280.31310567921,294.32876096318,327.03195662575,348.83408706747,373.75080757229,392.4383479509,420.46965851882,465.11211608996,490.54793493862,523.2511306012],description:"225/224, 64/63 and 28/27 are homophonic intervals"},pipedum_10g:{frequencies:[261.6255653006,280.31310567921,299.00064605783,325.57848126297,348.83408706747,372.08969287196,398.6675280771,425.24536328225,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 2048/2025 are homophonic intervals"},pipedum_10h:{frequencies:[261.6255653006,286.15296204753,305.22982618403,327.03195662575,348.83408706747,373.75080757229,400.61414686654,429.2294430713,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 1029/1024 and 64/63 are homophonic intervals"},pipedum_10i:{frequencies:[261.6255653006,279.06726965397,294.32876096318,321.92208230347,343.38355445704,367.91095120397,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"225/224, 2048/2025 and 49/48 are homophonic intervals"},pipedum_10j:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,348.83408706747,366.27579142084,392.4383479509,418.60090448096,457.84473927605,488.36772189445,523.2511306012],description:"25/24, 28/27 and 49/48, Gene Ward Smith, 2002"},pipedum_10k:{frequencies:[261.6255653006,280.31310567921,299.00064605783,320.49131749323,343.38355445704,367.91095120397,394.1903048614,420.46965851882,455.80987376816,488.36772189445,523.2511306012],description:"2048/2025, 225/224 and 2401/2400"},pipedum_11:{frequencies:[261.6255653006,272.52663052146,282.55561052465,313.95067836072,327.03195662575,363.36884069528,376.74081403286,392.4383479509,436.04260883433,454.2110508691,470.92601754108,523.2511306012],description:"16/15 and 15625/15552 are homophonic intervals"},pipedum_11a:{frequencies:[261.6255653006,269.10058145205,305.22982618403,313.95067836072,322.92069774245,366.27579142084,376.74081403286,381.53728273004,436.04260883433,448.50096908674,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 10/9, Gene Ward Smith, 2002"},pipedum_12:{frequencies:[261.6255653006,275.93321340298,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12a:{frequencies:[261.6255653006,279.06726965397,297.67175429757,306.59245933664,327.03195662575,348.83408706747,372.08969287196,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"81/80 and 2048/2025 are homophonic intervals"},pipedum_12b:{frequencies:[261.6255653006,274.70684356563,299.00064605783,313.95067836072,320.49131749323,348.83408706747,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,488.36772189445,523.2511306012],description:"64/63, 50/49 comma and 36/35 chroma"},pipedum_12c:{frequencies:[261.6255653006,280.31310567921,294.32876096318,315.35224388912,327.03195662575,348.83408706747,367.91095120397,392.4383479509,420.46965851882,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"225/224, 64/63 and 36/35 are homophonic intervals"},pipedum_12d:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,418.60090448096,448.50096908674,457.84473927605,490.54793493862,523.2511306012],description:"50/49, 128/125 and 225/224 are homophonic intervals"},pipedum_12e:{frequencies:[261.6255653006,280.31310567921,293.02063313667,313.95067836072,327.03195662575,350.39138209902,373.75080757229,392.4383479509,418.60090448096,439.53094970501,467.18850946536,500.55911728431,523.2511306012],description:"50/49, 225/224 and 3136/3125 are homophonic intervals"},pipedum_12f:{frequencies:[261.6255653006,273.74326726486,293.02063313667,313.95067836072,327.03195662575,350.39138209902,366.27579142084,392.4383479509,408.78994578219,437.98922762377,468.83301301868,490.54793493862,523.2511306012],description:"128/125, 3136/3125 and 703125/702464 are homophonic intervals"},pipedum_12g:{frequencies:[261.6255653006,279.06726965397,286.15296204753,306.59245933664,327.03195662575,348.83408706747,366.27579142084,390.69417751556,408.78994578219,437.98922762377,457.84473927605,488.36772189445,523.2511306012],description:"50/49, 225/224 and 28672/28125 are homophonic intervals"},pipedum_12h:{frequencies:[261.6255653006,275.93321340298,291.02331101095,310.42486507835,330.74639366397,348.83408706747,367.91095120397,392.4383479509,413.89982010446,436.53496651643,465.11211608996,496.11959049595,523.2511306012],description:"2048/2025 and 67108864/66430125, Gene Ward Smith, 2004"},pipedum_12i:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,378.42269266694,392.4383479509,406.97310157871,441.49314144476,465.11211608996,504.56359022259,523.2511306012],description:"64/63 and 6561/6272, Gene Ward Smith, 2004"},pipedum_12j:{frequencies:[261.6255653006,283.8170195002,285.83021674664,310.07474405997,336.37572681506,348.83408706747,378.42269266694,392.4383479509,413.43299207996,448.50096908674,465.11211608996,504.56359022259,523.2511306012],description:"6561/6272 and 59049/57344"},pipedum_12k:{frequencies:[261.6255653006,271.31540105247,294.32876096318,305.22982618403,336.37572681506,348.83408706747,356.10146388137,392.4383479509,406.97310157871,448.50096908674,457.84473927605,474.80195184183,523.2511306012],description:"64/63 and 729/686, Gene Ward Smith, 2004"},pipedum_12l:{frequencies:[261.6255653006,276.16031892841,294.32876096318,310.68035879446,331.39238271409,348.83408706747,368.21375857121,392.4383479509,414.24047839262,441.49314144476,465.11211608996,497.08857407114,523.2511306012],description:"81/80, 361/360 and 513/512, Gene Ward Smith"},pipedum_13:{frequencies:[261.6255653006,276.76092858245,287.78812183066,309.14739649778,327.03195662575,345.95116072807,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051 are homophonic intervals. Op de Coul, 2001"},pipedum_13a:{frequencies:[261.6255653006,266.96486255163,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"15/14, 3136/3125, 2401/2400, Gene Ward Smith, 2002"},pipedum_13b:{frequencies:[261.6255653006,267.90457886781,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,510.98743222773,523.2511306012],description:"15/14, 3136/3125, 6144/6125, Gene Ward Smith, 2002"},pipedum_13bp:{frequencies:[261.6255653006,282.55561052465,305.16005936662,336.45263027341,363.36884069528,392.4383479509,436.04260883433,470.92601754108,508.60009894437,545.05326104292,605.61473449213,654.0639132515,706.38902631162,784.8766959018],description:"78732/78125 and 250/243, twelfth based, Manuel Op de Coul, 2003"},pipedum_13bp2:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,376.74081403286,392.4383479509,436.04260883433,470.92601754108,523.2511306012,565.1112210493,627.90135672144,678.13346525916,726.73768139056,784.8766959018],description:"250/243 and 648/625, twelfth based, Manuel Op de Coul, 2003"},pipedum_13c:{frequencies:[261.6255653006,267.07609791103,293.02063313667,299.00064605783,327.03195662575,334.88072358477,366.27579142084,373.75080757229,408.78994578219,418.60090448096,457.84473927605,467.18850946536,512.57253609913,523.2511306012],description:"15/14, 2401/2400, 6144/6125, Gene Ward Smith, 2002"},pipedum_13d:{frequencies:[261.6255653006,281.04308772525,287.78812183066,309.14739649778,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"125/121 and 33275/32768, Joe Monzo, 2003"},pipedum_13e:{frequencies:[261.6255653006,276.76092858245,287.78812183066,304.4370214407,327.03195662575,334.88072358477,359.73515228832,380.54627680087,408.78994578219,418.60090448096,449.66894036041,475.68284600109,494.63583439645,523.2511306012],description:"33275/32768 and 163840/161051, Manuel Op de Coul, 2004"},pipedum_14:{frequencies:[261.6255653006,274.70684356563,284.76252005507,305.22982618403,320.49131749323,336.37572681506,348.83408706747,373.90653707544,392.4383479509,406.97310157871,427.14378008261,448.50096908674,480.73697623985,498.33441009638,523.2511306012],description:"81/80, 49/48 and 2401/2400, Paul Erlich, TL 17-1-2001"},pipedum_14a:{frequencies:[261.6255653006,274.70684356563,284.8811711051,305.22982618403,320.35783506196,336.37572681506,348.83408706747,366.27579142084,392.4383479509,406.97310157871,427.32175665765,448.50096908674,480.53675259294,498.33441009638,523.2511306012],description:"81/80, 50/49 and 2401/2400, Paul Erlich, 2001"},pipedum_14b:{frequencies:[261.6255653006,274.70684356563,294.32876096318,305.22982618403,313.95067836072,339.14425131559,353.19451315581,366.27579142084,392.4383479509,406.97310157871,418.60090448096,457.84473927605,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 81/80 comma and 25/24 chroma"},pipedum_14c:{frequencies:[261.6255653006,280.31310567921,282.55561052465,305.22982618403,327.03195662575,336.37572681506,363.36884069528,366.27579142084,392.4383479509,403.65087217807,436.04260883433,467.18850946536,470.92601754108,508.71637697339,523.2511306012],description:"245/243, 50/49 comma and 25/24 chroma"},pipedum_15:{frequencies:[261.6255653006,272.52663052146,290.69507255622,301.39265122629,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,454.2110508691,470.92601754108,502.32108537715,523.2511306012],description:"126/125, 128/125 and 875/864, 5-limit, Paul Erlich, 2001"},pipedum_15a:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,381.53728273004,392.4383479509,418.60090448096,436.04260883433,457.84473927605,488.36772189445,502.32108537715,523.2511306012],description:"Septimal version of pipedum_15, Manuel Op de Coul, 2001"},pipedum_15b:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,311.45900631024,327.03195662575,343.38355445704,357.69120255941,382.72082695402,398.6675280771,418.60090448096,439.53094970501,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"126/125, 128/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15c:{frequencies:[261.6255653006,274.70684356563,284.76252005507,299.00064605783,313.95067836072,327.03195662575,341.71502406609,358.80077526939,381.53728273004,400.61414686654,418.60090448096,436.04260883433,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"49/48, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15d:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,360.55273217989,379.68336007343,398.6675280771,418.60090448096,436.04260883433,457.84473927605,478.40103369253,498.33441009638,523.2511306012],description:"64/63, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_15e:{frequencies:[261.6255653006,273.37201925287,286.15296204753,299.00064605783,313.95067836072,332.22294006425,343.38355445704,358.80077526939,381.53728273004,398.6675280771,412.06026534844,436.04260883433,457.84473927605,478.40103369253,500.76768358318,523.2511306012],description:"64/63, 875/864 and 1029/1024, Paul Erlich, 2001"},pipedum_15f:{frequencies:[261.6255653006,274.70684356563,290.69507255622,305.22982618403,313.95067836072,327.03195662575,348.83408706747,366.27579142084,387.59343007496,392.4383479509,418.60090448096,436.04260883433,465.11211608996,488.36772189445,490.54793493862,523.2511306012],description:"126/125, 64/63 comma and 28/27 chroma"},pipedum_15g:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,348.83408706747,363.36884069528,376.74081403286,392.4383479509,418.60090448096,436.04260883433,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"128/125 and 250/243"},pipedum_16:{frequencies:[261.6255653006,274.70684356563,286.15296204753,299.00064605783,313.95067836072,327.03195662575,343.38355445704,355.95315006884,373.75080757229,384.58958099188,400.61414686654,418.60090448096,439.53094970501,457.84473927605,480.73697623985,498.33441009638,523.2511306012],description:"50/49, 126/125 and 1029/1024, Paul Erlich, 2001"},pipedum_16a:{frequencies:[261.6255653006,272.52663052146,283.88190679319,301.39265122629,313.95067836072,327.03195662575,340.65828815182,354.85238349148,363.36884069528,385.78259356965,401.85686830172,418.60090448096,436.04260883433,454.2110508691,482.22824196207,502.32108537715,523.2511306012],description:"3125/3072 and 1990656/1953125, OdC 2004"},pipedum_17:{frequencies:[261.6255653006,269.10058145205,286.15296204753,294.32876096318,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,465.11211608996,478.40103369253,508.71637697339,523.2511306012],description:"245/243, 64/63 and 525/512, Paul Erlich, 2001"},pipedum_17a:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,305.22982618403,318.93402246168,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,429.2294430713,448.50096908674,461.31528248922,478.40103369253,504.56359022259,523.2511306012],description:"245/243, 525/512 and 1728/1715, Paul Erlich, 2001"},pipedum_17b:{frequencies:[261.6255653006,264.89588486686,286.15296204753,294.32876096318,305.22982618403,327.03195662575,339.14425131559,343.38355445704,367.91095120397,381.53728273004,392.4383479509,406.97310157871,436.04260883433,441.49314144476,457.84473927605,490.54793493862,508.71637697339,523.2511306012],description:"245/243, 64/63 comma and 25/24 chroma"},pipedum_17c:{frequencies:[261.6255653006,273.6806973752,285.83021674664,299.00064605783,310.07474405997,321.55899383997,336.37572681506,348.83408706747,364.90759650026,378.42269266694,392.4383479509,413.43299207996,428.74532511996,448.50096908674,465.11211608996,486.54346200035,504.56359022259,523.2511306012],description:"1605632/1594323 and 177147/175616, Manuel Op de Coul, 2002"},pipedum_17d:{frequencies:[261.6255653006,274.08392555301,284.23518205497,299.00064605783,308.34441624714,319.76457981184,336.37572681506,348.83408706747,365.44523407068,373.05867644715,392.4383479509,411.12588832951,426.35277308246,448.50096908674,465.11211608996,479.64686971777,504.56359022259,523.2511306012],description:"243/242, 99/98 and 64/63, Manuel Op de Coul, 2002"},pipedum_17e:{frequencies:[261.6255653006,271.31540105247,286.15296204753,296.75121990114,310.07474405997,321.92208230347,336.37572681506,348.83408706747,362.16234259141,378.42269266694,395.66829320152,413.43299207996,429.2294430713,445.12682985172,465.11211608996,482.88312345521,504.56359022259,523.2511306012],description:"245/243, 1728/1715 and 32805/32768, Manuel Op de Coul, 2003"},pipedum_17f:{frequencies:[261.6255653006,269.80136421624,285.40970760065,294.32876096318,310.07474405997,319.76457981184,331.11985608357,348.83408706747,359.73515228832,380.54627680087,392.4383479509,413.43299207996,428.11456140098,441.49314144476,465.11211608996,479.64686971777,507.3950357345,523.2511306012],description:"243/242 and 8192/8019, Manuel Op de Coul"},pipedum_17g:{frequencies:[261.6255653006,274.08392555301,285.40970760065,299.00064605783,305.22982618403,319.76457981184,336.37572681506,348.83408706747,359.73515228832,380.54627680087,392.4383479509,406.97310157871,428.11456140098,448.50096908674,457.84473927605,479.64686971777,499.46698830115,523.2511306012],description:"243/242, 896/891 and 99/98, Manuel Op de Coul"},pipedum_18:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,340.65828815182,350.39138209902,379.84156147346,390.69417751556,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 128/125, Paul Erlich, 2001"},pipedum_18a:{frequencies:[261.6255653006,269.10058145205,280.31310567921,293.02063313667,305.22982618403,313.95067836072,327.03195662575,341.85740532612,356.10146388137,366.27579142084,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"875/864, 686/675 and 50/49, Paul Erlich, 2001"},pipedum_18b:{frequencies:[261.6255653006,272.52663052146,280.31310567921,296.75121990114,305.22982618403,317.94773560837,327.03195662575,346.20975655133,356.10146388137,373.75080757229,384.42940207435,400.44729382745,418.60090448096,436.04260883433,448.50096908674,467.18850946536,488.36772189445,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 686/675, Paul Erlich, 2001"},pipedum_19:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,301.39265122629,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,401.85686830172,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"81/80 and 15625/15552 are homophonic intervals, inverse of Mandelbaum"},pipedum_19a:{frequencies:[261.6255653006,271.25338610366,282.55561052465,294.32876096318,301.39265122629,313.95067836072,327.03195662575,339.06673262958,353.19451315581,361.67118147155,376.74081403286,392.4383479509,408.78994578219,416.64520105522,434.00541776586,452.08897683944,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"3125/3072 and 15625/15552 are homophonic intervals"},pipedum_19b:{frequencies:[261.6255653006,272.52663052146,282.55561052465,290.69507255622,302.80736724606,313.95067836072,327.03195662575,339.06673262958,348.83408706747,363.36884069528,376.74081403286,392.4383479509,403.74315632809,418.60090448096,436.04260883433,452.08897683944,470.92601754108,484.4917875937,502.32108537715,523.2511306012],description:"15625/15552 and 78732/78125, Paul Erlich, TL 19-2-2001"},pipedum_19c:{frequencies:[261.6255653006,269.10058145205,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19d:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,504.56359022259,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19e:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19f:{frequencies:[261.6255653006,269.10058145205,279.06726965397,287.04062021552,305.22982618403,315.35224388912,327.03195662575,336.37572681506,348.83408706747,358.80077526939,381.53728273004,392.4383479509,406.97310157871,418.60090448096,434.10464168396,448.50096908674,476.92160341255,490.54793493862,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19g:{frequencies:[261.6255653006,269.10058145205,280.31310567921,288.32205155576,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,360.4025644447,379.84156147346,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,474.80195184183,488.36772189445,508.71637697339,523.2511306012],description:"Periodicity block by Paul Erlich, 2001"},pipedum_19h:{frequencies:[261.6255653006,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,343.38355445704,353.19451315581,366.27579142084,381.53728273004,392.4383479509,412.06026534844,415.27867508032,436.04260883433,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:"126/125, 81/80 comma and 49/48 chroma"},pipedum_19i:{frequencies:[261.6255653006,275.93321340298,286.15296204753,294.32876096318,305.22982618403,321.92208230347,327.03195662575,343.38355445704,348.83408706747,367.91095120397,381.53728273004,392.4383479509,406.97310157871,429.2294430713,436.04260883433,457.84473927605,465.11211608996,490.54793493862,515.07533168556,523.2511306012],description:"225/224, 81/80 comma and 49/48 chroma"},pipedum_19j:{frequencies:[261.6255653006,266.96486255163,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.70607818954,358.95027559242,366.27579142084,373.75080757229,381.37837507376,410.22888639134,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.78610798918,523.2511306012],description:"21/20, 3136/3125 and 2401/2400, Gene Ward Smith, 2002"},pipedum_19k:{frequencies:[261.6255653006,267.90457886781,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,334.88072358477,357.69120255941,366.27579142084,373.75080757229,382.72082695402,408.78994578219,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,510.98743222773,523.2511306012],description:"21/20, 3136/3125 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19l:{frequencies:[261.6255653006,267.07609791103,286.15296204753,293.02063313667,299.00064605783,320.49131749323,327.03195662575,333.84512238879,358.80077526939,366.27579142084,373.75080757229,381.53728273004,410.05802887931,418.60090448096,427.14378008261,457.84473927605,467.18850946536,478.40103369253,512.57253609913,523.2511306012],description:"21/20, 2401/2400 and 6144/6125, Gene Ward Smith, 2002"},pipedum_19m:{frequencies:[261.6255653006,269.10058145205,293.02063313667,299.00064605783,305.22982618403,313.95067836072,317.94773560837,348.83408706747,358.80077526939,366.27579142084,373.75080757229,406.97310157871,418.60090448096,430.56093032327,436.04260883433,448.50096908674,488.36772189445,502.32108537715,508.71637697339,523.2511306012],description:"126/125, 1728/1715 and 16/15, Gene Ward Smith, 2002"},pipedum_19n:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,366.27579142084,373.75080757229,381.53728273004,392.4383479509,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,512.78610798918,523.2511306012],description:"126/125, 2401/2400 and 16/15, Gene Ward Smith, 2002"},pipedum_19o:{frequencies:[261.6255653006,272.52663052146,280.31310567921,290.69507255622,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,363.36884069528,376.74081403286,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,470.92601754108,488.36772189445,502.32108537715,523.2511306012],description:"225/224, 3136/3125 and 4375/4374, OdC 2000"},pipedum_21:{frequencies:[261.6255653006,267.07609791103,280.31310567921,284.8811711051,299.00064605783,305.22982618403,320.35783506196,327.03195662575,341.85740532612,348.83408706747,366.27579142084,373.75080757229,392.4383479509,400.44729382745,418.60090448096,427.32175665765,448.50096908674,457.84473927605,480.53675259294,488.36772189445,512.57253609913,523.2511306012],description:"36/35, 225/224 and 2401/2400, P. Erlich, 2001. Just PB version of miracle1"},pipedum_21a:{frequencies:[261.6255653006,265.7783520514,286.15296204753,290.69507255622,299.00064605783,305.22982618403,327.03195662575,332.22294006425,343.38355445704,348.83408706747,373.75080757229,381.53728273004,392.4383479509,398.6675280771,429.2294430713,436.04260883433,448.50096908674,457.84473927605,490.54793493862,498.33441009638,515.07533168556,523.2511306012],description:"1029/1024, 81/80 comma and 25/24 chroma"},pipedum_21b:{frequencies:[261.6255653006,267.07609791103,279.06726965397,284.8811711051,299.00064605783,305.22982618403,318.93402246168,325.57848126297,343.38355445704,348.83408706747,366.27579142084,372.08969287196,392.4383479509,398.6675280771,418.60090448096,427.32175665765,448.50096908674,457.84473927605,478.40103369253,488.36772189445,496.11959049595,523.2511306012],description:"36/35, 225/224 and 1029/1024, Gene Ward Smith, 2002"},pipedum_21c:{frequencies:[261.6255653006,269.46602871384,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,344.91651675372,348.83408706747,367.91095120397,372.08969287196,392.4383479509,396.89567239676,418.60090448096,431.14564594215,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"First 128/125 and ampersand comma Fokker block"},pipedum_22:{frequencies:[261.6255653006,267.90457886781,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,327.03195662575,334.88072358477,348.83408706747,357.20610515709,365.77905168086,383.2405741708,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,510.98743222773,523.2511306012],description:"3125/3072 and 2109375/2097152 are homophonic intervals"},pipedum_22a:{frequencies:[261.6255653006,267.90457886781,279.06726965397,287.4304306281,297.67175429757,306.59245933664,317.51653791741,327.03195662575,334.88072358477,348.83408706747,357.20610515709,372.08969287196,381.01984550089,392.4383479509,408.78994578219,418.60090448096,436.04260883433,446.50763144636,459.88868900496,476.27480687611,490.54793493862,508.02646066786,523.2511306012],description:"2048/2025 and 2109375/2097152 are homophonic intervals"},pipedum_22b:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,339.14425131559,348.83408706747,357.69120255941,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,441.49314144476,457.84473927605,470.92601754108,490.54793493862,508.71637697339,523.2511306012],description:'2025/2048, 245/243 and 64/63. P. Erlich "7-limit Indian", TL 19-12-2000'},pipedum_22b2:{frequencies:[261.6255653006,271.31540105247,279.06726965397,286.15296204753,294.32876096318,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,367.91095120397,381.53728273004,392.4383479509,406.97310157871,418.60090448096,429.2294430713,448.50096908674,465.11211608996,478.40103369253,490.54793493862,504.56359022259,523.2511306012],description:"Version of pipedum_22b with other shape, Paul Erlich"},pipedum_22c:{frequencies:[261.6255653006,267.07609791103,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,512.57253609913,523.2511306012],description:"1728/1715, 64/63 and 50/49, Paul Erlich, 2001"},pipedum_22d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 875/864 and 64/63, Paul Erlich, 2001"},pipedum_22e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,290.69507255622,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,384.42940207435,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,470.92601754108,498.33441009638,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 50/49, Paul Erlich, 2001"},pipedum_22f:{frequencies:[261.6255653006,269.10058145205,276.78916949353,290.69507255622,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,470.92601754108,494.58536650191,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 875/864, Paul Erlich, 2001"},pipedum_22g:{frequencies:[261.6255653006,267.07609791103,279.06726965397,286.15296204753,299.00064605783,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,457.84473927605,478.40103369253,490.54793493862,512.57253609913,523.2511306012],description:"225/224, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_22h:{frequencies:[261.6255653006,269.10058145205,280.31310567921,287.04062021552,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,476.92160341255,488.36772189445,508.71637697339,523.2511306012],description:"225/224, 1728/1715 and 875/864, Paul Erlich, 2001"},pipedum_22i:{frequencies:[261.6255653006,269.10058145205,279.06726965397,288.32205155576,296.75121990114,305.22982618403,313.95067836072,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,406.97310157871,418.60090448096,436.04260883433,448.50096908674,461.31528248922,474.80195184183,490.54793493862,508.71637697339,523.2511306012],description:"1728/1715, 245/243 and 245/243, Paul Erlich, 2001"},pipedum_22j:{frequencies:[261.6255653006,271.31540105247,280.31310567921,290.69507255622,299.00064605783,305.22982618403,320.35783506196,332.22294006425,336.37572681506,348.83408706747,353.19451315581,373.75080757229,387.59343007496,392.4383479509,406.97310157871,427.14378008261,436.04260883433,448.50096908674,465.11211608996,480.53675259294,498.33441009638,504.56359022259,523.2511306012],description:"50/49, 64/63 and 245/243, Gene Ward Smith, 2002"},pipedum_22k:{frequencies:[261.6255653006,272.52663052146,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,334.88072358477,348.83408706747,359.73515228832,367.91095120397,380.54627680087,392.4383479509,408.78994578219,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,502.32108537715,523.2511306012],description:"121/120, 2048/2025 and 4125/4096, Manuel Op de Coul"},pipedum_22l:{frequencies:[261.6255653006,275.62199471997,284.23518205497,290.69507255622,303.18419419197,310.07474405997,319.76457981184,330.74639366397,341.08221846597,348.83408706747,363.82103303037,372.08969287196,387.59343007496,404.24559225596,413.43299207996,426.35277308246,440.99519155196,454.77629128796,465.11211608996,485.09471070715,496.11959049595,511.62332769895,523.2511306012],description:"121/120, 736/729, 100/99 and 2048/2025"},pipedum_23:{frequencies:[261.6255653006,271.25338610366,276.85245005354,287.04062021552,297.60371503945,302.80736724606,313.95067836072,325.50406332439,332.22294006425,344.44874425862,348.83408706747,363.36884069528,376.74081403286,384.51729174103,398.6675280771,413.33849311034,420.56578784176,436.04260883433,452.08897683944,461.42075008924,478.40103369253,496.00619173241,504.67894541011,523.2511306012],description:"6144/6125, 15625/1552 and 5103/5000, Manuel Op de Coul, 2003"},pipedum_24:{frequencies:[261.6255653006,267.57160087561,275.93321340298,285.40970760065,290.69507255622,299.7792935736,310.07474405997,319.76457981184,327.03195662575,338.26335715633,348.83408706747,356.76213450082,367.91095120397,380.54627680087,392.4383479509,401.35740131342,413.43299207996,426.35277308246,436.04260883433,449.66894036041,465.11211608996,479.64686971777,490.54793493862,507.3950357345,523.2511306012],description:"121/120, 16384/16335 and 32805/32768. Manuel Op de Coul, 2001"},pipedum_24a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,313.95067836072,321.92208230347,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,412.06026534844,418.60090448096,429.2294430713,436.04260883433,457.84473927605,470.92601754108,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"49/48, 81/80 and 128/125, Gene Ward Smith, 2002"},pipedum_24b:{frequencies:[261.6255653006,271.31540105247,275.62199471997,289.72987407313,294.32876096318,305.22982618403,310.07474405997,325.94610833227,331.11985608357,343.38355445704,348.83408706747,361.75386806997,372.50983809402,386.30649876417,392.4383479509,406.97310157871,413.43299207996,434.59481110969,441.49314144476,457.84473927605,465.11211608996,482.33849075995,496.67978412536,515.07533168556,523.2511306012],description:"49/48, 81/80 and 531441/524288"},pipedum_25:{frequencies:[261.6255653006,268.26840191956,274.70684356563,281.29980781121,291.99281841585,299.00064605783,306.17666156322,313.95067836072,327.03195662575,335.33550239945,343.38355445704,351.62475976401,364.99102301981,373.75080757229,382.72082695402,392.4383479509,408.78994578219,418.60090448096,429.2294430713,439.53094970501,447.89271634391,467.18850946536,478.40103369253,490.54793493862,502.32108537715,523.2511306012],description:"65625/65536, 1029/1024 and 3125/3072, Manuel Op de Coul, 2003"},pipedum_26:{frequencies:[261.6255653006,267.07609791103,274.70684356563,286.15296204753,292.89859205665,299.00064605783,305.22982618403,313.95067836072,327.03195662575,333.84512238879,341.71502406609,348.83408706747,358.80077526939,366.27579142084,381.53728273004,392.4383479509,400.61414686654,410.05802887931,418.60090448096,436.04260883433,448.50096908674,457.84473927605,467.3831713443,478.40103369253,498.33441009638,512.57253609913,523.2511306012],description:"1029/1024, 1728/1715 and 50/49, Paul Erlich, 2001"},pipedum_26a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,294.32876096318,305.22982618403,306.59245933664,321.92208230347,325.57848126297,327.03195662575,343.38355445704,348.83408706747,366.27579142084,367.91095120397,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,457.84473927605,459.88868900496,465.11211608996,488.36772189445,490.54793493862,515.07533168556,523.2511306012],description:"50/49, 81/80 and 525/512, Gene Ward Smith, 2002"},pipedum_26b:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,290.69507255622,301.39265122629,306.59245933664,313.95067836072,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,376.74081403286,392.4383479509,401.85686830172,408.78994578219,418.60090448096,436.04260883433,446.50763144636,454.2110508691,470.92601754108,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"81/80 and 78125/73728, Gene Ward Smith, 2005"},pipedum_27:{frequencies:[261.6255653006,271.20240005245,278.95104005395,284.76252005507,292.89859205665,299.00064605783,307.54352165948,316.40280006119,325.44288006294,332.22294006425,341.71502406609,351.47831046798,358.80077526939,369.05222599138,379.68336007343,390.53145607553,398.6675280771,410.05802887931,418.60090448096,430.56093032327,442.86267118965,455.62003208812,468.63774729064,478.40103369253,492.06963465517,502.32108537715,516.67311638793,523.2511306012],description:"126/125, 1728/1715 and 4000/3969 are homophonic intervals, Paul Erlich"},pipedum_27a:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,508.71637697339,523.2511306012],description:"126/126, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27b:{frequencies:[261.6255653006,266.96486255163,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,333.70607818954,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.22888639134,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 128/125, Paul Erlich, 2001"},pipedum_27c:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 686/675, Paul Erlich, 2001"},pipedum_27d:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"2401/2400, 126/125 and 64/63, Paul Erlich, 2001"},pipedum_27e:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.55561052465,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.35783506196,329.64821227876,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.27867508032,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.4917875937,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 126/125 and 245/243, Paul Erlich, 2001"},pipedum_27f:{frequencies:[261.6255653006,267.07609791103,272.52663052146,280.31310567921,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,333.84512238879,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,410.05802887931,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,467.18850946536,488.36772189445,502.32108537715,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 128/125, Paul Erlich, 2001"},pipedum_27g:{frequencies:[261.6255653006,267.07609791103,274.59243005311,280.31310567921,290.81619550312,299.00064605783,305.22982618403,313.95067836072,320.35783506196,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.32175665765,436.04260883433,448.50096908674,457.84473927605,470.72988009104,488.36772189445,498.54204943392,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 686/675, Paul Erlich, 2001"},pipedum_27h:{frequencies:[261.6255653006,267.07609791103,274.70684356563,280.31310567921,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,418.60090448096,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,488.36772189445,498.33441009638,512.57253609913,523.2511306012],description:"2401/2400, 1728/1715 and 64/63, Paul Erlich, 2001"},pipedum_27i:{frequencies:[261.6255653006,269.10058145205,274.70684356563,282.43792805463,290.69507255622,299.00064605783,305.22982618403,313.95067836072,320.49131749323,329.51091606373,336.37572681506,348.83408706747,356.10146388137,366.27579142084,373.75080757229,384.42940207435,392.4383479509,406.97310157871,415.4517078616,427.14378008261,436.04260883433,448.50096908674,457.84473927605,470.92601754108,484.69365917187,498.33441009638,508.71637697339,523.2511306012],description:"2401/2400, 1728/1715 and 245/243, Paul Erlich, 2001"},pipedum_27j:{frequencies:[261.6255653006,269.16210421872,276.91574508099,282.55561052465,290.69507255622,299.06900468747,305.16005936662,313.95067836072,322.99452506247,329.57286411595,339.06673262958,348.83408706747,358.88280562497,366.19207123994,376.74081403286,387.59343007496,395.48743693914,406.88007915549,418.60090448096,423.83341578697,436.04260883433,448.60350703121,461.52624180165,470.92601754108,484.4917875937,498.44834114579,508.60009894437,523.2511306012],description:"78732/78125 and 390625000/387420489"},pipedum_27k:{frequencies:[261.6255653006,264.89588486686,275.62199471997,279.38237857051,290.69507255622,294.32876096318,298.00787047521,310.07474405997,313.95067836072,331.11985608357,344.52749339997,348.83408706747,353.19451315581,367.49599295996,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,418.60090448096,441.49314144476,447.01180571282,459.36999119996,465.11211608996,470.92601754108,496.67978412536,516.79124009995,523.2511306012],description:"67108864/66430125 and 25/24"},pipedum_28:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,285.76488412567,299.40669857094,306.59245933664,313.95067836072,319.36714514233,327.03195662575,334.88072358477,340.65828815182,348.83408706747,357.20610515709,363.36884069528,383.2405741708,392.4383479509,401.85686830172,408.78994578219,418.60090448096,428.6473261885,436.04260883433,446.50763144636,457.22381460107,479.0507177135,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"393216/390625 and 16875/16384"},pipedum_29:{frequencies:[261.6255653006,266.96486255163,274.70684356563,280.31310567921,288.44218574391,294.32876096318,300.33547037059,310.07474405997,316.40280006119,325.57848126297,332.22294006425,341.85740532612,348.83408706747,355.95315006884,366.27579142084,373.75080757229,384.58958099188,392.4383479509,400.44729382745,412.06026534844,420.46965851882,434.10464168396,442.96392008567,455.80987376816,465.11211608996,474.60420009179,488.36772189445,498.33441009638,512.78610798918,523.2511306012],description:"5120/5103, 225/224 and 50421/50000, Manuel Op de Coul, 2003"},pipedum_29a:{frequencies:[261.6255653006,272.52663052146,274.70684356563,286.15296204753,290.69507255622,294.32876096318,305.22982618403,313.95067836072,317.94773560837,327.03195662575,339.14425131559,343.38355445704,348.83408706747,363.36884069528,366.27579142084,372.60080508745,381.53728273004,392.4383479509,408.78994578219,412.06026534844,429.2294430713,436.04260883433,441.49314144476,457.84473927605,470.92601754108,476.92160341255,490.54793493862,508.71637697339,515.07533168556,523.2511306012],description:"49/48, 55/54, 65/64, 91/90 and 100/99"},pipedum_31:{frequencies:[261.6255653006,271.62175694356,275.93321340298,281.68182201554,289.72987407313,294.32876096318,300.46061014991,310.42486507835,316.89204976748,321.92208230347,331.11985608357,338.01818641865,343.38355445704,356.50355598842,362.16234259141,367.91095120397,380.27045972098,386.30649876417,392.4383479509,407.43263541533,413.89982010446,422.52273302331,434.59481110969,441.49314144476,450.69091522486,465.63729761752,475.33807465122,482.88312345521,496.67978412536,507.02727962797,515.07533168556,523.2511306012],description:"81/80, 225/224 and 1029/1024 are homophonic intervals"},pipedum_31a:{frequencies:[261.6255653006,269.46602871384,275.93321340298,282.55561052465,287.4304306281,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,329.20114651277,336.83253589231,344.91651675372,353.19451315581,359.28803828513,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,411.50143314096,421.04066986538,431.14564594215,441.49314144476,452.08897683944,459.88868900496,470.92601754108,482.22824196207,490.54793493862,502.32108537715,514.3767914262,523.2511306012],description:"393216/390625 and 2109375/2097152 are homophonic intervals"},pipedum_31b:{frequencies:[261.6255653006,267.07609791103,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,327.03195662575,333.84512238879,339.14425131559,343.38355445704,348.83408706747,356.10146388137,373.75080757229,381.53728273004,387.59343007496,392.4383479509,400.61414686654,406.97310157871,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"245/243, 1029/1024 comma and 25/24 chroma"},pipedum_31c:{frequencies:[261.6255653006,265.7783520514,274.70684356563,279.06726965397,286.15296204753,293.02063313667,299.00064605783,305.22982618403,313.95067836072,320.49131749323,327.03195662575,334.88072358477,343.38355445704,348.83408706747,360.55273217989,366.27579142084,373.75080757229,384.58958099188,392.4383479509,398.6675280771,412.06026534844,418.60090448096,429.2294430713,439.53094970501,448.50096908674,457.84473927605,470.92601754108,480.73697623985,490.54793493862,502.32108537715,515.07533168556,523.2511306012],description:"126/125, 225/224 and 1029/1024, Op de Coul"},pipedum_31d:{frequencies:[261.6255653006,269.10058145205,274.70684356563,280.31310567921,286.15296204753,294.32876096318,299.00064605783,305.22982618403,313.95067836072,316.53463456122,327.03195662575,336.37572681506,343.38355445704,348.83408706747,358.80077526939,366.27579142084,373.75080757229,381.53728273004,392.4383479509,403.65087217807,406.97310157871,418.60090448096,429.2294430713,436.04260883433,448.50096908674,457.84473927605,470.92601754108,478.40103369253,490.54793493862,504.56359022259,508.71637697339,523.2511306012],description:"1728/1715, 225/224 and 81/80"},pipedum_31e:{frequencies:[261.6255653006,267.07609791103,272.52663052146,276.85245005354,286.15296204753,290.69507255622,299.00064605783,305.22982618403,311.45900631024,317.94773560837,327.03195662575,332.22294006425,343.38355445704,348.83408706747,357.69120255941,363.36884069528,373.75080757229,381.53728273004,392.4383479509,398.6675280771,408.78994578219,415.27867508032,429.2294430713,436.04260883433,448.50096908674,457.84473927605,467.18850946536,476.92160341255,490.54793493862,498.33441009638,508.71637697339,523.2511306012],description:'81/80, 126/125 and 1029/1024, Gene Smith (2005) "Synstargam"'},pipedum_32:{frequencies:[261.6255653006,267.07609791103,270.30192333353,280.31310567921,286.15296204753,292.11448209019,299.00064605783,305.22982618403,311.5887808962,315.35224388912,325.57848126297,333.84512238879,337.87740416691,348.83408706747,356.10146388137,360.4025644447,367.91095120397,379.84156147346,384.42940207435,394.1903048614,406.97310157871,415.4517078616,420.46965851882,429.2294430713,443.14848838571,448.50096908674,457.84473927605,474.80195184183,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"225/224, 2048/2025 and 117649/116640"},pipedum_32a:{frequencies:[261.6255653006,268.26840191956,274.59243005311,280.31310567921,286.15296204753,292.89859205665,299.00064605783,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,341.71502406609,348.83408706747,356.10146388137,364.4960256705,372.08969287196,381.53728273004,390.53145607553,398.6675280771,406.97310157871,416.56688648057,425.24536328225,434.10464168396,438.17172313528,450.50320555588,459.88868900496,469.46970335923,480.53675259294,490.54793493862,500.76768358318,512.57253609913,523.2511306012],description:"589824/588245, 225/224 and 2048/2025"},pipedum_34:{frequencies:[261.6255653006,267.90457886781,272.52663052146,279.06726965397,283.88190679319,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,321.48549464138,327.03195662575,334.88072358477,340.65828815182,348.83408706747,354.85238349148,363.36884069528,367.91095120397,376.74081403286,385.78259356965,392.4383479509,401.85686830172,408.78994578219,418.60090448096,425.82286018978,436.04260883433,446.50763144636,454.2110508691,465.11211608996,470.92601754108,482.22824196207,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 393216/390625 are homophonic intervals"},pipedum_34a:{frequencies:[261.6255653006,264.89588486686,272.52663052146,279.06726965397,282.55561052465,290.69507255622,294.32876096318,301.39265122629,306.59245933664,313.95067836072,317.87506184023,327.03195662575,334.88072358477,340.65828815182,348.83408706747,353.19451315581,363.36884069528,367.91095120397,376.74081403286,387.59343007496,392.4383479509,401.85686830172,408.78994578219,418.60090448096,423.83341578697,436.04260883433,441.49314144476,452.08897683944,465.11211608996,470.92601754108,484.4917875937,490.54793493862,502.32108537715,510.98743222773,523.2511306012],description:"15625/15552 and 2048/2025, Manuel Op de Coul, 2001"},pipedum_34b:{frequencies:[261.6255653006,267.57160087561,272.52663052146,279.06726965397,285.40970760065,290.69507255622,294.32876096318,299.7792935736,310.07474405997,313.95067836072,319.76457981184,327.03195662575,334.88072358477,342.49164912079,348.83408706747,356.76213450082,359.73515228832,367.91095120397,380.54627680087,383.71749577421,392.4383479509,399.70572476481,408.78994578219,418.60090448096,428.11456140098,436.04260883433,441.49314144476,449.66894036041,465.11211608996,470.92601754108,479.64686971777,490.54793493862,502.32108537715,511.62332769895,523.2511306012],description:"100/99, 243/242 and 5632/5625, Manuel Op de Coul"},pipedum_36:{frequencies:[261.6255653006,267.07609791103,269.10058145205,280.31310567921,286.15296204753,290.69507255622,294.32876096318,300.46061014991,305.22982618403,311.5887808962,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,400.61414686654,406.97310157871,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,467.3831713443,480.53675259294,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"1029/1024, 245/243 comma and 50/49 chroma, Gene Ward Smith, 2001"},pipedum_36a:{frequencies:[261.6255653006,264.89588486686,275.62199471997,275.93321340298,279.06726965397,290.69507255622,293.99679436797,294.32876096318,310.07474405997,310.42486507835,313.95067836072,327.03195662575,330.74639366397,331.11985608357,348.83408706747,349.22797321314,353.19451315581,367.91095120397,372.08969287196,372.50983809402,387.59343007496,392.4383479509,397.34382730029,413.43299207996,413.89982010446,418.60090448096,436.04260883433,440.99519155196,441.49314144476,465.11211608996,465.63729761752,470.92601754108,490.54793493862,496.11959049595,496.67978412536,516.79124009995,523.2511306012],description:"1125/1024 and 531441/524288, Op de Coul"},pipedum_37:{frequencies:[261.6255653006,263.718569823,276.85245005354,279.06726965397,280.31310567921,290.69507255622,293.02063313667,299.00064605783,308.98710943476,311.45900631024,313.95067836072,325.57848126297,332.22294006425,333.70607818954,346.06556256693,348.83408706747,351.62475976401,353.19451315581,370.78453132171,373.75080757229,376.74081403286,390.69417751556,392.4383479509,400.44729382745,415.27867508032,418.60090448096,421.94971171681,436.04260883433,444.94143758605,448.50096908674,465.11211608996,467.18850946536,470.92601754108,494.37937509562,498.33441009638,502.32108537715,519.0983438504,523.2511306012],description:"250/243, 3136/3125 and 3125/3087, Gene Ward Smith, 2002"},pipedum_38:{frequencies:[261.6255653006,271.25338610366,272.52663052146,280.3771918945,282.55561052465,290.69507255622,292.95365699196,301.39265122629,302.80736724606,313.95067836072,315.42434088132,325.50406332439,327.03195662575,336.45263027341,339.06673262958,348.83408706747,350.47148986813,361.67118147155,363.36884069528,376.74081403286,378.50920905758,390.60487598927,392.4383479509,403.74315632809,406.88007915549,418.60090448096,420.56578784176,434.00541776586,436.04260883433,452.08897683944,454.2110508691,467.29531982417,470.92601754108,484.4917875937,488.25609498659,502.32108537715,504.67894541011,519.21702202686,523.2511306012],description:"81/80 and 1224440064/1220703125, Manuel Op de Coul, 2001"},pipedum_38a:{frequencies:[261.6255653006,268.26840191956,272.52663052146,274.70684356563,279.06726965397,286.15296204753,293.02063313667,294.32876096318,305.22982618403,306.59245933664,313.95067836072,321.92208230347,327.03195662575,329.64821227876,340.65828815182,343.38355445704,348.83408706747,357.69120255941,366.27579142084,367.91095120397,381.53728273004,383.2405741708,390.69417751556,392.4383479509,408.78994578219,412.06026534844,418.60090448096,429.2294430713,436.04260883433,439.53094970501,457.84473927605,459.88868900496,470.92601754108,476.92160341255,488.36772189445,490.54793493862,510.98743222773,515.07533168556,523.2511306012],description:"50/49, 81/80 and 3125/3072, Gene Ward Smith, 2002"},pipedum_41:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,303.67253115248,308.34441624714,313.95067836072,320.49131749323,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,354.2846196779,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.40708707973,392.4383479509,400.61414686654,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"100/99 105/104 196/195 275/273 385/384, Paul Erlich, TL 3-11-2000"},pipedum_41a:{frequencies:[261.6255653006,265.71346475842,269.80136421624,274.70684356563,280.31310567921,285.40970760065,290.69507255622,294.32876096318,299.00064605783,305.22982618403,309.19384990071,313.95067836072,319.76457981184,327.03195662575,332.97799220076,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,380.54627680087,387.59343007496,392.4383479509,400.61414686654,406.97310157871,411.12588832951,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,485.87604984397,495.99846754905,503.62921320365,513.90736041189,523.2511306012],description:"pipedum_41 improved shape by Manuel Op de Coul, all intervals superparticular"},pipedum_41b:{frequencies:[261.6255653006,265.7783520514,271.31540105247,274.70684356563,279.06726965397,284.8811711051,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,313.95067836072,319.76457981184,327.03195662575,331.11985608357,336.37572681506,343.38355445704,348.83408706747,353.19451315581,359.73515228832,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,425.14154361347,436.04260883433,441.49314144476,448.50096908674,457.84473927605,465.11211608996,470.92601754108,479.64686971777,490.54793493862,498.33441009638,504.56359022259,515.07533168556,523.2511306012],description:"pipedum_41 more improved shape by M. OdC, all intervals superparticular"},pipedum_41c:{frequencies:[261.6255653006,267.07609791103,271.31540105247,275.93321340298,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,310.07474405997,315.35224388912,320.35783506196,327.03195662575,333.84512238879,336.37572681506,343.38355445704,348.83408706747,356.10146388137,360.4025644447,367.91095120397,373.75080757229,381.53728273004,384.42940207435,392.4383479509,398.6675280771,406.97310157871,410.05802887931,420.46965851882,429.2294430713,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,474.80195184183,480.53675259294,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"225/224, 245/243 and 1029/1024, Gene Ward Smith, 2002"},pipedum_41d:{frequencies:[261.6255653006,264.89588486686,272.52663052146,275.93321340298,279.06726965397,282.55561052465,290.69507255622,294.32876096318,297.67175429757,306.59245933664,310.07474405997,313.95067836072,317.51653791741,327.03195662575,331.11985608357,334.88072358477,344.91651675372,348.83408706747,353.19451315581,363.36884069528,367.91095120397,372.08969287196,376.74081403286,387.59343007496,392.4383479509,396.89567239676,408.78994578219,413.89982010446,418.60090448096,423.83341578697,436.04260883433,441.49314144476,446.50763144636,459.88868900496,465.11211608996,470.92601754108,484.4917875937,490.54793493862,496.11959049595,502.32108537715,517.37477513058,523.2511306012],description:"3125/3072 and 32805/32768"},pipedum_43:{frequencies:[261.6255653006,269.10058145205,273.37201925287,274.70684356563,282.55561052465,286.15296204753,287.04062021552,290.69507255622,299.00064605783,305.22982618403,307.54352165948,313.95067836072,322.92069774245,327.03195662575,328.04642310345,332.22294006425,341.71502406609,343.38355445704,348.83408706747,358.80077526939,366.27579142084,369.05222599138,376.74081403286,379.68336007343,381.53728273004,392.4383479509,398.6675280771,410.05802887931,412.06026534844,418.60090448096,423.93031414449,430.56093032327,436.04260883433,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,492.06963465517,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 12288/12005, Gene Ward Smith, 2002"},pipedum_45:{frequencies:[261.6255653006,265.7783520514,267.07609791103,274.70684356563,279.06726965397,280.31310567921,284.8811711051,293.02063313667,294.32876096318,299.00064605783,303.74668805875,305.22982618403,313.95067836072,320.49131749323,325.57848126297,327.03195662575,336.37572681506,341.85740532612,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,372.08969287196,373.75080757229,384.58958099188,392.4383479509,398.6675280771,400.61414686654,406.97310157871,418.60090448096,420.46965851882,427.32175665765,436.04260883433,439.53094970501,448.50096908674,455.80987376816,457.84473927605,465.11211608996,478.40103369253,480.73697623985,488.36772189445,498.33441009638,512.78610798918,515.07533168556,523.2511306012],description:"81/80, 525/512 and 2401/2400, Gene Ward Smith, 2002"},scala205pipedum_45a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,276.85245005354,282.55561052465,288.32205155576,290.69507255622,296.75121990114,299.00064605783,305.22982618403,311.45900631024,313.95067836072,320.49131749323,322.99452506247,329.64821227876,336.37572681506,339.14425131559,345.98646186692,348.83408706747,356.10146388137,363.28578496026,366.27579142084,373.75080757229,376.82694590621,384.42940207435,392.4383479509,395.66829320152,403.65087217807,406.97310157871,415.27867508032,423.83341578697,427.14378008261,436.04260883433,439.53094970501,448.50096908674,457.84473927605,461.31528248922,470.92601754108,474.80195184183,484.4917875937,494.47231841813,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 2401/2400 and 4375/4374, Gene Ward Smith"},pipedum_46:{frequencies:[261.6255653006,265.7783520514,270.41454913492,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,295.30928005711,300.46061014991,305.22982618403,310.07474405997,313.95067836072,320.49131749323,325.57848126297,327.03195662575,332.22294006425,339.14425131559,343.38355445704,348.83408706747,354.37113606854,360.55273217989,366.27579142084,372.08969287196,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.32175665765,429.2294430713,436.04260883433,442.96392008567,450.69091522486,457.84473927605,465.11211608996,470.92601754108,480.73697623985,488.36772189445,490.54793493862,498.33441009638,508.71637697339,515.07533168556,523.2511306012],description:"126/125, 1029/1024 and 5120/5103. Manuel Op de Coul, 2001"},pipedum_46a:{frequencies:[261.6255653006,267.07609791103,269.10058145205,274.70684356563,279.06726965397,280.31310567921,286.15296204753,290.69507255622,294.32876096318,299.00064605783,305.22982618403,307.54352165948,313.95067836072,320.35783506196,320.49131749323,327.03195662575,332.22294006425,336.37572681506,343.38355445704,348.83408706747,353.19451315581,358.80077526939,366.12324007081,366.27579142084,373.75080757229,381.53728273004,387.59343007496,392.4383479509,398.6675280771,406.97310157871,412.06026534844,418.60090448096,427.14378008261,427.32175665765,436.04260883433,445.12682985172,448.50096908674,457.84473927605,465.11211608996,470.92601754108,478.40103369253,488.36772189445,490.54793493862,498.33441009638,508.71637697339,512.57253609913,523.2511306012],description:"126/125, 1029/1024 and 245/243, Gene Ward Smith, 2002"},pipedum_46b:{frequencies:[261.6255653006,264.89588486686,271.25338610366,272.52663052146,279.06726965397,282.55561052465,283.88190679319,290.69507255622,294.32876096318,301.39265122629,302.80736724606,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,334.88072358477,339.06673262958,340.65828815182,348.83408706747,353.19451315581,361.67118147155,363.36884069528,372.08969287196,376.74081403286,381.45007420827,387.59343007496,392.4383479509,401.85686830172,403.74315632809,408.78994578219,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,452.08897683944,454.2110508691,465.11211608996,470.92601754108,482.22824196207,484.4917875937,490.54793493862,502.32108537715,508.60009894437,516.79124009995,523.2511306012],description:"2048/2025 and 78732/78125"},pipedum_46c:{frequencies:[261.6255653006,266.47048317654,271.31540105247,274.08392555301,279.06726965397,282.62020942966,287.78812183066,290.69507255622,297.67175429757,299.7792935736,306.97399661937,310.07474405997,313.95067836072,319.76457981184,325.57848126297,328.90071066361,332.22294006425,339.14425131559,342.60490694126,348.83408706747,355.29397756872,359.73515228832,363.36884069528,372.08969287196,374.72411696701,383.71749577421,387.59343007496,394.68085279633,399.70572476481,406.97310157871,411.12588832951,418.60090448096,426.35277308246,431.68218274599,436.04260883433,446.50763144636,449.66894036041,460.46099492906,465.11211608996,467.18850946536,479.64686971777,484.4917875937,496.11959049595,499.63215595601,511.62332769895,516.79124009995,523.2511306012],description:"126/125, 176/175, 385/384 and 896/891, Paul Erlich"},pipedum_46d:{frequencies:[261.6255653006,267.23182741418,272.79915715198,274.70684356563,278.36648688978,283.42769574232,287.78812183066,291.52562990638,297.59908052943,299.7792935736,303.67253115248,311.77046531655,313.95067836072,320.67819289702,324.7609013714,327.03195662575,334.03978426773,340.11323489078,343.04051394309,345.34574619679,354.2846196779,359.73515228832,366.27579142084,374.12455837986,376.74081403286,381.53728273004,389.71308164569,392.4383479509,402.90337056292,408.13588186894,411.12588832951,419.69101100305,425.14154361347,431.68218274599,439.53094970501,445.38637902364,448.50096908674,457.84473927605,467.65569797482,470.92601754108,479.64686971777,485.87604984397,490.54793493862,503.62921320365,510.16985233617,519.61744219425,523.2511306012],description:"91/90, 121/120, 126/125, 169/168 and 176/175"},pipedum_5:{frequencies:[261.6255653006,313.95067836072,348.83408706747,392.4383479509,436.04260883433,523.2511306012],description:"16/15 and 27/25"},pipedum_50:{frequencies:[261.6255653006,267.07609791103,269.10058145205,273.37201925287,274.70684356563,276.85245005354,284.76252005507,286.15296204753,290.69507255622,299.00064605783,300.46061014991,305.22982618403,307.54352165948,313.95067836072,316.40280006119,320.49131749323,327.03195662575,332.22294006425,333.84512238879,341.71502406609,343.38355445704,348.83408706747,358.80077526939,360.55273217989,361.60320006994,366.27579142084,373.75080757229,379.68336007343,381.53728273004,392.4383479509,398.6675280771,400.61414686654,410.05802887931,412.06026534844,418.60090448096,423.93031414449,427.14378008261,436.04260883433,445.12682985172,448.50096908674,455.62003208812,457.84473927605,470.92601754108,478.40103369253,480.73697623985,484.4917875937,498.33441009638,500.76768358318,508.71637697339,512.57253609913,523.2511306012],description:"81/80, 126/125 and 16807/16384, Gene Ward Smith, 2002"},pipedum_53:{frequencies:[261.6255653006,264.89588486686,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,287.4304306281,290.69507255622,294.32876096318,298.00787047521,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,322.99452506247,327.03195662575,331.11985608357,334.88072358477,340.65828815182,344.91651675372,348.83408706747,353.19451315581,357.20610515709,363.36884069528,367.91095120397,372.08969287196,376.74081403286,383.2405741708,387.59343007496,392.4383479509,397.34382730029,403.74315632809,408.78994578219,413.89982010446,418.60090448096,423.83341578697,430.65936674996,436.04260883433,441.49314144476,446.50763144636,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,484.4917875937,490.54793493862,496.67978412536,502.32108537715,510.98743222773,516.79124009995,523.2511306012],description:"15625/15552 and 32805/32768, Manuel Op de Coul, 2001"},pipedum_53a:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,276.85245005354,280.31310567921,282.55561052465,288.32205155576,290.69507255622,294.32876096318,299.00064605783,302.80736724606,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.99452506247,327.03195662575,332.22294006425,336.37572681506,339.14425131559,346.06556256693,348.83408706747,353.19451315581,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,387.59343007496,392.4383479509,398.6675280771,403.65087217807,406.97310157871,415.27867508032,418.60090448096,423.83341578697,430.56093032327,436.04260883433,441.49314144476,448.50096908674,454.2110508691,457.84473927605,467.18850946536,470.92601754108,480.53675259294,484.4917875937,490.54793493862,498.33441009638,504.56359022259,508.71637697339,519.0983438504,523.2511306012],description:"225/224, 1728/1715 and 4375/4374, Manuel Op de Coul, 2001"},pipedum_53b:{frequencies:[261.6255653006,266.96486255163,269.10058145205,272.52663052146,274.70684356563,280.31310567921,286.03378130532,288.32205155576,290.69507255622,293.02063313667,299.00064605783,301.39265122629,305.22982618403,311.45900631024,313.95067836072,320.35783506196,322.92069774245,327.03195662575,333.70607818954,336.37572681506,341.85740532612,343.24053756638,348.83408706747,351.62475976401,358.80077526939,363.36884069528,366.27579142084,373.75080757229,376.74081403286,384.42940207435,389.3237578878,392.4383479509,400.44729382745,403.65087217807,406.97310157871,410.22888639134,418.60090448096,427.14378008261,430.56093032327,436.04260883433,439.53094970501,448.50096908674,457.65405008851,457.84473927605,467.18850946536,470.92601754108,478.60036745656,480.53675259294,488.36772189445,498.33441009638,502.32108537715,512.57253609913,512.78610798918,523.2511306012],description:"225/224, 1728/1715 and 3125/3087, Gene Ward Smith, 2002"},pipedum_55:{frequencies:[261.6255653006,267.07609791103,269.10058145205,272.52663052146,274.70684356563,279.06726965397,280.31310567921,286.15296204753,293.02063313667,294.32876096318,296.75121990114,299.00064605783,305.22982618403,306.59245933664,313.95067836072,317.94773560837,320.49131749323,325.57848126297,327.03195662575,333.84512238879,336.37572681506,340.65828815182,343.38355445704,348.83408706747,356.10146388137,358.80077526939,366.27579142084,367.91095120397,373.75080757229,376.74081403286,381.53728273004,390.69417751556,392.4383479509,400.61414686654,403.65087217807,406.97310157871,408.78994578219,418.60090448096,427.32175665765,429.2294430713,436.04260883433,439.53094970501,445.12682985172,448.50096908674,457.84473927605,459.88868900496,470.92601754108,474.80195184183,476.92160341255,488.36772189445,490.54793493862,502.32108537715,504.56359022259,508.71637697339,520.92557002075,523.2511306012],description:"81/80, 686/675 and 6144/6125, Gene Ward Smith, 2002"},pipedum_58:{frequencies:[261.6255653006,264.29521392612,268.60224704195,271.31540105247,275.62199471997,277.50997462242,280.31310567921,284.8811711051,287.78812183066,292.35618725654,295.30928005711,297.33211566688,302.17752792219,305.22982618403,310.07474405997,313.23877206058,315.35224388912,320.49131749323,323.76163705949,328.90071066361,332.22294006425,337.63694353197,339.94971891247,343.38355445704,348.83408706747,352.39361856816,358.13632938927,361.75386806997,364.23184169193,370.01329949656,373.75080757229,379.84156147346,383.71749577421,389.80824967539,392.4383479509,396.44282088917,402.90337056292,406.97310157871,413.43299207996,417.65169608078,420.46965851882,427.32175665765,431.68218274599,438.53428088482,442.96392008567,445.99817350032,453.26629188329,457.84473927605,465.11211608996,469.85815809087,477.51510585235,480.73697623985,485.64245558924,493.35106599542,498.33441009638,506.45541529795,511.62332769895,515.07533168556,523.2511306012],description:"9801/9800, 2401/2400, 5120/5103 and 896/891"},pipedum_58a:{frequencies:[261.6255653006,265.65057399753,267.66008354786,270.48058443385,272.52663052146,277.4816601673,281.75060878526,285.40970760065,287.78812183066,293.02063313667,295.1673044417,297.30177875068,301.87565226992,305.22982618403,309.92566966379,313.95067836072,316.2506833304,322.00069575458,323.72860352852,327.03195662575,332.97799220076,338.10073054231,342.60490694126,344.24801655217,348.83408706747,352.18826098158,358.59168390851,362.25078272391,366.27579142084,368.95913055213,375.66747838035,379.50081999647,381.53728273004,388.47432423422,392.4383479509,399.57359064092,402.50086969323,406.97310157871,411.12588832951,418.60090448096,422.62591317789,428.25613367658,430.31002069022,436.04260883433,442.75095666255,450.80097405642,455.40098399577,457.84473927605,466.16918908107,469.58434797544,475.68284600109,483.00104363188,488.36772189445,495.88107146206,499.46698830115,503.12608711654,512.27383415502,516.54278277298,523.2511306012],description:"126/125, 144/143, 176/175, 196/195 and 364/363"},pipedum_5a:{frequencies:[261.6255653006,290.69507255622,348.83408706747,392.4383479509,470.92601754108,523.2511306012],description:"27/25 and 81/80"},pipedum_64:{frequencies:[261.6255653006,267.90457886781,266.96486255163,273.37201925287,274.70684356563,273.74326726486,280.31310567921,280.42990280658,284.76252005507,286.15296204753,294.32876096318,300.05312833195,299.00064605783,300.46061014991,307.67166479351,306.59245933664,313.95067836072,312.84944830269,320.35783506196,320.49131749323,328.18310911307,327.03195662575,336.37572681506,336.5158833679,341.71502406609,343.38355445704,351.62475976401,348.83408706747,358.80077526939,358.95027559242,366.12324007081,366.27579142084,375.06641041494,373.75080757229,382.72082695402,384.58958099188,383.2405741708,392.4383479509,392.60186392921,398.6675280771,400.61414686654,412.06026534844,408.78994578219,418.60090448096,428.6473261885,427.14378008261,429.2294430713,439.53094970501,437.98922762377,448.50096908674,448.68784449053,455.62003208812,457.84473927605,468.83301301868,467.18850946536,478.40103369253,480.73697623985,488.16432009441,490.54793493862,502.32108537715,500.55911728431,512.57253609913,512.78610798918,520.70860810071,523.2511306012],description:"225/224 235298/234375 and 67108864/66706983"},pipedum_65:{frequencies:[261.6255653006,264.59711493117,267.38234771992,270.72462706642,273.0589090967,275.93321340298,279.06726965397,282.00481986086,285.20783756792,287.99181818792,291.26283636981,294.32876096318,297.67175429757,300.80514118491,303.39878788522,306.84479880935,310.42486507835,313.95067836072,317.25542234346,320.85881726391,323.62537374423,327.30111872997,331.11985608357,334.60532825287,338.40578383303,341.32363637087,345.20039866051,348.83408706747,352.79615324157,356.9123501364,360.9661694219,364.07854546226,367.91095120397,372.08969287196,376.00642648114,380.70650681216,383.98909091723,388.35044849308,392.4383479509,396.89567239676,401.07352157989,404.53171718029,409.58836364504,413.89982010446,418.60090448096,423.00722979129,427.81175635188,431.50049832564,436.89425455471,441.49314144476,446.50763144636,451.20771177737,455.09818182783,460.26719821402,465.11211608996,470.92601754108,475.8831335152,481.28822589586,485.43806061635,490.95167809495,496.11959049595,501.90799237931,507.60867574954,511.9854545563,517.80059799077,523.2511306012],description:"1216/1215, 32805/32768 and 39858075/39845888. Manuel Op de Coul, 2001"},pipedum_65a:{frequencies:[261.6255653006,264.89588486686,267.90457886781,269.16210421872,272.52663052146,275.93321340298,279.06726965397,282.55561052465,286.08755565621,287.10624449997,290.69507255622,294.32876096318,298.00787047521,301.39265122629,302.80736724606,306.59245933664,310.07474405997,313.95067836072,317.87506184023,319.0069383333,322.99452506247,327.03195662575,331.11985608357,334.88072358477,339.06673262958,340.65828815182,344.52749339997,348.83408706747,353.19451315581,357.60944457026,358.88280562497,363.36884069528,367.91095120397,372.08969287196,376.74081403286,381.45007420827,383.2405741708,387.59343007496,392.4383479509,397.34382730029,401.85686830172,403.74315632809,408.78994578219,413.43299207996,418.60090448096,423.83341578697,429.13133348431,430.65936674996,436.04260883433,441.49314144476,446.50763144636,452.08897683944,454.2110508691,459.88868900496,465.11211608996,470.92601754108,476.81259276034,478.51040749995,484.4917875937,490.54793493862,496.67978412536,502.32108537715,508.60009894437,510.98743222773,516.79124009995,523.2511306012],description:"78732/78125 and 32805/32768"},pipedum_67:{frequencies:[261.6255653006,262.79353657426,266.96486255163,267.07609791103,272.52663052146,274.70684356563,279.06726965397,280.31310567921,284.8811711051,286.15296204753,293.02063313667,294.32876096318,299.00064605783,299.12522966035,300.33547037059,305.22982618403,306.59245933664,311.45900631024,313.95067836072,320.35783506196,320.49131749323,325.57848126297,327.03195662575,332.22294006425,336.5158833679,339.00300006557,341.85740532612,343.38355445704,348.83408706747,350.39138209902,355.95315006884,360.55273217989,366.27579142084,367.91095120397,373.75080757229,373.90653707544,381.53728273004,384.58958099188,390.69417751556,392.4383479509,398.83363954714,400.44729382745,400.61414686654,406.97310157871,408.78994578219,418.60090448096,420.46965851882,427.32175665765,429.2294430713,436.04260883433,439.53094970501,448.50096908674,448.68784449053,455.80987376816,457.84473927605,459.88868900496,465.11211608996,467.18850946536,474.60420009179,480.73697623985,488.36772189445,490.54793493862,498.33441009638,504.77382505185,512.78610798918,515.07533168556,520.92557002075,523.2511306012],description:"81/80, 1029/1024 and 9604/9375, Gene Ward Smith, 2002"},pipedum_68:{frequencies:[246.94165062806,250.86135936819,252.08626834948,253.99712636029,258.02882677871,259.28873315946,263.4044273366,264.58033995864,268.89201957278,272.13977824317,273.16014686758,276.57464870343,277.80935695657,282.21902928921,286.81815421096,288.0985923994,291.6998248044,292.67158592955,296.32998075367,301.03363124183,302.50352201937,307.30516522603,308.67706328508,311.01688942076,316.08531280392,317.49640795036,322.53603347338,324.11091644933,329.25553417075,333.37122834788,334.48181249092,338.66283514705,340.17472280396,345.71831087928,351.20590311546,352.77378661151,357.18345894416,358.5226927637,362.85303765756,368.76619827124,370.41247594209,376.29203905228,378.12940252422,384.13145653254,387.04324016806,388.93309973919,395.1066410049,396.87050993795,403.33802935916,409.74022030137,411.56941771343,414.86197305514,416.71403543485,423.32854393382,430.22723131644,432.1478885991,439.00737889433,441.15096961159,444.49497113051,451.55044686274,453.56629707195,460.95774783905,468.27453748728,470.36504881535,474.12796920588,476.24461192554,483.80405021008,491.68826436165,493.88330125612],description:"245/243, 2048/2025 and 2401/2400, Gene Ward Smith, 2002"},pipedum_7:{frequencies:[261.6255653006,290.69507255622,317.94773560837,347.75533582165,392.4383479509,429.2294430713,476.92160341255,523.2511306012],description:"81/80, 64/63 and 6144/6125, Manuel Op de Coul"},pipedum_72:{frequencies:[195.99771799087,198.44768946576,200.08100378235,201.59765279061,204.16428957382,205.79760389041,208.41771227328,209.06423252359,211.67753543014,214.37250405251,216.08748408493,217.77524221208,220.49743273973,222.31222642483,223.99739198957,226.79735938944,228.66400432268,231.52230437672,232.29359169288,235.19726158904,238.19167116946,240.09720453882,241.91718334873,244.99714748859,246.9571246685,250.10125472793,251.99706598826,254.07111591409,257.24700486302,258.04499557198,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,277.89028303104,279.99673998696,282.23671390685,285.83000540335,289.40288047089,290.3669896161,293.99657698631,296.41630189977,300.12150567352,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,321.55875607877,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.76148788545,342.99600648402,347.28345656507,348.44038753932,352.79589238357,357.28750675419,360.14580680822,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,385.87050729453,387.1559861548,391.99543598174],description:"225/224, 1029/1024 and 4375/4374, Gene Ward Smith, 2002"},pipedum_72a:{frequencies:[195.99771799087,197.5656997348,200.08100378235,201.59765279061,203.21043401293,205.79760389041,207.44398472154,209.99755499022,211.67753543014,213.41973736784,216.04686727389,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.84921063758,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.07883968176,240.09720453882,241.91718334873,244.99714748859,246.9571246685,248.93278166584,251.99706598826,254.07111591409,256.1036848414,259.25624072866,261.33029065449,264.65741241051,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.59197962872,279.99673998696,282.23671390685,285.83000540335,288.11664544658,290.30062001848,293.99657698631,296.3485496022,298.59492344758,302.46561418344,304.88533909691,308.7669811456,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.46833963724,335.99608798435,338.68405668822,342.99600648402,345.73997453589,348.36074402217,352.79589238357,355.69956227973,360.07811212314,362.95873702013,365.86240691629,370.52037737472,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"4375/4374, 2401/2400 and 15625/15552, Manuel Op de Coul, 2002"},pipedum_72b:{frequencies:[195.99771799087,197.5656997348,200.51849868858,202.12264667808,204.16428957382,205.79760389041,207.94510975112,209.60867062912,211.67753543014,213.41973736784,215.59748978996,218.74745311481,220.49743273973,222.7983318762,224.58071853121,226.79735938944,228.66400432268,230.99731048924,232.89852292125,235.19726158904,238.19167116946,240.62219842629,242.5471760137,244.99714748859,246.9571246685,249.53413170134,251.53040475495,254.07111591409,256.1036848414,259.87197430039,262.49694373777,264.59691928767,267.35799825143,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.4782275055,283.49669923679,285.83000540335,288.74663811155,291.12315365156,293.99657698631,296.3485496022,299.44095804161,301.83648570594,304.88533909691,309.37139797666,311.91766462667,314.99633248533,317.51630314521,320.82959790172,323.39623468494,326.66286331812,329.27616622466,332.71217560179,336.87107779681,340.19603908415,342.99600648402,346.49596573386,349.34778438187,352.79589238357,355.69956227973,359.32914964993,362.08404605941,367.49572123288,371.24567757199,374.30119755201,377.99559898239,381.10667387114,384.99551748207,388.16420486875,391.99543598174],description:"225/224, 3025/3024, 1375/1372 and 4375/4374"},pipedum_72b2:{frequencies:[195.99771799087,198.44768946576,200.45221158157,202.12264667808,204.16428957382,205.79760389041,207.87636756607,209.06423252359,211.67753543014,213.81569235368,215.59748978996,217.77524221208,220.49743273973,222.72467953508,223.99739198957,226.79735938944,228.66400432268,230.99731048924,233.3306166558,235.19726158904,237.57299150408,239.55276643329,241.97249134675,244.99714748859,246.39713118852,249.45164107929,251.99706598826,254.07111591409,257.24700486302,258.71698774795,261.33029065449,264.59691928767,267.2696154421,269.49686223745,272.2190527651,274.39680518722,277.19677258709,279.99673998696,282.23671390685,285.0875898049,287.46331971994,290.3669896161,293.99657698631,296.96623938011,298.66318931942,302.39647918591,304.88533909691,307.99641398565,311.81455134911,313.59634878539,317.51630314521,320.72353853051,323.39623468494,326.66286331812,329.27616622466,332.60218810572,335.99608798435,338.76148788545,342.99600648402,344.95598366393,348.44038753932,352.79589238357,356.35948725613,359.32914964993,362.95873702013,367.49572123288,369.59569678278,374.17746161893,376.31561854247,380.11678640654,383.28442629326,387.1559861548,391.99543598174],description:"Optimised version of pipedum_72b, Manuel Op de Coul"},pipedum_72c:{frequencies:[195.99771799087,197.5656997348,199.99767141926,201.59765279061,203.25689273127,205.79760389041,207.40499258293,209.99755499022,211.67753543014,213.41973736784,215.9974851328,217.77524221208,219.51744414977,222.31222642483,223.99739198957,226.79735938944,228.66400432268,230.49331635726,233.3306166558,235.19726158904,237.13304151982,239.99720570311,241.91718334873,244.99714748859,246.9571246685,248.88599109952,251.99706598826,254.07111591409,256.1036848414,259.19698215935,261.33029065449,264.59691928767,266.7746717098,268.79687038748,272.2190527651,274.39680518722,276.47678096998,279.99673998696,282.23671390685,285.83000540335,287.99664684373,290.3669896161,293.99657698631,296.41630189977,298.66318931942,302.39647918591,304.88533909691,308.69640583562,311.1074888744,313.59634878539,317.58889489261,320.12960605175,322.55624446497,326.66286331812,329.27616622466,333.32945236543,335.99608798435,338.76148788545,342.99600648402,345.59597621247,348.44038753932,352.79589238357,355.69956227973,359.99580855466,362.95873702013,365.86240691629,370.43568700274,373.32898664928,376.31561854247,381.10667387114,384.15552726211,388.884361093,391.99543598174],description:"441/440, 2401/2400, 4375/4374 and 1375/1372"},pipedum_74:{frequencies:[174.6141157165,175.4667237034,177.38576834692,178.25190979393,182.45393315683,183.34482150233,186.25505676427,187.16450528362,187.6669026756,191.57662981467,192.51206257744,194.01568412944,194.96302633711,195.48635695375,199.55898939029,200.53339851817,202.72659239648,203.71646833592,208.51878075067,209.5369388598,210.56006844408,212.8629220163,213.90229175271,216.62558481901,218.9447197882,220.01378580279,221.73221043365,222.81488724241,228.06741644604,229.18102687791,231.68753416741,232.81882095533,233.95563160453,239.47078726834,240.6400782218,243.27191087578,244.4597620031,249.5526737115,250.2225369008,251.44432663176,253.4082404956,254.6455854199,259.95070178281,260.64847593833,261.92117357475,266.07865252038,267.37786469089,273.68089973525,275.01723225349,278.02504100089,279.3825851464,280.74675792544,285.20305567028,287.36494472201,291.02352619417,291.92629305093,292.44453950566,297.08651632321,299.33848408543,304.08988859472,305.57470250388,310.42509460711,311.94084213937,312.778171126,319.29438302446,320.85343762907,325.94634933747,328.4170796823,333.63004920107,334.22233086361,335.25910217568,339.52744722653,342.10112466906,347.53130125111,349.228231433],description:"81/80, 126/125 and 4194304/4117715, Gene Ward Smith, 2002"},pipedum_81:{frequencies:[116.54094037952,117.10998793997,118.96887663743,119.87068153322,121.77339076391,122.3679873985,122.96548733697,124.86529326377,124.9173204693,126.84728204574,127.4666535401,128.08904930934,130.12220882219,130.47149010419,131.10855792696,133.18964614802,133.83998621711,135.96443044277,136.62831926329,136.99506460939,139.16958944446,139.84912845542,140.53198552796,142.70319230145,142.76265196491,144.96832233798,145.6761754744,146.38748492496,148.71109579678,149.83835191653,152.21673845488,152.95998424812,153.70685917121,155.38792050603,156.14665058662,156.56578812502,159.82757537763,160.60798346053,163.08936263023,163.15731653133,163.95398311595,166.48705768503,167.29998277138,169.12970939431,169.95553805347,170.78539907912,173.96198680558,174.81141056928,175.66498190995,177.58619486403,178.45331495614,182.66008614586,183.55198109774,184.08675852442,184.44823100545,186.46550460723,187.37598070395,190.2709230686,191.19998031015,193.29109645065,194.23490063253,195.18331323328,199.78446922203,200.75997932566,202.95565127318,203.94664566416,204.94247889494,208.7543841667,209.77369268314,210.79797829194,213.10343383684,214.14397794737,217.45248350698,218.5142632116,218.60531082127,221.98274358004,223.06664369518,227.71386543882,228.32510768232,229.43997637218,231.94931574077,233.08188075904],description:"81/80, 126/125 and 17294403/16777216, Gene Ward Smith, 2002"},pipedum_87:{frequencies:[82.40688922822,83.34286871081,83.43697534357,84.3846545697,84.87648045204,85.84050961273,86.81548824043,86.91351598289,87.90068184343,87.99993493267,88.99944036648,90.43280025045,90.53491248218,91.56321025358,92.60318745646,92.70775038175,93.76072729966,93.86659726152,95.37834401414,96.46165360048,96.57057331432,97.66742427048,97.77770548075,98.88826707386,100.01144245297,100.59434720242,101.73690028175,101.85177654245,103.00861153527,104.17858588852,104.29621917947,105.48081821212,105.59992191921,107.30063701591,108.51936030054,108.64189497861,109.87585230429,111.12382494775,111.2493004581,112.5128727596,113.16864060272,114.45401281697,115.75398432057,115.88468797718,117.20090912458,117.3332465769,118.66592048864,120.5770670006,120.7132166429,122.0842803381,122.22213185094,123.61033384233,125.01430306622,125.15546301536,127.17112535219,128.61553813397,128.76076441909,130.22323236064,130.37027397433,131.85102276515,133.3485899373,133.49916054972,135.64920037567,135.80236872326,137.34481538037,138.90478118469,139.06162557262,140.6410909495,140.79989589228,143.06751602122,144.69248040072,144.85585997148,146.50113640572,146.66655822112,148.3324006108,150.01716367946,150.89152080363,152.60535042263,154.33864576076,154.51291730291,156.26787883277,156.4443287692,158.22122731818,160.76942266746,160.95095552387,162.7790404508,162.96284246792,164.81377845644],description:"67108864/66430125 and 15625/15552, Op de Coul"},pipedum_9:{frequencies:[261.6255653006,280.31310567921,305.22982618403,327.03195662575,348.83408706747,392.4383479509,420.46965851882,448.50096908674,490.54793493862,523.2511306012],description:"225/224, 49/48 and 36/35 are homophonic intervals"},pipedum_99:{frequencies:[41.20344461411,41.53307217102,41.72802550619,42.06184971024,42.3806858888,42.72949811834,42.92025480636,43.26361684482,43.60972577957,43.95034092172,44.14654780083,44.49972018324,44.86597302425,45.06626754668,45.407877738,45.78160512679,46.1478579678,46.35387519087,46.73538856693,47.08965098755,47.46636819545,47.68917200707,48.07068538313,48.45525086619,48.65129757643,49.0517197787,49.44413353693,49.83968660523,50.07363060743,50.47421965228,50.85682306656,51.275397742,51.50430576764,51.91634021378,52.34363519496,52.55541404861,52.975857361,53.41187264792,53.8391676291,54.07952105602,54.50191086522,54.93792615215,55.37742956136,55.62465022905,56.08246628032,56.50758118507,56.7598471725,57.22700640849,57.68482245975,58.14630103943,58.41923570866,58.86206373444,59.33296024432,59.82129736567,60.08835672891,60.56906358274,61.04214016905,61.31464972338,61.80516692116,62.29960825653,62.81236223395,63.06649685833,63.5710288332,64.0942471775,64.60700115492,64.89542526722,65.40229303827,65.92551138258,66.21982170125,66.7648408099,67.29895953638,67.80909742208,68.12738858153,68.67240769018,69.2217869517,69.77556124732,70.1030828504,70.63447648133,71.19955229318,71.53375801061,72.10602807469,72.68287629929,73.25056820286,73.57757966805,74.1662003054,74.77662170709,75.37483468075,75.67979623,76.30267521131,76.91309661301,77.25645865146,77.87451032067,78.48275164592,79.11061365909,79.4637860415,80.11780897188,80.75875144366,81.37091690649,81.75286629784,82.40688922822],description:"2401/2400, 3136/3125 and 4375/4374, Gene Ward Smith, 2002"},pipedum_9a:{frequencies:[261.6255653006,282.62020942966,305.22982618403,329.72357766794,356.10146388137,384.67750727926,415.4517078616,448.79042515914,484.69365917187,523.2511306012],description:"4375/4374, 2401/2400 and 21/20 are homophonic intervals"},pipedum_9b:{frequencies:[261.6255653006,279.06726965397,306.59245933664,327.03195662575,357.20610515709,383.2405741708,418.60090448096,446.50763144636,490.54793493862,523.2511306012],description:"128/125 and 2109375/2097152 are homophonic intervals"},pipedum_9c:{frequencies:[261.6255653006,285.40970760065,305.22982618403,332.97799220076,348.83408706747,392.4383479509,411.12588832951,448.50096908674,479.64686971777,523.2511306012],description:"49/48, 21/20, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9d:{frequencies:[261.6255653006,277.4816601673,308.34441624714,327.03195662575,346.85207520913,394.68085279633,418.60090448096,443.97065626768,493.35106599542,523.2511306012],description:"128/125, 36/35, 99/98 and 121/120, Gene Ward Smith, 2002"},pipedum_9e:{frequencies:[261.6255653006,272.52663052146,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,502.32108537715,523.2511306012],description:"21/20, 27/25 and 128/125"},polansky_ps:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1046.5022612024,1308.127826503,1569.7533918036,1831.3789571042,2093.0045224048,2354.6300877054,2616.255653006,2877.8812183066,3139.5067836072,3401.1323489078,3662.7579142084,3924.383479509,4186.0090448096,4447.6346101102,327.03195662575,654.0639132515,981.09586987725,1308.127826503,1635.15978312875,1962.1917397545,2289.22369638025,2616.255653006,2943.28760963175,3270.3195662575,3597.35152288325,3924.383479509,4251.41543613475,4578.4473927605,4905.47934938625,5232.511306012,5559.54326263775,392.4383479509,784.8766959018,1177.3150438527,1569.7533918036,1962.1917397545,2354.6300877054,2747.0684356563,3139.5067836072,3531.9451315581,3924.383479509,4316.8218274599,4709.2601754108,5101.6985233617,5494.1368713126,5886.5752192635,6279.0135672144,6671.4519151653],description:"Three interlocking harmonic series on 1:5:3 by Larry Polansky in Psaltery"},poole:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"Poole's double diatonic or dichordal scale"},porcupine:{frequencies:[261.6255653006,268.5059110196,275.56719913678,277.81869773502,285.12489766782,287.45448663717,295.01409284105,302.77250493809,305.24628043356,313.27378316024,315.83336022842,324.13928669805,332.66364612382,335.38164643474,344.20166244741,347.01393314922,356.13986022226,365.50578499276,368.49211923405,378.18288921726,381.27279846892,391.29968045081,401.5902538439,404.87141319969,415.51890206933,418.91386427268,429.93064777916,441.23715556831,444.84224659643,456.54090625717,460.27103529174,472.37544811397,484.79818817936,488.75918813348,501.6127950959,505.71118020326,519.01059820838,523.2511306012],description:"porcupine temperament, g=162.996, 5-limit"},portbag1:{frequencies:[261.6255653006,281.75060878526,311.64221749042,334.88072358477,376.74081403286,413.43299207996,457.84473927605,523.2511306012],description:"Portugese bagpipe tuning"},portbag2:{frequencies:[261.6255653006,274.70684356563,281.75060878526,310.07474405997,317.68818643644,343.38355445704,372.08969287196,392.4383479509,408.78994578219,482.37213602298,523.2511306012],description:"Portugese bagpipe tuning 2"},prelleur:{frequencies:[261.6255653006,276.42153822591,293.20376052703,310.91918875105,328.72923110101,349.43408698743,368.89538496172,391.53834819612,414.55891854195,438.90564190541,466.17878415199,492.19384741628,523.2511306012],description:"Peter Prelleur's well temperament (1731)"},preston:{frequencies:[261.6255653006,276.24946721727,293.45376109391,311.26733605541,328.91048112005,349.30075403587,368.79929095641,391.73834630677,413.67420227347,439.48064068428,466.20100528964,492.6657196346,523.2511306012],description:"Preston's equal beating temperament (1785)"},preston2:{frequencies:[261.6255653006,276.2302000593,293.37610901672,311.58628319174,328.97985807656,349.39999567988,368.9044325484,391.80273191286,413.67420227347,439.35140993827,466.62242981045,492.67053466508,523.2511306012],description:"Preston's theoretically correct well temperament"},prime_10:{frequencies:[261.6255653006,277.97716313189,310.68035879446,327.03195662575,359.73515228832,376.08675011961,392.4383479509,425.14154361347,457.84473927605,474.19633710734,523.2511306012],description:"First 10 prime numbers reduced by 2/1"},prime_5:{frequencies:[261.6255653006,294.32876096318,327.03195662575,392.4383479509,436.04260883433,523.2511306012],description:'What Lou Harrison calls "the Prime Pentatonic", a widely used scale'},primes6:{frequencies:[261.6255653006,523.2511306012,784.8766959018,1308.127826503,1831.3789571042,2877.8812183066,3401.1323489078],description:"First 6 primes"},prinz:{frequencies:[261.6255653006,275.62199471997,292.50627485027,310.07474405997,327.03195662575,348.83408706747,367.49599295996,391.22147055517,413.43299207996,437.39890198442,465.11211608996,490.54793493862,523.2511306012],description:"Prinz well-tempermament (1808)"},prinz2:{frequencies:[261.6255653006,275.62199471997,291.81313052759,310.07474405997,327.03195662575,348.83408706747,367.49599295996,390.42584360243,413.43299207996,436.71344361716,465.11211608996,490.54793493862,523.2511306012],description:"Prinz equal beating temperament (1808)"},"prod13-2":{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,343.38355445704,345.42750418595,359.73515228832,371.99885066179,392.4383479509,400.61414686654,408.78994578219,425.14154361347,449.66894036041,457.84473927605,490.54793493862,494.63583439645,523.2511306012],description:"13-limit binary products [1 3 5 7 11 13]"},prod13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,286.15296204753,292.28481123426,294.32876096318,314.76825825228,318.85615771011,327.03195662575,331.11985608357,343.38355445704,345.42750418595,359.73515228832,367.91095120397,371.99885066179,392.4383479509,400.61414686654,404.70204632437,408.78994578219,425.14154361347,441.49314144476,449.66894036041,457.84473927605,478.28423656516,490.54793493862,494.63583439645,515.07533168556,523.2511306012],description:"13-limit binary products [1 3 5 7 9 11 13]"},prod7d:{frequencies:[261.6255653006,265.7783520514,267.90457886781,273.37201925287,279.06726965397,286.15296204753,294.32876096318,299.00064605783,300.46061014991,306.59245933664,310.07474405997,318.93402246168,327.03195662575,334.88072358477,341.71502406609,343.38355445704,348.83408706747,350.53737850823,357.69120255941,367.91095120397,372.08969287196,382.72082695402,390.53145607553,392.4383479509,398.6675280771,400.61414686654,408.78994578219,418.60090448096,429.2294430713,441.49314144476,446.50763144636,455.62003208812,457.84473927605,465.11211608996,478.40103369253,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Double Cubic Corner 7-limit. Chalmers '96"},prod7s:{frequencies:[261.6255653006,286.15296204753,294.32876096318,300.46061014991,306.59245933664,327.03195662575,343.38355445704,350.53737850823,357.69120255941,367.91095120397,392.4383479509,400.61414686654,408.78994578219,429.2294430713,441.49314144476,457.84473927605,490.54793493862,500.76768358318,510.98743222773,515.07533168556,523.2511306012],description:"Single Cubic Corner 7-limit"},prodq13:{frequencies:[261.6255653006,265.71346475842,269.80136421624,276.76092858245,279.06726965397,286.15296204753,292.28481123426,294.32876096318,299.00064605783,304.4370214407,314.76825825228,318.85615771011,322.00069575458,327.03195662575,334.88072358477,341.71502406609,343.38355445704,345.42750418595,348.83408706747,359.73515228832,368.0007951481,371.99885066179,380.54627680087,392.4383479509,396.30854862103,400.61414686654,408.78994578219,418.60090448096,425.14154361347,429.33426100611,434.91003062957,449.66894036041,457.84473927605,465.11211608996,468.3646483703,478.40103369253,490.54793493862,494.63583439645,507.3950357345,515.20111320734,523.2511306012],description:"13-limit Binary products and quotients. Chalmers '96"},prog_ennea:{frequencies:[261.6255653006,269.29177952703,285.30470202322,311.12698372208,349.22823143301,391.99543598175,403.48177901006,427.47405410759,466.16376151809,523.2511306012],description:"Progressive Enneatonic, 50+100+150+200 cents in each half (500 cents)"},prog_ennea1:{frequencies:[261.6255653006,269.10058145205,285.40970760065,310.68035879446,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prog_ennea2:{frequencies:[261.6255653006,269.55361273395,285.40970760065,321.08592105074,348.83408706747,392.4383479509,404.33041910093,428.11456140098,481.6288815761,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+200+150 cents in each half (500 cents)"},prog_ennea3:{frequencies:[261.6255653006,269.55361273395,285.40970760065,310.07474405997,348.83408706747,392.4383479509,404.33041910093,428.11456140098,465.11211608996,523.2511306012],description:"Progressive Enneatonic, appr. 50+100+150+200 cents in each half (500 cents)"},prooijen1:{frequencies:[261.6255653006,339.14425131559,366.27579142084,436.04260883433,470.92601754108,610.45965236807,726.73768139056,784.8766959018],description:"Kees van Prooijen, major mode of Bohlen-Pierce"},prooijen2:{frequencies:[261.6255653006,311.45900631024,336.37572681506,436.04260883433,470.92601754108,560.62621135843,726.73768139056,784.8766959018],description:"Kees van Prooijen, minor mode of Bohlen-Pierce"},"ps-dorian":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 4 of p. 115 based on Archytas's Enharmonic"},"ps-enh":{frequencies:[261.6255653006,266.38239376061,279.06726965397,348.83408706747,392.4383479509,399.57359064092,418.60090448096,523.2511306012],description:"Dorian mode of an Enharmonic genus found in Ptolemy's Harmonics"},"ps-hypod":{frequencies:[261.6255653006,294.32876096318,367.91095120397,378.42269266694,392.4383479509,406.97310157871,418.60090448096,523.2511306012],description:"Complex 7 of p. 115 based on Archytas's Enharmonic"},"ps-hypod2":{frequencies:[261.6255653006,294.32876096318,305.22982618403,313.95067836072,392.4383479509,490.54793493862,504.56359022259,523.2511306012],description:"Complex 8 of p. 115 based on Archytas's Enharmonic"},"ps-mixol":{frequencies:[261.6255653006,271.31540105247,279.06726965397,348.83408706747,436.04260883433,448.50096908674,465.11211608996,523.2511306012],description:"Complex 3 of p. 115 based on Archytas's Enharmonic"},ptolemy:{frequencies:[261.6255653006,294.32876096318,327.03195662575,348.83408706747,392.4383479509,436.04260883433,490.54793493862,523.2511306012],description:"Intense Diatonic Syntonon, also Zarlino's scale"},ptolemy_chrom:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,436.04260883433,523.2511306012],description:"Ptolemy Soft Chromatic"},ptolemy_ddiat:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,413.43299207996,465.11211608996,523.2511306012],description:"Lyra tuning, Dorian mode, comb. of diatonon toniaion & diatonon ditoniaion"},ptolemy_diat:{frequencies:[261.6255653006,290.69507255622,313.95067836072,348.83408706747,392.4383479509,436.04260883433,470.92601754108,523.2511306012],description:"Ptolemy's Diatonon Ditoniaion & Archytas' Diatonic, also Lyra tuning"},ptolemy_diat2:{frequencies:[261.6255653006,271.31540105247,305.22982618403,348.83408706747,392.4383479509,406.97310157871,457.84473927605,523.2511306012],description:"Dorian mode of a permutation of Ptolemy's Tonic Diatonic"},ptolemy_diat3:{frequencies:[261.6255653006,294.32876096318,313.95067836072,348.83408706747,392.4383479509,441.49314144476,470.92601754108,523.2511306012],description:"Dorian mode of the remaining permutation of Ptolemy's Intense Diatonic"},ptolemy_diat4:{frequencies:[261.6255653006,299.00064605783,310.07474405997,348.83408706747,392.4383479509,448.50096908674,465.11211608996,523.2511306012],description:"permuted Ptolemy's diatonic"},ptolemy_diat5:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Sterea lyra, Dorian, comb. of 2 Tonic Diatonic 4chords, also Archytas' diatonic"},ptolemy_diff:{frequencies:[261.6255653006,294.32876096318,327.03195662575,343.38355445704,392.4383479509,425.14154361347,490.54793493862,523.2511306012],description:"Difference tones of Intense Diatonic reduced by 2/1"},ptolemy_enh:{frequencies:[261.6255653006,267.43946675172,279.06726965397,348.83408706747,392.4383479509,401.15920012759,418.60090448096,523.2511306012],description:"Dorian mode of Ptolemy's Enharmonic"},ptolemy_exp:{frequencies:[261.6255653006,272.52663052146,275.93321340298,287.4304306281,290.69507255622,294.32876096318,306.59245933664,327.03195662575,340.65828815182,344.91651675372,348.83408706747,363.36884069528,367.91095120397,383.2405741708,392.4383479509,408.78994578219,413.89982010446,431.14564594215,436.04260883433,441.49314144476,459.88868900496,490.54793493862,510.98743222773,517.37477513058,523.2511306012],description:"Intense Diatonic expanded: all interval combinations"},ptolemy_hom:{frequencies:[261.6255653006,285.40970760065,313.95067836072,348.83408706747,392.4383479509,428.11456140098,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Equable Diatonic or Diatonon Homalon"},ptolemy_iast:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Ptolemy's Iastia or Lydia tuning, mixture of Tonic Diatonic & Intense Diatonic"},ptolemy_iastaiol:{frequencies:[261.6255653006,271.31540105247,310.07474405997,348.83408706747,392.4383479509,441.49314144476,465.11211608996,523.2511306012],description:"Ptolemy's kithara tuning, mixture of Tonic Diatonic and Ditone Diatonic"},ptolemy_ichrom:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,411.12588832951,448.50096908674,523.2511306012],description:"Dorian mode of Ptolemy's Intense Chromatic"},ptolemy_idiat:{frequencies:[261.6255653006,279.06726965397,313.95067836072,348.83408706747,392.4383479509,418.60090448096,470.92601754108,523.2511306012],description:"Dorian mode of Ptolemy's Intense Diatonic (Diatonon Syntonon)"},ptolemy_imix:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,327.03195662575,348.83408706747,392.4383479509,418.60090448096,436.04260883433,465.11211608996,490.54793493862,523.2511306012],description:"Ptolemy Intense Diatonic mixed with its inverse"},ptolemy_malak:{frequencies:[261.6255653006,274.08392555301,299.00064605783,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Ptolemy's Malaka lyra tuning, a mixture of Intense Chrom. & Tonic Diatonic"},ptolemy_malak2:{frequencies:[261.6255653006,271.31540105247,290.69507255622,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Malaka lyra, mixture of his Soft Chromatic and Tonic Diatonic."},ptolemy_mdiat:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,412.06026534844,457.84473927605,523.2511306012],description:"Ptolemy soft diatonic"},ptolemy_mdiat2:{frequencies:[261.6255653006,290.69507255622,305.22982618403,348.83408706747,392.4383479509,436.04260883433,457.84473927605,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_mdiat3:{frequencies:[261.6255653006,299.00064605783,313.95067836072,348.83408706747,392.4383479509,448.50096908674,470.92601754108,523.2511306012],description:"permuted Ptolemy soft diatonic"},ptolemy_meta:{frequencies:[261.6255653006,274.70684356563,305.22982618403,348.83408706747,392.4383479509,406.97310157871,465.11211608996,523.2511306012],description:"Metabolika lyra tuning, mixture of Soft Diatonic & Tonic Diatonic"},ptolemy_mix:{frequencies:[261.6255653006,279.06726965397,290.69507255622,294.32876096318,310.07474405997,313.95067836072,327.03195662575,348.83408706747,353.19451315581,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,470.92601754108,490.54793493862,523.2511306012],description:"All modes of Ptolemy Intense Diatonic mixed"},ptolemy_prod:{frequencies:[261.6255653006,272.52663052146,275.93321340298,279.06726965397,290.69507255622,294.32876096318,313.95067836072,327.03195662575,331.11985608357,348.83408706747,363.36884069528,367.91095120397,372.08969287196,387.59343007496,392.4383479509,418.60090448096,436.04260883433,441.49314144476,465.11211608996,484.4917875937,490.54793493862,523.2511306012],description:"Product of Intense Diatonic with its intervals"},ptolemy_tree:{frequencies:[261.6255653006,294.32876096318,299.00064605783,305.22982618403,313.95067836072,327.03195662575,348.83408706747,392.4383479509,436.04260883433,457.84473927605,470.92601754108,479.64686971777,485.87604984397,490.54793493862,523.2511306012],description:"Intense Diatonic with all their Farey parent fractions"},pygmie:{frequencies:[261.6255653006,299.00064605783,343.38355445704,392.4383479509,457.84473927605,523.2511306012],description:"Pygmie scale"},pyle:{frequencies:[261.6255653006,277.19063644077,293.6461094938,311.15753660095,329.66944764997,349.23831768549,369.99228554622,391.93430587921,415.28070933274,439.96441988338,466.23108306565,493.99742571239,523.2511306012],description:"Howard Willet Pyle quasi equal temperament"},pyramid:{frequencies:[261.6255653006,294.32876096318,306.59245933664,327.03195662575,348.83408706747,367.91095120397,392.4383479509,408.78994578219,436.04260883433,441.49314144476,465.11211608996,490.54793493862,523.2511306012],description:'This scale may also be called the "Wedding Cake"'},pyramid_down:{frequencies:[261.6255653006,279.06726965397,294.32876096318,313.95067836072,334.88072358477,348.83408706747,392.4383479509,418.60090448096,441.49314144476,465.11211608996,470.92601754108,502.32108537715,523.2511306012],description:"Upside-Down Wedding Cake (divorce cake)"},pyth_12:{frequencies:[261.6255653006,279.38237857051,294.32876096318,310.07474405997,331.11985608357,348.83408706747,372.50983809402,392.4383479509,419.07356785577,441.49314144476,465.11211608996,496.67978412536,523.2511306012],description:"12-tone Pythagorean scale"},pyth_12s:{frequencies:[261.6255653006,279.38237857051,294.32876096318,314.30517589183,326.6631048533,348.83408706747,367.49599295996,392.4383479509,419.07356785577,435.55080647107,471.45776383774,489.99465727995,523.2511306012],description:"Scale with major thirds flat by a schisma"},pyth_17:{frequencies:[261.6255653006,275.62199471997,279.38237857051,294.32876096318,310.07474405997,314.30517589183,331.11985608357,348.83408706747,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,441.49314144476,465.11211608996,471.45776383774,496.67978412536,523.2511306012],description:"17-tone Pythagorean scale"},pyth_17s:{frequencies:[261.6255653006,275.62199471997,279.06726965397,294.32876096318,310.07474405997,313.95067836072,331.11985608357,348.83408706747,367.49599295996,372.08969287196,392.4383479509,413.43299207996,418.60090448096,441.49314144476,465.11211608996,470.92601754108,496.67978412536,523.2511306012],description:"Schismatically altered 17-tone Pythagorean scale"},pyth_22:{frequencies:[261.6255653006,275.62199471997,279.38237857051,290.36720431405,294.32876096318,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,392.4383479509,413.43299207996,419.07356785577,435.55080647107,441.49314144476,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"Pythagorean shrutis"},pyth_27:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,290.36720431405,294.32876096318,298.34436617857,310.07474405997,314.30517589183,326.6631048533,331.11985608357,348.83408706747,353.59332287831,367.49599295996,372.50983809402,387.15627241873,392.4383479509,397.79248823809,413.43299207996,419.07356785577,435.55080647107,441.49314144476,447.51654926786,465.11211608996,471.45776383774,489.99465727995,496.67978412536,523.2511306012],description:"27-tone Pythagorean scale"},pyth_31:{frequencies:[261.6255653006,265.19499215873,275.62199471997,279.38237857051,283.19406633357,294.32876096318,298.34436617857,310.07474405997,314.30517589183,318.59332496145,326.6631048533,331.11985608357,335.63741195089,348.83408706747,353.59332287831,367.49599295996,372.50983809402,377.59208844475,392.4383479509,397.79248823809,413.43299207996,419.07356785577,424.79110016094,441.49314144476,447.51654926786,465.11211608996,471.45776383774,477.8899872033,489.99465727995,496.67978412536,503.45611792634,523.2511306012],description:"31-tone Pythagorean scale"},pyth_7a:{frequencies:[261.6255653006,277.97716313189,294.32876096318,312.72430852337,331.11985608357,348.83408706747,370.63621750918,392.4383479509,416.96574469783,441.49314144476,469.08646278506,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided arithmetically"},pyth_7h:{frequencies:[261.6255653006,277.01530443593,294.32876096318,311.64221749042,331.11985608357,348.83408706747,369.35373924791,392.4383479509,415.52295665389,441.49314144476,467.46332623563,496.67978412536,523.2511306012],description:"Pythagorean 7-tone with whole tones divided harmonically"},pyth_chrom:{frequencies:[261.6255653006,275.62199471997,294.32876096318,348.83408706747,392.4383479509,413.43299207996,441.49314144476,465.11211608996,523.2511306012],description:"Dorian mode of the so-called Pythagorean chromatic, recorded by Gaudentius"},pyth_sev:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,291.47537246454,299.00064605783,306.7202061947,314.63906894008,322.76237975718,333.11471138804,341.71502406609,350.53737850823,359.58750736009,368.87129039875,380.70252730062,390.53145607553,400.61414686654,410.95715126868,421.56719060242,435.08860262928,446.32166408632,457.84473927605,469.66531573563,481.7910743145,497.2441172906,510.08190181294,523.2511306012],description:"26-tone Pythagorean scale based on 7/4"},pyth_sev_16:{frequencies:[261.6255653006,268.38018042036,275.30918532257,282.41708286353,306.7202061947,314.63906894008,322.76237975718,350.53737850823,359.58750736009,368.87129039875,400.61414686654,410.95715126868,421.56719060242,457.84473927605,469.66531573563,481.7910743145,523.2511306012],description:'16-tone Pythagorean scale based on 7/4, "Armodue"'},pyth_third:{frequencies:[261.6255653006,267.90457886781,274.33428876064,280.9183116909,287.66035117148,290.46272611903,297.43383186155,304.57224382623,311.88197767806,319.36714514233,327.03195662575,334.88072358477,342.9178609508,351.14788961362,359.57543896435,363.07840893547,371.79228894479,380.71530478279,389.85247209758,399.20893142792,408.78994578219,418.60090448096,428.6473261885,438.93486201703,449.46929870544,453.84801015616,464.74036282794,475.89413097849,487.31559012197,499.0111642849,510.98743222773,523.2511306012],description:"Cycle of 5/4 thirds"}};o.prototype._tune=function(i,n=220){const e=new t;if(!e.isValidScale(i))throw new Error('not a valid tune.js scale name: "'+i+'". See http://abbernie.github.io/tune/scales.html');return e.loadScale(i),e.tonicize(n),this._asNumber()._withHap(r=>r.withValue(()=>e.note(r.value)).setContext({...r.context,type:"frequency"}))};o.prototype.define("tune",(i,n)=>n.tune(i),{composable:!0,patternified:!0}); diff --git a/packages/react/examples/nano-repl/dist/assets/index.75f8960b.css b/packages/react/examples/nano-repl/dist/assets/index.75f8960b.css deleted file mode 100644 index 61ea9b3df..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.75f8960b.css +++ /dev/null @@ -1 +0,0 @@ -.cm-editor{background-color:transparent!important;height:100%;z-index:11;font-size:16px}.cm-theme-light{width:100%}.cm-line>*{background:#00000095}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.fixed{position:fixed}.absolute{position:absolute}.bottom-0{bottom:0px}.z-\[12\]{z-index:12}.flex{display:flex}.w-full{width:100%}.justify-center{justify-content:center}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.rounded-t-md{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}body{background:#123} diff --git a/packages/react/examples/nano-repl/dist/assets/index.bb9bb2c4.js b/packages/react/examples/nano-repl/dist/assets/index.bb9bb2c4.js deleted file mode 100644 index f1e6bb659..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.bb9bb2c4.js +++ /dev/null @@ -1,8 +0,0 @@ -import{b as ut,d as Se,e as pt}from"./index.ec9f9930.js";function gt(a,c){function r(){this.constructor=a}r.prototype=c.prototype,a.prototype=new r}function D(a,c,r,_){var p=Error.call(this,a);return Object.setPrototypeOf&&Object.setPrototypeOf(p,D.prototype),p.expected=c,p.found=r,p.location=_,p.name="SyntaxError",p}gt(D,Error);function U(a,c,r){return r=r||" ",a.length>c?a:(c-=a.length,r+=r.repeat(c),a+r.slice(0,c))}D.prototype.format=function(a){var c="Error: "+this.message;if(this.location){var r=null,_;for(_=0;_ `+$+` -`+A+` | -`+p.line+" | "+E+` -`+A+" | "+U("",p.column-1," ")+U("",h,"^")}else c+=` - at `+$}return c};D.buildMessage=function(a,c){var r={literal:function(m){return'"'+p(m.text)+'"'},class:function(m){var h=m.parts.map(function(b){return Array.isArray(b)?$(b[0])+"-"+$(b[1]):$(b)});return"["+(m.inverted?"^":"")+h.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(m){return m.description}};function _(m){return m.charCodeAt(0).toString(16).toUpperCase()}function p(m){return m.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(h){return"\\x0"+_(h)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(h){return"\\x"+_(h)})}function $(m){return m.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(h){return"\\x0"+_(h)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(h){return"\\x"+_(h)})}function w(m){return r[m.type](m)}function A(m){var h=m.map(w),b,F;if(h.sort(),h.length>0){for(b=1,F=1;b",Me="@",We="!",Ze="(",Ge=")",Ue="/",Xe="*",He="%",Je="?",V="struct",Y="target",ee="euclid",re="slow",se="rotL",te="rotR",ne="fast",ae="scale",ie="//",fe="cat",Ke="$",oe="setcps",ce="setbpm",le="hush",Qe=/^[1-9]/,Ve=/^[eE]/,Ye=/^[0-9]/,ue=/^[ \n\r\t]/,er=/^[0-9a-zA-Z~]/,pe=/^[^\n]/,rr=Ae("number"),ge=g(".",!1),sr=j([["1","9"]],!1,!1),tr=j(["e","E"],!1,!1),ve=g("-",!1),nr=g("+",!1),ar=g("0",!1),ir=j([["0","9"]],!1,!1),fr=Ae("whitespace"),$e=j([" ",` -`,"\r"," "],!1,!1),or=g(",",!1),cr=g("|",!1),lr=g('"',!1),ur=g("'",!1),pr=j([["0","9"],["a","z"],["A","Z"],"~"],!1,!1),gr=g("#",!1),vr=g("^",!1),$r=g("_",!1),hr=g(":",!1),he=g("[",!1),me=g("]",!1),mr=g("<",!1),_r=g(">",!1),dr=g("@",!1),Ar=g("!",!1),wr=g("(",!1),yr=g(")",!1),br=g("/",!1),Cr=g("*",!1),xr=g("%",!1),Er=g("?",!1),Fr=g("struct",!1),jr=g("target",!1),Sr=g("euclid",!1),Rr=g("slow",!1),Pr=g("rotL",!1),Or=g("rotR",!1),qr=g("fast",!1),Ir=g("scale",!1),Dr=g("//",!1),_e=j([` -`],!0,!1),kr=g("cat",!1),Nr=g("$",!1),Br=g("setcps",!1),Tr=g("setbpm",!1),zr=g("hush",!1),Lr=function(){return parseFloat(As())},Mr=function(e){return e.join("")},Wr=function(e){return e},Zr=function(e){return e.arguments_.alignment="t",e},Gr=function(e){return{weight:e}},Ur=function(e){return{replicate:e}},Xr=function(e,t,n){return{operator:{type_:"bjorklund",arguments_:{pulse:e,step:t,rotation:n||0}}}},Hr=function(e){return{operator:{type_:"stretch",arguments_:{amount:e}}}},Jr=function(e){return{operator:{type_:"stretch",arguments_:{amount:"1/"+e}}}},Kr=function(e){return{operator:{type_:"fixed-step",arguments_:{amount:e}}}},Qr=function(e){return{operator:{type_:"degradeBy",arguments_:{amount:e||.5}}}},Vr=function(e,t){return new lt(e,t)},Yr=function(e){return new Z(e,"h")},es=function(e){return{alignment:"v",list:e}},rs=function(e){return{alignment:"r",list:e}},ss=function(e,t){return t&&t.list.length>0?new Z([e,...t.list],t.alignment):e},ts=function(e){return e},ns=function(e){return{name:"struct",args:{sequence:e}}},as=function(e){return{name:"target",args:{name:e}}},is=function(e,t,n){return{name:"bjorklund",args:{pulse:parseInt(e),step:parseInt(t)}}},fs=function(e){return{name:"stretch",args:{amount:e}}},os=function(e){return{name:"shift",args:{amount:"-"+e}}},cs=function(e){return{name:"shift",args:{amount:e}}},ls=function(e){return{name:"stretch",args:{amount:"1/"+e}}},us=function(e){return{name:"scale",args:{scale:e.join("")}}},de=function(e,t){return t},ps=function(e,t){return t.unshift(e),new Z(t,"t")},gs=function(e){return e},vs=function(e,t){return new ct(e.name,e.args,t)},$s=function(e){return e},hs=function(e){return e},ms=function(e){return new G("setcps",{value:e})},_s=function(e){return new G("setcps",{value:e/120/2})},ds=function(){return new G("hush")},s=0,v=0,N=[{line:1,column:1}],x=0,L=[],f=0,B;if("startRule"in c){if(!(c.startRule in p))throw new Error(`Can't start parsing from rule "`+c.startRule+'".');$=p[c.startRule]}function As(){return a.substring(v,s)}function ws(){return M(v,s)}function g(e,t){return{type:"literal",text:e,ignoreCase:t}}function j(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function ys(){return{type:"end"}}function Ae(e){return{type:"other",description:e}}function we(e){var t=N[e],n;if(t)return t;for(n=e-1;!N[n];)n--;for(t=N[n],t={line:t.line,column:t.column};nx&&(x=s,L=[]),L.push(e))}function bs(e,t,n){return new D(D.buildMessage(e,t),e,t,n)}function ye(){var e;return e=ot(),e}function y(){var e,t;return f++,e=s,be(),t=T(),t!==r?(js(),Fs(),v=e,e=Lr()):(s=e,e=r),f--,e===r&&f===0&&o(rr),e}function Cs(){var e;return a.charCodeAt(s)===46?(e=w,s++):(e=r,f===0&&o(ge)),e}function xs(){var e;return Qe.test(a.charAt(s))?(e=a.charAt(s),s++):(e=r,f===0&&o(sr)),e}function Es(){var e;return Ve.test(a.charAt(s))?(e=a.charAt(s),s++):(e=r,f===0&&o(tr)),e}function Fs(){var e,t,n,i,l;if(e=s,t=Es(),t!==r){if(n=be(),n===r&&(n=Ss()),n===r&&(n=null),i=[],l=S(),l!==r)for(;l!==r;)i.push(l),l=S();else i=r;i!==r?(t=[t,n,i],e=t):(s=e,e=r)}else s=e,e=r;return e}function js(){var e,t,n,i;if(e=s,t=Cs(),t!==r){if(n=[],i=S(),i!==r)for(;i!==r;)n.push(i),i=S();else n=r;n!==r?(t=[t,n],e=t):(s=e,e=r)}else s=e,e=r;return e}function T(){var e,t,n,i;if(e=Rs(),e===r)if(e=s,t=xs(),t!==r){for(n=[],i=S();i!==r;)n.push(i),i=S();t=[t,n],e=t}else s=e,e=r;return e}function be(){var e;return a.charCodeAt(s)===45?(e=A,s++):(e=r,f===0&&o(ve)),e}function Ss(){var e;return a.charCodeAt(s)===43?(e=E,s++):(e=r,f===0&&o(nr)),e}function Rs(){var e;return a.charCodeAt(s)===48?(e=m,s++):(e=r,f===0&&o(ar)),e}function S(){var e;return Ye.test(a.charAt(s))?(e=a.charAt(s),s++):(e=r,f===0&&o(ir)),e}function u(){var e,t;for(f++,e=[],ue.test(a.charAt(s))?(t=a.charAt(s),s++):(t=r,f===0&&o($e));t!==r;)e.push(t),ue.test(a.charAt(s))?(t=a.charAt(s),s++):(t=r,f===0&&o($e));return f--,t=r,f===0&&o(fr),e}function R(){var e,t,n,i;return e=s,t=u(),a.charCodeAt(s)===44?(n=h,s++):(n=r,f===0&&o(or)),n!==r?(i=u(),t=[t,n,i],e=t):(s=e,e=r),e}function Ce(){var e,t,n,i;return e=s,t=u(),a.charCodeAt(s)===124?(n=b,s++):(n=r,f===0&&o(cr)),n!==r?(i=u(),t=[t,n,i],e=t):(s=e,e=r),e}function P(){var e;return a.charCodeAt(s)===34?(e=F,s++):(e=r,f===0&&o(lr)),e===r&&(a.charCodeAt(s)===39?(e=De,s++):(e=r,f===0&&o(ur))),e}function z(){var e;return er.test(a.charAt(s))?(e=a.charAt(s),s++):(e=r,f===0&&o(pr)),e===r&&(a.charCodeAt(s)===45?(e=A,s++):(e=r,f===0&&o(ve)),e===r&&(a.charCodeAt(s)===35?(e=ke,s++):(e=r,f===0&&o(gr)),e===r&&(a.charCodeAt(s)===46?(e=w,s++):(e=r,f===0&&o(ge)),e===r&&(a.charCodeAt(s)===94?(e=Ne,s++):(e=r,f===0&&o(vr)),e===r&&(a.charCodeAt(s)===95?(e=Be,s++):(e=r,f===0&&o($r)),e===r&&(a.charCodeAt(s)===58?(e=Te,s++):(e=r,f===0&&o(hr)))))))),e}function xe(){var e,t,n;if(e=s,u(),t=[],n=z(),n!==r)for(;n!==r;)t.push(n),n=z();else t=r;return t!==r?(n=u(),v=e,e=Mr(t)):(s=e,e=r),e}function Ps(){var e,t,n,i;return e=s,u(),a.charCodeAt(s)===91?(t=K,s++):(t=r,f===0&&o(he)),t!==r?(u(),n=Fe(),n!==r?(u(),a.charCodeAt(s)===93?(i=Q,s++):(i=r,f===0&&o(me)),i!==r?(u(),v=e,e=Wr(n)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r),e}function Os(){var e,t,n,i;return e=s,u(),a.charCodeAt(s)===60?(t=ze,s++):(t=r,f===0&&o(mr)),t!==r?(u(),n=O(),n!==r?(u(),a.charCodeAt(s)===62?(i=Le,s++):(i=r,f===0&&o(_r)),i!==r?(u(),v=e,e=Zr(n)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r),e}function qs(){var e;return e=xe(),e===r&&(e=Ps(),e===r&&(e=Os())),e}function Is(){var e;return e=Ds(),e===r&&(e=Ns(),e===r&&(e=Bs(),e===r&&(e=Ts(),e===r&&(e=zs(),e===r&&(e=ks(),e===r&&(e=Ls())))))),e}function Ds(){var e,t,n;return e=s,a.charCodeAt(s)===64?(t=Me,s++):(t=r,f===0&&o(dr)),t!==r?(n=y(),n!==r?(v=e,e=Gr(n)):(s=e,e=r)):(s=e,e=r),e}function ks(){var e,t,n;return e=s,a.charCodeAt(s)===33?(t=We,s++):(t=r,f===0&&o(Ar)),t!==r?(n=y(),n!==r?(v=e,e=Ur(n)):(s=e,e=r)):(s=e,e=r),e}function Ns(){var e,t,n,i,l,d,C;return e=s,a.charCodeAt(s)===40?(t=Ze,s++):(t=r,f===0&&o(wr)),t!==r?(u(),n=y(),n!==r?(u(),i=R(),i!==r?(u(),l=y(),l!==r?(u(),R(),u(),d=y(),d===r&&(d=null),u(),a.charCodeAt(s)===41?(C=Ge,s++):(C=r,f===0&&o(yr)),C!==r?(v=e,e=Xr(n,l,d)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r),e}function Bs(){var e,t,n;return e=s,a.charCodeAt(s)===47?(t=Ue,s++):(t=r,f===0&&o(br)),t!==r?(n=y(),n!==r?(v=e,e=Hr(n)):(s=e,e=r)):(s=e,e=r),e}function Ts(){var e,t,n;return e=s,a.charCodeAt(s)===42?(t=Xe,s++):(t=r,f===0&&o(Cr)),t!==r?(n=y(),n!==r?(v=e,e=Jr(n)):(s=e,e=r)):(s=e,e=r),e}function zs(){var e,t,n;return e=s,a.charCodeAt(s)===37?(t=He,s++):(t=r,f===0&&o(xr)),t!==r?(n=y(),n!==r?(v=e,e=Kr(n)):(s=e,e=r)):(s=e,e=r),e}function Ls(){var e,t,n;return e=s,a.charCodeAt(s)===63?(t=Je,s++):(t=r,f===0&&o(Er)),t!==r?(n=y(),n===r&&(n=null),v=e,e=Qr(n)):(s=e,e=r),e}function Ee(){var e,t,n;return e=s,t=qs(),t!==r?(n=Is(),n===r&&(n=null),v=e,e=Vr(t,n)):(s=e,e=r),e}function O(){var e,t,n;if(e=s,t=[],n=Ee(),n!==r)for(;n!==r;)t.push(n),n=Ee();else t=r;return t!==r&&(v=e,t=Yr(t)),e=t,e}function Ms(){var e,t,n,i,l;if(e=s,t=[],n=s,i=R(),i!==r?(l=O(),l!==r?n=l:(s=n,n=r)):(s=n,n=r),n!==r)for(;n!==r;)t.push(n),n=s,i=R(),i!==r?(l=O(),l!==r?n=l:(s=n,n=r)):(s=n,n=r);else t=r;return t!==r&&(v=e,t=es(t)),e=t,e}function Ws(){var e,t,n,i,l;if(e=s,t=[],n=s,i=Ce(),i!==r?(l=O(),l!==r?n=l:(s=n,n=r)):(s=n,n=r),n!==r)for(;n!==r;)t.push(n),n=s,i=Ce(),i!==r?(l=O(),l!==r?n=l:(s=n,n=r)):(s=n,n=r);else t=r;return t!==r&&(v=e,t=rs(t)),e=t,e}function Fe(){var e,t,n;return e=s,t=O(),t!==r?(n=Ms(),n===r&&(n=Ws()),n===r&&(n=null),v=e,e=ss(t,n)):(s=e,e=r),e}function Zs(){var e,t,n,i;return e=s,u(),t=P(),t!==r?(n=Fe(),n!==r?(i=P(),i!==r?(v=e,e=ts(n)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r),e}function Gs(){var e;return e=Ys(),e===r&&(e=Js(),e===r&&(e=Vs(),e===r&&(e=Xs(),e===r&&(e=Hs(),e===r&&(e=Us(),e===r&&(e=Qs(),e===r&&(e=Ks()))))))),e}function Us(){var e,t,n;return e=s,a.substr(s,6)===V?(t=V,s+=6):(t=r,f===0&&o(Fr)),t!==r?(u(),n=q(),n!==r?(v=e,e=ns(n)):(s=e,e=r)):(s=e,e=r),e}function Xs(){var e,t,n,i,l;return e=s,a.substr(s,6)===Y?(t=Y,s+=6):(t=r,f===0&&o(jr)),t!==r?(u(),n=P(),n!==r?(i=xe(),i!==r?(l=P(),l!==r?(v=e,e=as(i)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r),e}function Hs(){var e,t,n,i;return e=s,a.substr(s,6)===ee?(t=ee,s+=6):(t=r,f===0&&o(Sr)),t!==r?(u(),n=T(),n!==r?(u(),i=T(),i!==r?(u(),T(),v=e,e=is(n,i)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r),e}function Js(){var e,t,n;return e=s,a.substr(s,4)===re?(t=re,s+=4):(t=r,f===0&&o(Rr)),t!==r?(u(),n=y(),n!==r?(v=e,e=fs(n)):(s=e,e=r)):(s=e,e=r),e}function Ks(){var e,t,n;return e=s,a.substr(s,4)===se?(t=se,s+=4):(t=r,f===0&&o(Pr)),t!==r?(u(),n=y(),n!==r?(v=e,e=os(n)):(s=e,e=r)):(s=e,e=r),e}function Qs(){var e,t,n;return e=s,a.substr(s,4)===te?(t=te,s+=4):(t=r,f===0&&o(Or)),t!==r?(u(),n=y(),n!==r?(v=e,e=cs(n)):(s=e,e=r)):(s=e,e=r),e}function Vs(){var e,t,n;return e=s,a.substr(s,4)===ne?(t=ne,s+=4):(t=r,f===0&&o(qr)),t!==r?(u(),n=y(),n!==r?(v=e,e=ls(n)):(s=e,e=r)):(s=e,e=r),e}function Ys(){var e,t,n,i,l;if(e=s,a.substr(s,5)===ae?(t=ae,s+=5):(t=r,f===0&&o(Ir)),t!==r)if(u(),n=P(),n!==r){if(i=[],l=z(),l!==r)for(;l!==r;)i.push(l),l=z();else i=r;i!==r?(l=P(),l!==r?(v=e,e=us(i)):(s=e,e=r)):(s=e,e=r)}else s=e,e=r;else s=e,e=r;return e}function W(){var e,t,n,i;if(e=s,a.substr(s,2)===ie?(t=ie,s+=2):(t=r,f===0&&o(Dr)),t!==r){for(n=[],pe.test(a.charAt(s))?(i=a.charAt(s),s++):(i=r,f===0&&o(_e));i!==r;)n.push(i),pe.test(a.charAt(s))?(i=a.charAt(s),s++):(i=r,f===0&&o(_e));t=[t,n],e=t}else s=e,e=r;return e}function et(){var e,t,n,i,l,d,C,I;if(e=s,a.substr(s,3)===fe?(t=fe,s+=3):(t=r,f===0&&o(kr)),t!==r)if(u(),a.charCodeAt(s)===91?(n=K,s++):(n=r,f===0&&o(he)),n!==r)if(u(),i=q(),i!==r){for(l=[],d=s,C=R(),C!==r?(I=q(),I!==r?(v=d,d=de(i,I)):(s=d,d=r)):(s=d,d=r);d!==r;)l.push(d),d=s,C=R(),C!==r?(I=q(),I!==r?(v=d,d=de(i,I)):(s=d,d=r)):(s=d,d=r);d=u(),a.charCodeAt(s)===93?(C=Q,s++):(C=r,f===0&&o(me)),C!==r?(v=e,e=ps(i,l)):(s=e,e=r)}else s=e,e=r;else s=e,e=r;else s=e,e=r;return e}function rt(){var e;return e=et(),e===r&&(e=Zs()),e}function q(){var e,t,n,i,l;if(e=s,t=rt(),t!==r){for(u(),n=[],i=W();i!==r;)n.push(i),i=W();v=e,e=gs(t)}else s=e,e=r;return e===r&&(e=s,t=Gs(),t!==r?(u(),a.charCodeAt(s)===36?(n=Ke,s++):(n=r,f===0&&o(Nr)),n!==r?(i=u(),l=q(),l!==r?(v=e,e=vs(t,l)):(s=e,e=r)):(s=e,e=r)):(s=e,e=r)),e}function st(){var e,t;return e=s,t=q(),t!==r&&(v=e,t=$s(t)),e=t,e===r&&(e=W()),e}function tt(){var e;return e=st(),e}function nt(){var e,t;return e=s,u(),t=at(),t===r&&(t=it(),t===r&&(t=ft())),t!==r?(u(),v=e,e=hs(t)):(s=e,e=r),e}function at(){var e,t,n;return e=s,a.substr(s,6)===oe?(t=oe,s+=6):(t=r,f===0&&o(Br)),t!==r?(u(),n=y(),n!==r?(v=e,e=ms(n)):(s=e,e=r)):(s=e,e=r),e}function it(){var e,t,n;return e=s,a.substr(s,6)===ce?(t=ce,s+=6):(t=r,f===0&&o(Tr)),t!==r?(u(),n=y(),n!==r?(v=e,e=_s(n)):(s=e,e=r)):(s=e,e=r),e}function ft(){var e,t;return e=s,a.substr(s,4)===le?(t=le,s+=4):(t=r,f===0&&o(zr)),t!==r&&(v=e,t=ds()),e=t,e}function ot(){var e;return e=tt(),e===r&&(e=nt()),e}var Z=function(e,t){this.type_="pattern",this.arguments_={alignment:t},this.source_=e},ct=function(e,t,n){this.type_=e,this.arguments_=t,this.source_=n},lt=function(e,t){this.type_="element",this.source_=e,this.options_=t,this.location_=ws()},G=function(e,t){this.type_="command",this.name_=e,this.options_=t};if(B=$(),B!==r&&s===a.length)return B;throw B!==r&&s(c,r)=>{const p=a.source_[r].options_,$=p==null?void 0:p.operator;if($){switch($.type_){case"stretch":const A=Pe($.arguments_.amount).inverse();return X(c).fast(A);case"bjorklund":return c.euclid($.arguments_.pulse,$.arguments_.step,$.arguments_.rotation);case"degradeBy":return X(c)._degradeByWith(Se.early(qe*Ie()).segment(1),$.arguments_.amount)}console.warn(`operator "${$.type_}" not implemented`)}if(p!=null&&p.weight)return c;const w=Object.keys(p||{}).filter(A=>A!=="operator");return w.length&&console.warn(`option${w.length>1?"s":""} ${w.map(A=>`"${A}"`).join(", ")} not implemented`),c};function At(a){a.source_=a.source_.map(c=>{const{replicate:r,..._}=c.options_||{};return r?{...c,options_:{..._,weight:r},source_:{type_:"pattern",arguments_:{alignment:"h"},source_:[{type_:"element",source_:c.source_,location_:c.location_,options_:{operator:{type_:"stretch",arguments_:{amount:Pe(r).inverse().toString()}}}}]}}:c})}function k(a){switch(a.type_){case"pattern":At(a);const c=a.source_.map(k).map(dt(a)),r=a.arguments_.alignment;if(r==="v")return $t(...c);if(r==="r")return ut(Se.early(qe*Ie()).segment(1),c);const _=a.source_.some(p=>{var $;return!!(($=p.options_)!=null&&$.weight)});if(!_&&r==="t")return ht(...c);if(_){const p=mt(...a.source_.map(($,w)=>{var A;return[((A=$.options_)==null?void 0:A.weight)||1,c[w]]}));if(r==="t"){const $=a.source_.reduce((w,A)=>{var E;return w+(((E=A.options_)==null?void 0:E.weight)||1)},0);return p._slow($)}return p}return Oe(...c);case"element":if(a.source_==="~")return je;if(typeof a.source_!="object"){if(!a.location_)return console.warn("no location for",a),a.source_;const{start:p,end:$}=a.location_,w=isNaN(Number(a.source_))?a.source_:Number(a.source_);return vt(w).withLocation([p.line,p.column,p.offset],[$.line,$.column,$.offset])}return k(a.source_);case"stretch":return k(a.source_).slow(a.arguments_.amount);default:return console.warn(`node type "${a.type_}" not implemented -> returning silence`),je}}const J=(...a)=>{const c=a.map(r=>{const _=Re(`"${r}"`);return k(_)});return Oe(...c)},wt=a=>{const c=Re(a);return k(c)};H.prototype.define("mini",J,{composable:!0});H.prototype.define("m",J,{composable:!0});H.prototype.define("h",wt,{composable:!0});function bt(a){return typeof a=="string"?J(a):X(a)}export{D as SyntaxError,wt as h,J as mini,bt as minify,Re as parse,k as patternifyAST}; diff --git a/packages/react/examples/nano-repl/dist/assets/index.cc0b04cf.js b/packages/react/examples/nano-repl/dist/assets/index.cc0b04cf.js deleted file mode 100644 index 3e833bfc3..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.cc0b04cf.js +++ /dev/null @@ -1 +0,0 @@ -import{P as Pattern}from"./index.ec9f9930.js";let loadCache={};async function loadFont(name){if(loadCache[name])return loadCache[name];const load=async()=>{const url=`https://felixroos.github.io/webaudiofontdata/sound/${name}.js`;console.log("load font",name,url);const preset=await fetch(url).then(h=>h.text());let[_,data]=preset.split("={");return eval("{"+data)};return loadCache[name]=load(),loadCache[name]}async function getFontBufferSource(h,y,S){typeof y=="string"&&(y=toMidi(y));const{buffer:n,zone:e}=await getFontPitch(h,y,S),f=S.createBufferSource();f.buffer=n;const i=e.originalPitch-100*e.coarseTune-e.fineTune,l=1*Math.pow(2,(100*y-i)/1200);return f.playbackRate.value=l,e.loopStart>1&&e.loopStart{const f=await loadFont(h);if(!f)throw new Error(`Could not load soundfont ${h}`);const i=findZone(f,y);if(!i)throw new Error("no soundfont zone found for preset ",h,"pitch",y);const l=await getBuffer(i,S);if(!l)throw new Error(`no soundfont buffer found for preset ${h}, pitch: ${y}`);return{buffer:l,zone:i}};return bufferCache[n]=e(),bufferCache[n]}function findZone(h,y){return h.find(S=>S.keyRangeLow<=y&&S.keyRangeHigh+1>=y)}async function getBuffer(h,y){if(h.sample){console.warn("zone.sample untested!");const n=atob(h.sample);h.buffer=y.createBuffer(1,n.length/2,h.sampleRate);const e=h.buffer.getChannelData(0);let f,i,l;for(var S=0;S=65536/2&&(l=l-65536),e[S]=l/65536}else if(h.file){const n=h.file.length,e=new ArrayBuffer(n),f=new Uint8Array(e),i=atob(h.file);let l;for(let t=0;ty.decodeAudioData(e,t))}}const instruments=["0000_JCLive_sf2_file","0000_Aspirin_sf2_file","0000_Chaos_sf2_file","0000_FluidR3_GM_sf2_file","0000_GeneralUserGS_sf2_file","0000_SBLive_sf2","0000_SoundBlasterOld_sf2","0001_FluidR3_GM_sf2_file","0001_GeneralUserGS_sf2_file","0002_GeneralUserGS_sf2_file","0003_GeneralUserGS_sf2_file","0010_Aspirin_sf2_file","0010_Chaos_sf2_file","0010_FluidR3_GM_sf2_file","0010_GeneralUserGS_sf2_file","0010_JCLive_sf2_file","0010_SBLive_sf2","0010_SoundBlasterOld_sf2","0011_Aspirin_sf2_file","0011_FluidR3_GM_sf2_file","0011_GeneralUserGS_sf2_file","0012_GeneralUserGS_sf2_file","0020_Aspirin_sf2_file","0020_Chaos_sf2_file","0020_FluidR3_GM_sf2_file","0020_GeneralUserGS_sf2_file","0020_JCLive_sf2_file","0020_SBLive_sf2","0020_SoundBlasterOld_sf2","0021_Aspirin_sf2_file","0021_GeneralUserGS_sf2_file","0022_Aspirin_sf2_file","0030_Aspirin_sf2_file","0030_Chaos_sf2_file","0030_FluidR3_GM_sf2_file","0030_GeneralUserGS_sf2_file","0030_JCLive_sf2_file","0030_SBLive_sf2","0030_SoundBlasterOld_sf2","0031_Aspirin_sf2_file","0031_FluidR3_GM_sf2_file","0031_GeneralUserGS_sf2_file","0031_SoundBlasterOld_sf2","0040_Aspirin_sf2_file","0040_Chaos_sf2_file","0040_FluidR3_GM_sf2_file","0040_GeneralUserGS_sf2_file","0040_JCLive_sf2_file","0040_SBLive_sf2","0040_SoundBlasterOld_sf2","0041_FluidR3_GM_sf2_file","0041_GeneralUserGS_sf2_file","0041_SoundBlasterOld_sf2","0042_GeneralUserGS_sf2_file","0043_GeneralUserGS_sf2_file","0044_GeneralUserGS_sf2_file","0045_GeneralUserGS_sf2_file","0046_GeneralUserGS_sf2_file","0050_Aspirin_sf2_file","0050_Chaos_sf2_file","0050_FluidR3_GM_sf2_file","0050_GeneralUserGS_sf2_file","0050_JCLive_sf2_file","0050_SBLive_sf2","0050_SoundBlasterOld_sf2","0051_FluidR3_GM_sf2_file","0051_GeneralUserGS_sf2_file","0052_GeneralUserGS_sf2_file","0053_GeneralUserGS_sf2_file","0054_GeneralUserGS_sf2_file","0060_Aspirin_sf2_file","0060_Chaos_sf2_file","0060_FluidR3_GM_sf2_file","0060_GeneralUserGS_sf2_file","0060_JCLive_sf2_file","0060_SBLive_sf2","0060_SoundBlasterOld_sf2","0061_Aspirin_sf2_file","0061_GeneralUserGS_sf2_file","0061_SoundBlasterOld_sf2","0062_GeneralUserGS_sf2_file","0070_Aspirin_sf2_file","0070_Chaos_sf2_file","0070_FluidR3_GM_sf2_file","0070_GeneralUserGS_sf2_file","0070_JCLive_sf2_file","0070_SBLive_sf2","0070_SoundBlasterOld_sf2","0071_GeneralUserGS_sf2_file","0080_Aspirin_sf2_file","0080_Chaos_sf2_file","0080_FluidR3_GM_sf2_file","0080_GeneralUserGS_sf2_file","0080_JCLive_sf2_file","0080_SBLive_sf2","0080_SoundBlasterOld_sf2","0081_FluidR3_GM_sf2_file","0081_GeneralUserGS_sf2_file","0081_SoundBlasterOld_sf2","0090_Aspirin_sf2_file","0090_Chaos_sf2_file","0090_FluidR3_GM_sf2_file","0090_GeneralUserGS_sf2_file","0090_JCLive_sf2_file","0090_SBLive_sf2","0090_SoundBlasterOld_sf2","0091_SoundBlasterOld_sf2","0100_Aspirin_sf2_file","0100_Chaos_sf2_file","0100_FluidR3_GM_sf2_file","0100_GeneralUserGS_sf2_file","0100_JCLive_sf2_file","0100_SBLive_sf2","0100_SoundBlasterOld_sf2","0101_GeneralUserGS_sf2_file","0101_SoundBlasterOld_sf2","0110_Aspirin_sf2_file","0110_Chaos_sf2_file","0110_FluidR3_GM_sf2_file","0110_GeneralUserGS_sf2_file","0110_JCLive_sf2_file","0110_SBLive_sf2","0110_SoundBlasterOld_sf2","0111_FluidR3_GM_sf2_file","0120_Aspirin_sf2_file","0120_Chaos_sf2_file","0120_FluidR3_GM_sf2_file","0120_GeneralUserGS_sf2_file","0120_JCLive_sf2_file","0120_SBLive_sf2","0120_SoundBlasterOld_sf2","0121_FluidR3_GM_sf2_file","0121_GeneralUserGS_sf2_file","0130_Aspirin_sf2_file","0130_Chaos_sf2_file","0130_FluidR3_GM_sf2_file","0130_GeneralUserGS_sf2_file","0130_JCLive_sf2_file","0130_SBLive_sf2","0130_SoundBlasterOld_sf2","0131_FluidR3_GM_sf2_file","0140_Aspirin_sf2_file","0140_Chaos_sf2_file","0140_FluidR3_GM_sf2_file","0140_GeneralUserGS_sf2_file","0140_JCLive_sf2_file","0140_SBLive_sf2","0140_SoundBlasterOld_sf2","0141_FluidR3_GM_sf2_file","0141_GeneralUserGS_sf2_file","0142_GeneralUserGS_sf2_file","0143_GeneralUserGS_sf2_file","0150_Aspirin_sf2_file","0150_Chaos_sf2_file","0150_FluidR3_GM_sf2_file","0150_GeneralUserGS_sf2_file","0150_JCLive_sf2_file","0150_SBLive_sf2","0150_SoundBlasterOld_sf2","0151_FluidR3_GM_sf2_file","0160_Aspirin_sf2_file","0160_Chaos_sf2_file","0160_FluidR3_GM_sf2_file","0160_GeneralUserGS_sf2_file","0160_JCLive_sf2_file","0160_SBLive_sf2","0160_SoundBlasterOld_sf2","0161_Aspirin_sf2_file","0161_FluidR3_GM_sf2_file","0161_SoundBlasterOld_sf2","0170_Aspirin_sf2_file","0170_Chaos_sf2_file","0170_FluidR3_GM_sf2_file","0170_GeneralUserGS_sf2_file","0170_JCLive_sf2_file","0170_SBLive_sf2","0170_SoundBlasterOld_sf2","0171_FluidR3_GM_sf2_file","0171_GeneralUserGS_sf2_file","0172_FluidR3_GM_sf2_file","0180_Aspirin_sf2_file","0180_Chaos_sf2_file","0180_FluidR3_GM_sf2_file","0180_GeneralUserGS_sf2_file","0180_JCLive_sf2_file","0180_SBLive_sf2","0180_SoundBlasterOld_sf2","0181_Aspirin_sf2_file","0181_GeneralUserGS_sf2_file","0181_SoundBlasterOld_sf2","0190_Aspirin_sf2_file","0190_Chaos_sf2_file","0190_FluidR3_GM_sf2_file","0190_GeneralUserGS_sf2_file","0190_JCLive_sf2_file","0190_SBLive_sf2","0190_SoundBlasterOld_sf2","0191_Aspirin_sf2_file","0191_GeneralUserGS_sf2_file","0191_SoundBlasterOld_sf2","0200_Aspirin_sf2_file","0200_Chaos_sf2_file","0200_FluidR3_GM_sf2_file","0200_GeneralUserGS_sf2_file","0200_JCLive_sf2_file","0200_SBLive_sf2","0200_SoundBlasterOld_sf2","0201_Aspirin_sf2_file","0201_FluidR3_GM_sf2_file","0201_GeneralUserGS_sf2_file","0201_SoundBlasterOld_sf2","0210_Aspirin_sf2_file","0210_Chaos_sf2_file","0210_FluidR3_GM_sf2_file","0210_GeneralUserGS_sf2_file","0210_JCLive_sf2_file","0210_SBLive_sf2","0210_SoundBlasterOld_sf2","0211_Aspirin_sf2_file","0211_FluidR3_GM_sf2_file","0211_GeneralUserGS_sf2_file","0211_SoundBlasterOld_sf2","0212_GeneralUserGS_sf2_file","0220_Aspirin_sf2_file","0220_Chaos_sf2_file","0220_FluidR3_GM_sf2_file","0220_GeneralUserGS_sf2_file","0220_JCLive_sf2_file","0220_SBLive_sf2","0220_SoundBlasterOld_sf2","0221_FluidR3_GM_sf2_file","0230_Aspirin_sf2_file","0230_Chaos_sf2_file","0230_FluidR3_GM_sf2_file","0230_GeneralUserGS_sf2_file","0230_JCLive_sf2_file","0230_SBLive_sf2","0230_SoundBlasterOld_sf2","0231_FluidR3_GM_sf2_file","0231_GeneralUserGS_sf2_file","0231_JCLive_sf2_file","0231_SoundBlasterOld_sf2","0232_FluidR3_GM_sf2_file","0233_FluidR3_GM_sf2_file","0240_Aspirin_sf2_file","0240_Chaos_sf2_file","0240_FluidR3_GM_sf2_file","0240_GeneralUserGS_sf2_file","0240_JCLive_sf2_file","0240_LK_Godin_Nylon_SF2_file","0240_SBLive_sf2","0240_SoundBlasterOld_sf2","0241_GeneralUserGS_sf2_file","0241_JCLive_sf2_file","0242_JCLive_sf2_file","0243_JCLive_sf2_file","0253_Acoustic_Guitar_sf2_file","0250_Aspirin_sf2_file","0250_Chaos_sf2_file","0250_FluidR3_GM_sf2_file","0250_GeneralUserGS_sf2_file","0250_JCLive_sf2_file","0250_LK_AcousticSteel_SF2_file","0250_SBLive_sf2","0250_SoundBlasterOld_sf2","0251_Acoustic_Guitar_sf2_file","0251_GeneralUserGS_sf2_file","0252_Acoustic_Guitar_sf2_file","0252_GeneralUserGS_sf2_file","0253_Acoustic_Guitar_sf2_file","0253_GeneralUserGS_sf2_file","0254_Acoustic_Guitar_sf2_file","0254_GeneralUserGS_sf2_file","0255_GeneralUserGS_sf2_file","0260_Aspirin_sf2_file","0260_Chaos_sf2_file","0260_FluidR3_GM_sf2_file","0260_GeneralUserGS_sf2_file","0260_JCLive_sf2_file","0260_SBLive_sf2","0260_SoundBlasterOld_sf2","0260_Stratocaster_sf2_file","0261_GeneralUserGS_sf2_file","0261_SoundBlasterOld_sf2","0261_Stratocaster_sf2_file","0262_Stratocaster_sf2_file","0270_Aspirin_sf2_file","0270_Chaos_sf2_file","0270_FluidR3_GM_sf2_file","0270_GeneralUserGS_sf2_file","0270_Gibson_Les_Paul_sf2_file","0270_JCLive_sf2_file","0270_SBAWE32_sf2_file","0270_SBLive_sf2","0270_SoundBlasterOld_sf2","0270_Stratocaster_sf2_file","0271_GeneralUserGS_sf2_file","0271_Stratocaster_sf2_file","0272_Stratocaster_sf2_file","0280_Aspirin_sf2_file","0280_Chaos_sf2_file","0280_FluidR3_GM_sf2_file","0280_GeneralUserGS_sf2_file","0280_JCLive_sf2_file","0280_LesPaul_sf2","0280_LesPaul_sf2_file","0280_SBAWE32_sf2_file","0280_SBLive_sf2","0280_SoundBlasterOld_sf2","0281_Aspirin_sf2_file","0281_FluidR3_GM_sf2_file","0281_GeneralUserGS_sf2_file","0282_FluidR3_GM_sf2_file","0282_GeneralUserGS_sf2_file","0283_GeneralUserGS_sf2_file","0290_Aspirin_sf2_file","0290_Chaos_sf2_file","0290_FluidR3_GM_sf2_file","0290_GeneralUserGS_sf2_file","0290_JCLive_sf2_file","0290_LesPaul_sf2","0290_LesPaul_sf2_file","0290_SBAWE32_sf2_file","0290_SBLive_sf2","0290_SoundBlasterOld_sf2","0291_Aspirin_sf2_file","0291_LesPaul_sf2","0291_LesPaul_sf2_file","0291_SBAWE32_sf2_file","0291_SoundBlasterOld_sf2","0292_Aspirin_sf2_file","0292_LesPaul_sf2","0292_LesPaul_sf2_file","0300_Aspirin_sf2_file","0300_Chaos_sf2_file","0300_FluidR3_GM_sf2_file","0300_GeneralUserGS_sf2_file","0300_JCLive_sf2_file","0300_LesPaul_sf2","0300_LesPaul_sf2_file","0300_SBAWE32_sf2_file","0300_SBLive_sf2","0300_SoundBlasterOld_sf2","0301_Aspirin_sf2_file","0301_FluidR3_GM_sf2_file","0301_GeneralUserGS_sf2_file","0301_JCLive_sf2_file","0301_LesPaul_sf2","0301_LesPaul_sf2_file","0302_Aspirin_sf2_file","0302_GeneralUserGS_sf2_file","0302_JCLive_sf2_file","0303_Aspirin_sf2_file","0304_Aspirin_sf2_file","0310_Aspirin_sf2_file","0310_Chaos_sf2_file","0310_FluidR3_GM_sf2_file","0310_GeneralUserGS_sf2_file","0310_JCLive_sf2_file","0310_LesPaul_sf2","0310_LesPaul_sf2_file","0310_SBAWE32_sf2_file","0310_SBLive_sf2","0310_SoundBlasterOld_sf2","0311_FluidR3_GM_sf2_file","0311_GeneralUserGS_sf2_file","0320_Aspirin_sf2_file","0320_Chaos_sf2_file","0320_FluidR3_GM_sf2_file","0320_GeneralUserGS_sf2_file","0320_JCLive_sf2_file","0320_SBLive_sf2","0320_SoundBlasterOld_sf2","0321_GeneralUserGS_sf2_file","0322_GeneralUserGS_sf2_file","0330_Aspirin_sf2_file","0330_Chaos_sf2_file","0330_FluidR3_GM_sf2_file","0330_GeneralUserGS_sf2_file","0330_JCLive_sf2_file","0330_SBLive_sf2","0330_SoundBlasterOld_sf2","0331_GeneralUserGS_sf2_file","0332_GeneralUserGS_sf2_file","0340_Aspirin_sf2_file","0340_Chaos_sf2_file","0340_FluidR3_GM_sf2_file","0340_GeneralUserGS_sf2_file","0340_JCLive_sf2_file","0340_SBLive_sf2","0340_SoundBlasterOld_sf2","0341_Aspirin_sf2_file","0341_GeneralUserGS_sf2_file","0350_Aspirin_sf2_file","0350_Chaos_sf2_file","0350_FluidR3_GM_sf2_file","0350_GeneralUserGS_sf2_file","0350_JCLive_sf2_file","0350_SBLive_sf2","0350_SoundBlasterOld_sf2","0351_GeneralUserGS_sf2_file","0360_Aspirin_sf2_file","0360_Chaos_sf2_file","0360_FluidR3_GM_sf2_file","0360_GeneralUserGS_sf2_file","0360_JCLive_sf2_file","0360_SBLive_sf2","0360_SoundBlasterOld_sf2","0361_GeneralUserGS_sf2_file","0370_Aspirin_sf2_file","0370_Chaos_sf2_file","0370_FluidR3_GM_sf2_file","0370_GeneralUserGS_sf2_file","0370_JCLive_sf2_file","0370_SBLive_sf2","0370_SoundBlasterOld_sf2","0371_GeneralUserGS_sf2_file","0372_GeneralUserGS_sf2_file","0385_GeneralUserGS_sf2_file","0380_Aspirin_sf2_file","0380_Chaos_sf2_file","0380_FluidR3_GM_sf2_file","0380_GeneralUserGS_sf2_file","0380_JCLive_sf2_file","0380_SBLive_sf2","0380_SoundBlasterOld_sf2","0381_FluidR3_GM_sf2_file","0381_GeneralUserGS_sf2_file","0382_FluidR3_GM_sf2_file","0382_GeneralUserGS_sf2_file","0383_GeneralUserGS_sf2_file","0384_GeneralUserGS_sf2_file","0386_GeneralUserGS_sf2_file","0387_GeneralUserGS_sf2_file","0390_Aspirin_sf2_file","0390_Chaos_sf2_file","0390_FluidR3_GM_sf2_file","0390_GeneralUserGS_sf2_file","0390_JCLive_sf2_file","0390_SBLive_sf2","0390_SoundBlasterOld_sf2","0391_FluidR3_GM_sf2_file","0391_GeneralUserGS_sf2_file","0391_SoundBlasterOld_sf2","0392_FluidR3_GM_sf2_file","0392_GeneralUserGS_sf2_file","0393_GeneralUserGS_sf2_file","0400_Aspirin_sf2_file","0400_Chaos_sf2_file","0400_FluidR3_GM_sf2_file","0400_GeneralUserGS_sf2_file","0400_JCLive_sf2_file","0400_SBLive_sf2","0400_SoundBlasterOld_sf2","0401_Aspirin_sf2_file","0401_FluidR3_GM_sf2_file","0401_GeneralUserGS_sf2_file","0402_GeneralUserGS_sf2_file","0410_Aspirin_sf2_file","0410_Chaos_sf2_file","0410_FluidR3_GM_sf2_file","0410_GeneralUserGS_sf2_file","0410_JCLive_sf2_file","0410_SBLive_sf2","0410_SoundBlasterOld_sf2","0411_FluidR3_GM_sf2_file","0420_Aspirin_sf2_file","0420_Chaos_sf2_file","0420_FluidR3_GM_sf2_file","0420_GeneralUserGS_sf2_file","0420_JCLive_sf2_file","0420_SBLive_sf2","0420_SoundBlasterOld_sf2","0421_FluidR3_GM_sf2_file","0421_GeneralUserGS_sf2_file","0430_Aspirin_sf2_file","0430_Chaos_sf2_file","0430_FluidR3_GM_sf2_file","0430_GeneralUserGS_sf2_file","0430_JCLive_sf2_file","0430_SBLive_sf2","0430_SoundBlasterOld_sf2","0431_FluidR3_GM_sf2_file","0440_Aspirin_sf2_file","0440_Chaos_sf2_file","0440_FluidR3_GM_sf2_file","0440_GeneralUserGS_sf2_file","0440_JCLive_sf2_file","0440_SBLive_sf2","0440_SoundBlasterOld_sf2","0441_GeneralUserGS_sf2_file","0442_GeneralUserGS_sf2_file","0450_Aspirin_sf2_file","0450_Chaos_sf2_file","0450_FluidR3_GM_sf2_file","0450_GeneralUserGS_sf2_file","0450_JCLive_sf2_file","0450_SBLive_sf2","0450_SoundBlasterOld_sf2","0451_FluidR3_GM_sf2_file","0460_Aspirin_sf2_file","0460_Chaos_sf2_file","0460_FluidR3_GM_sf2_file","0460_GeneralUserGS_sf2_file","0460_JCLive_sf2_file","0460_SBLive_sf2","0460_SoundBlasterOld_sf2","0461_FluidR3_GM_sf2_file","0470_Aspirin_sf2_file","0470_Chaos_sf2_file","0470_FluidR3_GM_sf2_file","0470_GeneralUserGS_sf2_file","0470_JCLive_sf2_file","0470_SBLive_sf2","0470_SoundBlasterOld_sf2","0471_FluidR3_GM_sf2_file","0471_GeneralUserGS_sf2_file","0480_Aspirin_sf2_file","0480_Chaos_sf2_file","0480_FluidR3_GM_sf2_file","0480_GeneralUserGS_sf2_file","0480_JCLive_sf2_file","0480_SBLive_sf2","0480_SoundBlasterOld_sf2","04810_GeneralUserGS_sf2_file","04811_GeneralUserGS_sf2_file","04812_GeneralUserGS_sf2_file","04813_GeneralUserGS_sf2_file","04814_GeneralUserGS_sf2_file","04815_GeneralUserGS_sf2_file","04816_GeneralUserGS_sf2_file","04817_GeneralUserGS_sf2_file","0481_Aspirin_sf2_file","0481_FluidR3_GM_sf2_file","0481_GeneralUserGS_sf2_file","0482_Aspirin_sf2_file","0482_GeneralUserGS_sf2_file","0483_GeneralUserGS_sf2_file","0484_GeneralUserGS_sf2_file","0485_GeneralUserGS_sf2_file","0486_GeneralUserGS_sf2_file","0487_GeneralUserGS_sf2_file","0488_GeneralUserGS_sf2_file","0489_GeneralUserGS_sf2_file","0490_Aspirin_sf2_file","0490_Chaos_sf2_file","0490_FluidR3_GM_sf2_file","0490_GeneralUserGS_sf2_file","0490_JCLive_sf2_file","0490_SBLive_sf2","0490_SoundBlasterOld_sf2","0491_GeneralUserGS_sf2_file","0492_GeneralUserGS_sf2_file","0500_Aspirin_sf2_file","0500_Chaos_sf2_file","0500_FluidR3_GM_sf2_file","0500_GeneralUserGS_sf2_file","0500_JCLive_sf2_file","0500_SBLive_sf2","0500_SoundBlasterOld_sf2","0501_FluidR3_GM_sf2_file","0501_GeneralUserGS_sf2_file","0502_FluidR3_GM_sf2_file","0502_GeneralUserGS_sf2_file","0503_FluidR3_GM_sf2_file","0504_FluidR3_GM_sf2_file","0505_FluidR3_GM_sf2_file","0510_Aspirin_sf2_file","0510_Chaos_sf2_file","0510_FluidR3_GM_sf2_file","0510_GeneralUserGS_sf2_file","0510_JCLive_sf2_file","0510_SBLive_sf2","0510_SoundBlasterOld_sf2","0511_GeneralUserGS_sf2_file","0511_SoundBlasterOld_sf2","0520_Aspirin_sf2_file","0520_Chaos_sf2_file","0520_FluidR3_GM_sf2_file","0520_GeneralUserGS_sf2_file","0520_JCLive_sf2_file","0520_SBLive_sf2","0520_Soul_Ahhs_sf2_file","0520_SoundBlasterOld_sf2","0521_FluidR3_GM_sf2_file","0521_Soul_Ahhs_sf2_file","0521_SoundBlasterOld_sf2","0522_Soul_Ahhs_sf2_file","0530_Aspirin_sf2_file","0530_Chaos_sf2_file","0530_FluidR3_GM_sf2_file","0530_GeneralUserGS_sf2_file","0530_JCLive_sf2_file","0530_SBLive_sf2","0530_Soul_Ahhs_sf2_file","0530_SoundBlasterOld_sf2","0531_FluidR3_GM_sf2_file","0531_GeneralUserGS_sf2_file","0531_JCLive_sf2_file","0531_SoundBlasterOld_sf2","0540_Aspirin_sf2_file","0540_Chaos_sf2_file","0540_FluidR3_GM_sf2_file","0540_GeneralUserGS_sf2_file","0540_JCLive_sf2_file","0540_SBLive_sf2","0540_SoundBlasterOld_sf2","0541_FluidR3_GM_sf2_file","0550_Aspirin_sf2_file","0550_Chaos_sf2_file","0550_FluidR3_GM_sf2_file","0550_GeneralUserGS_sf2_file","0550_JCLive_sf2_file","0550_SBLive_sf2","0550_SoundBlasterOld_sf2","0551_Aspirin_sf2_file","0551_FluidR3_GM_sf2_file","0560_Aspirin_sf2_file","0560_Chaos_sf2_file","0560_FluidR3_GM_sf2_file","0560_GeneralUserGS_sf2_file","0560_JCLive_sf2_file","0560_SBLive_sf2","0560_SoundBlasterOld_sf2","0570_Aspirin_sf2_file","0570_Chaos_sf2_file","0570_FluidR3_GM_sf2_file","0570_GeneralUserGS_sf2_file","0570_JCLive_sf2_file","0570_SBLive_sf2","0570_SoundBlasterOld_sf2","0571_GeneralUserGS_sf2_file","0580_Aspirin_sf2_file","0580_Chaos_sf2_file","0580_FluidR3_GM_sf2_file","0580_GeneralUserGS_sf2_file","0580_JCLive_sf2_file","0580_SBLive_sf2","0580_SoundBlasterOld_sf2","0581_GeneralUserGS_sf2_file","0590_Aspirin_sf2_file","0590_Chaos_sf2_file","0590_FluidR3_GM_sf2_file","0590_GeneralUserGS_sf2_file","0590_JCLive_sf2_file","0590_SBLive_sf2","0590_SoundBlasterOld_sf2","0591_GeneralUserGS_sf2_file","0600_Aspirin_sf2_file","0600_Chaos_sf2_file","0600_FluidR3_GM_sf2_file","0600_GeneralUserGS_sf2_file","0600_JCLive_sf2_file","0600_SBLive_sf2","0600_SoundBlasterOld_sf2","0601_FluidR3_GM_sf2_file","0601_GeneralUserGS_sf2_file","0602_GeneralUserGS_sf2_file","0603_GeneralUserGS_sf2_file","0610_Aspirin_sf2_file","0610_Chaos_sf2_file","0610_FluidR3_GM_sf2_file","0610_GeneralUserGS_sf2_file","0610_JCLive_sf2_file","0610_SBLive_sf2","0610_SoundBlasterOld_sf2","0611_GeneralUserGS_sf2_file","0612_GeneralUserGS_sf2_file","0613_GeneralUserGS_sf2_file","0614_GeneralUserGS_sf2_file","0615_GeneralUserGS_sf2_file","0620_Aspirin_sf2_file","0620_Chaos_sf2_file","0620_FluidR3_GM_sf2_file","0620_GeneralUserGS_sf2_file","0620_JCLive_sf2_file","0620_SBLive_sf2","0620_SoundBlasterOld_sf2","0621_Aspirin_sf2_file","0621_FluidR3_GM_sf2_file","0621_GeneralUserGS_sf2_file","0622_FluidR3_GM_sf2_file","0622_GeneralUserGS_sf2_file","0630_Aspirin_sf2_file","0630_Chaos_sf2_file","0630_FluidR3_GM_sf2_file","0630_GeneralUserGS_sf2_file","0630_JCLive_sf2_file","0630_SBLive_sf2","0630_SoundBlasterOld_sf2","0631_Aspirin_sf2_file","0631_FluidR3_GM_sf2_file","0631_GeneralUserGS_sf2_file","0632_FluidR3_GM_sf2_file","0633_FluidR3_GM_sf2_file","0640_Aspirin_sf2_file","0640_Chaos_sf2_file","0640_FluidR3_GM_sf2_file","0640_GeneralUserGS_sf2_file","0640_JCLive_sf2_file","0640_SBLive_sf2","0640_SoundBlasterOld_sf2","0641_FluidR3_GM_sf2_file","0650_Aspirin_sf2_file","0650_Chaos_sf2_file","0650_FluidR3_GM_sf2_file","0650_GeneralUserGS_sf2_file","0650_JCLive_sf2_file","0650_SBLive_sf2","0650_SoundBlasterOld_sf2","0651_Aspirin_sf2_file","0651_FluidR3_GM_sf2_file","0660_Aspirin_sf2_file","0660_Chaos_sf2_file","0660_FluidR3_GM_sf2_file","0660_GeneralUserGS_sf2_file","0660_JCLive_sf2_file","0660_SBLive_sf2","0660_SoundBlasterOld_sf2","0661_FluidR3_GM_sf2_file","0661_GeneralUserGS_sf2_file","0670_Aspirin_sf2_file","0670_Chaos_sf2_file","0670_FluidR3_GM_sf2_file","0670_GeneralUserGS_sf2_file","0670_JCLive_sf2_file","0670_SBLive_sf2","0670_SoundBlasterOld_sf2","0671_FluidR3_GM_sf2_file","0680_Aspirin_sf2_file","0680_Chaos_sf2_file","0680_FluidR3_GM_sf2_file","0680_GeneralUserGS_sf2_file","0680_JCLive_sf2_file","0680_SBLive_sf2","0680_SoundBlasterOld_sf2","0681_FluidR3_GM_sf2_file","0690_Aspirin_sf2_file","0690_Chaos_sf2_file","0690_FluidR3_GM_sf2_file","0690_GeneralUserGS_sf2_file","0690_JCLive_sf2_file","0690_SBLive_sf2","0690_SoundBlasterOld_sf2","0691_FluidR3_GM_sf2_file","0700_Aspirin_sf2_file","0700_Chaos_sf2_file","0700_FluidR3_GM_sf2_file","0700_GeneralUserGS_sf2_file","0700_JCLive_sf2_file","0700_SBLive_sf2","0700_SoundBlasterOld_sf2","0701_FluidR3_GM_sf2_file","0701_GeneralUserGS_sf2_file","0710_Aspirin_sf2_file","0710_Chaos_sf2_file","0710_FluidR3_GM_sf2_file","0710_GeneralUserGS_sf2_file","0710_JCLive_sf2_file","0710_SBLive_sf2","0710_SoundBlasterOld_sf2","0711_FluidR3_GM_sf2_file","0720_Aspirin_sf2_file","0720_Chaos_sf2_file","0720_FluidR3_GM_sf2_file","0720_GeneralUserGS_sf2_file","0720_JCLive_sf2_file","0720_SBLive_sf2","0720_SoundBlasterOld_sf2","0721_FluidR3_GM_sf2_file","0721_SoundBlasterOld_sf2","0730_Aspirin_sf2_file","0730_Chaos_sf2_file","0730_FluidR3_GM_sf2_file","0730_GeneralUserGS_sf2_file","0730_JCLive_sf2_file","0730_SBLive_sf2","0730_SoundBlasterOld_sf2","0731_Aspirin_sf2_file","0731_FluidR3_GM_sf2_file","0731_SoundBlasterOld_sf2","0740_Aspirin_sf2_file","0740_Chaos_sf2_file","0740_FluidR3_GM_sf2_file","0740_GeneralUserGS_sf2_file","0740_JCLive_sf2_file","0740_SBLive_sf2","0740_SoundBlasterOld_sf2","0741_GeneralUserGS_sf2_file","0750_Aspirin_sf2_file","0750_Chaos_sf2_file","0750_FluidR3_GM_sf2_file","0750_GeneralUserGS_sf2_file","0750_JCLive_sf2_file","0750_SBLive_sf2","0750_SoundBlasterOld_sf2","0751_Aspirin_sf2_file","0751_FluidR3_GM_sf2_file","0751_GeneralUserGS_sf2_file","0751_SoundBlasterOld_sf2","0760_Aspirin_sf2_file","0760_Chaos_sf2_file","0760_FluidR3_GM_sf2_file","0760_GeneralUserGS_sf2_file","0760_JCLive_sf2_file","0760_SBLive_sf2","0760_SoundBlasterOld_sf2","0761_FluidR3_GM_sf2_file","0761_GeneralUserGS_sf2_file","0761_SoundBlasterOld_sf2","0762_GeneralUserGS_sf2_file","0770_Aspirin_sf2_file","0770_Chaos_sf2_file","0770_FluidR3_GM_sf2_file","0770_GeneralUserGS_sf2_file","0770_JCLive_sf2_file","0770_SBLive_sf2","0770_SoundBlasterOld_sf2","0771_FluidR3_GM_sf2_file","0771_GeneralUserGS_sf2_file","0772_GeneralUserGS_sf2_file","0780_Aspirin_sf2_file","0780_Chaos_sf2_file","0780_FluidR3_GM_sf2_file","0780_GeneralUserGS_sf2_file","0780_JCLive_sf2_file","0780_SBLive_sf2","0780_SoundBlasterOld_sf2","0781_GeneralUserGS_sf2_file","0790_Aspirin_sf2_file","0790_Chaos_sf2_file","0790_FluidR3_GM_sf2_file","0790_GeneralUserGS_sf2_file","0790_JCLive_sf2_file","0790_SBLive_sf2","0790_SoundBlasterOld_sf2","0791_GeneralUserGS_sf2_file","0800_Aspirin_sf2_file","0800_Chaos_sf2_file","0800_FluidR3_GM_sf2_file","0800_GeneralUserGS_sf2_file","0800_JCLive_sf2_file","0800_SBLive_sf2","0800_SoundBlasterOld_sf2","0801_FluidR3_GM_sf2_file","0801_GeneralUserGS_sf2_file","0810_Aspirin_sf2_file","0810_Chaos_sf2_file","0810_FluidR3_GM_sf2_file","0810_GeneralUserGS_sf2_file","0810_JCLive_sf2_file","0810_SBLive_sf2","0810_SoundBlasterOld_sf2","0811_Aspirin_sf2_file","0811_GeneralUserGS_sf2_file","0811_SoundBlasterOld_sf2","0820_Aspirin_sf2_file","0820_Chaos_sf2_file","0820_FluidR3_GM_sf2_file","0820_GeneralUserGS_sf2_file","0820_JCLive_sf2_file","0820_SBLive_sf2","0820_SoundBlasterOld_sf2","0821_FluidR3_GM_sf2_file","0821_GeneralUserGS_sf2_file","0821_SoundBlasterOld_sf2","0822_GeneralUserGS_sf2_file","0823_GeneralUserGS_sf2_file","0830_Aspirin_sf2_file","0830_Chaos_sf2_file","0830_FluidR3_GM_sf2_file","0830_GeneralUserGS_sf2_file","0830_JCLive_sf2_file","0830_SBLive_sf2","0830_SoundBlasterOld_sf2","0831_FluidR3_GM_sf2_file","0831_GeneralUserGS_sf2_file","0831_SoundBlasterOld_sf2","0840_Aspirin_sf2_file","0840_Chaos_sf2_file","0840_FluidR3_GM_sf2_file","0840_GeneralUserGS_sf2_file","0840_JCLive_sf2_file","0840_SBLive_sf2","0840_SoundBlasterOld_sf2","0841_Aspirin_sf2_file","0841_Chaos_sf2_file","0841_FluidR3_GM_sf2_file","0841_GeneralUserGS_sf2_file","0841_JCLive_sf2_file","0841_SoundBlasterOld_sf2","0842_FluidR3_GM_sf2_file","0850_Aspirin_sf2_file","0850_Chaos_sf2_file","0850_FluidR3_GM_sf2_file","0850_GeneralUserGS_sf2_file","0850_JCLive_sf2_file","0850_SBLive_sf2","0850_SoundBlasterOld_sf2","0851_FluidR3_GM_sf2_file","0851_GeneralUserGS_sf2_file","0851_JCLive_sf2_file","0851_SoundBlasterOld_sf2","0860_Aspirin_sf2_file","0860_Chaos_sf2_file","0860_FluidR3_GM_sf2_file","0860_GeneralUserGS_sf2_file","0860_JCLive_sf2_file","0860_SBLive_sf2","0860_SoundBlasterOld_sf2","0861_Aspirin_sf2_file","0861_FluidR3_GM_sf2_file","0861_SoundBlasterOld_sf2","0870_Aspirin_sf2_file","0870_Chaos_sf2_file","0870_FluidR3_GM_sf2_file","0870_GeneralUserGS_sf2_file","0870_JCLive_sf2_file","0870_SBLive_sf2","0870_SoundBlasterOld_sf2","0871_GeneralUserGS_sf2_file","0872_GeneralUserGS_sf2_file","0873_GeneralUserGS_sf2_file","0880_Aspirin_sf2_file","0880_Chaos_sf2_file","0880_FluidR3_GM_sf2_file","0880_GeneralUserGS_sf2_file","0880_JCLive_sf2_file","0880_SBLive_sf2","0880_SoundBlasterOld_sf2","0881_Aspirin_sf2_file","0881_FluidR3_GM_sf2_file","0881_GeneralUserGS_sf2_file","0881_SoundBlasterOld_sf2","0882_Aspirin_sf2_file","0882_FluidR3_GM_sf2_file","0882_GeneralUserGS_sf2_file","0883_GeneralUserGS_sf2_file","0884_GeneralUserGS_sf2_file","0885_GeneralUserGS_sf2_file","0886_GeneralUserGS_sf2_file","0887_GeneralUserGS_sf2_file","0888_GeneralUserGS_sf2_file","0889_GeneralUserGS_sf2_file","0890_Aspirin_sf2_file","0890_Chaos_sf2_file","0890_FluidR3_GM_sf2_file","0890_GeneralUserGS_sf2_file","0890_JCLive_sf2_file","0890_SBLive_sf2","0890_SoundBlasterOld_sf2","0891_Aspirin_sf2_file","0891_FluidR3_GM_sf2_file","0891_GeneralUserGS_sf2_file","0900_Aspirin_sf2_file","0900_Chaos_sf2_file","0900_FluidR3_GM_sf2_file","0900_GeneralUserGS_sf2_file","0900_JCLive_sf2_file","0900_SBLive_sf2","0900_SoundBlasterOld_sf2","0901_Aspirin_sf2_file","0901_FluidR3_GM_sf2_file","0901_GeneralUserGS_sf2_file","0901_SoundBlasterOld_sf2","0910_Aspirin_sf2_file","0910_Chaos_sf2_file","0910_FluidR3_GM_sf2_file","0910_GeneralUserGS_sf2_file","0910_JCLive_sf2_file","0910_SBLive_sf2","0910_SoundBlasterOld_sf2","0911_Aspirin_sf2_file","0911_GeneralUserGS_sf2_file","0911_JCLive_sf2_file","0911_SoundBlasterOld_sf2","0920_Aspirin_sf2_file","0920_Chaos_sf2_file","0920_FluidR3_GM_sf2_file","0920_GeneralUserGS_sf2_file","0920_JCLive_sf2_file","0920_SBLive_sf2","0920_SoundBlasterOld_sf2","0921_Aspirin_sf2_file","0921_GeneralUserGS_sf2_file","0921_SoundBlasterOld_sf2","0930_Aspirin_sf2_file","0930_Chaos_sf2_file","0930_FluidR3_GM_sf2_file","0930_GeneralUserGS_sf2_file","0930_JCLive_sf2_file","0930_SBLive_sf2","0930_SoundBlasterOld_sf2","0931_Aspirin_sf2_file","0931_FluidR3_GM_sf2_file","0931_GeneralUserGS_sf2_file","0931_SoundBlasterOld_sf2","0940_Aspirin_sf2_file","0940_Chaos_sf2_file","0940_FluidR3_GM_sf2_file","0940_GeneralUserGS_sf2_file","0940_JCLive_sf2_file","0940_SBLive_sf2","0940_SoundBlasterOld_sf2","0941_Aspirin_sf2_file","0941_FluidR3_GM_sf2_file","0941_GeneralUserGS_sf2_file","0941_JCLive_sf2_file","0950_Aspirin_sf2_file","0950_Chaos_sf2_file","0950_FluidR3_GM_sf2_file","0950_GeneralUserGS_sf2_file","0950_JCLive_sf2_file","0950_SBLive_sf2","0950_SoundBlasterOld_sf2","0951_FluidR3_GM_sf2_file","0951_GeneralUserGS_sf2_file","0960_Aspirin_sf2_file","0960_Chaos_sf2_file","0960_FluidR3_GM_sf2_file","0960_GeneralUserGS_sf2_file","0960_JCLive_sf2_file","0960_SBLive_sf2","0960_SoundBlasterOld_sf2","0961_Aspirin_sf2_file","0961_FluidR3_GM_sf2_file","0961_GeneralUserGS_sf2_file","0961_SoundBlasterOld_sf2","0962_GeneralUserGS_sf2_file","0970_Aspirin_sf2_file","0970_Chaos_sf2_file","0970_FluidR3_GM_sf2_file","0970_GeneralUserGS_sf2_file","0970_JCLive_sf2_file","0970_SBLive_sf2","0970_SoundBlasterOld_sf2","0971_FluidR3_GM_sf2_file","0971_GeneralUserGS_sf2_file","0971_SoundBlasterOld_sf2","0980_Aspirin_sf2_file","0980_Chaos_sf2_file","0980_FluidR3_GM_sf2_file","0980_GeneralUserGS_sf2_file","0980_JCLive_sf2_file","0980_SBLive_sf2","0980_SoundBlasterOld_sf2","0981_Aspirin_sf2_file","0981_FluidR3_GM_sf2_file","0981_GeneralUserGS_sf2_file","0981_SoundBlasterOld_sf2","0982_GeneralUserGS_sf2_file","0983_GeneralUserGS_sf2_file","0984_GeneralUserGS_sf2_file","0990_Aspirin_sf2_file","0990_Chaos_sf2_file","0990_FluidR3_GM_sf2_file","0990_GeneralUserGS_sf2_file","0990_JCLive_sf2_file","0990_SBLive_sf2","0990_SoundBlasterOld_sf2","0991_Aspirin_sf2_file","0991_FluidR3_GM_sf2_file","0991_GeneralUserGS_sf2_file","0991_JCLive_sf2_file","0991_SoundBlasterOld_sf2","0992_FluidR3_GM_sf2_file","0992_JCLive_sf2_file","0993_JCLive_sf2_file","0994_JCLive_sf2_file","1000_Aspirin_sf2_file","1000_Chaos_sf2_file","1000_FluidR3_GM_sf2_file","1000_GeneralUserGS_sf2_file","1000_JCLive_sf2_file","1000_SBLive_sf2","1000_SoundBlasterOld_sf2","1001_Aspirin_sf2_file","1001_FluidR3_GM_sf2_file","1001_GeneralUserGS_sf2_file","1001_JCLive_sf2_file","1001_SoundBlasterOld_sf2","1002_Aspirin_sf2_file","1002_FluidR3_GM_sf2_file","1002_GeneralUserGS_sf2_file","1010_Aspirin_sf2_file","1010_Chaos_sf2_file","1010_FluidR3_GM_sf2_file","1010_GeneralUserGS_sf2_file","1010_JCLive_sf2_file","1010_SBLive_sf2","1010_SoundBlasterOld_sf2","1011_Aspirin_sf2_file","1011_FluidR3_GM_sf2_file","1011_JCLive_sf2_file","1012_Aspirin_sf2_file","1020_Aspirin_sf2_file","1020_Chaos_sf2_file","1020_FluidR3_GM_sf2_file","1020_GeneralUserGS_sf2_file","1020_JCLive_sf2_file","1020_SBLive_sf2","1020_SoundBlasterOld_sf2","1021_Aspirin_sf2_file","1021_FluidR3_GM_sf2_file","1021_GeneralUserGS_sf2_file","1021_JCLive_sf2_file","1021_SoundBlasterOld_sf2","1022_GeneralUserGS_sf2_file","1030_Aspirin_sf2_file","1030_Chaos_sf2_file","1030_FluidR3_GM_sf2_file","1030_GeneralUserGS_sf2_file","1030_JCLive_sf2_file","1030_SBLive_sf2","1030_SoundBlasterOld_sf2","1031_Aspirin_sf2_file","1031_FluidR3_GM_sf2_file","1031_GeneralUserGS_sf2_file","1031_SoundBlasterOld_sf2","1032_FluidR3_GM_sf2_file","1040_Aspirin_sf2_file","1040_Chaos_sf2_file","1040_FluidR3_GM_sf2_file","1040_GeneralUserGS_sf2_file","1040_JCLive_sf2_file","1040_SBLive_sf2","1040_SoundBlasterOld_sf2","1041_FluidR3_GM_sf2_file","1041_GeneralUserGS_sf2_file","1050_Aspirin_sf2_file","1050_Chaos_sf2_file","1050_FluidR3_GM_sf2_file","1050_GeneralUserGS_sf2_file","1050_JCLive_sf2_file","1050_SBLive_sf2","1050_SoundBlasterOld_sf2","1051_GeneralUserGS_sf2_file","1060_Aspirin_sf2_file","1060_Chaos_sf2_file","1060_FluidR3_GM_sf2_file","1060_GeneralUserGS_sf2_file","1060_JCLive_sf2_file","1060_SBLive_sf2","1060_SoundBlasterOld_sf2","1061_FluidR3_GM_sf2_file","1061_GeneralUserGS_sf2_file","1061_SoundBlasterOld_sf2","1070_Aspirin_sf2_file","1070_Chaos_sf2_file","1070_FluidR3_GM_sf2_file","1070_GeneralUserGS_sf2_file","1070_JCLive_sf2_file","1070_SBLive_sf2","1070_SoundBlasterOld_sf2","1071_FluidR3_GM_sf2_file","1071_GeneralUserGS_sf2_file","1072_GeneralUserGS_sf2_file","1073_GeneralUserGS_sf2_file","1080_Aspirin_sf2_file","1080_Chaos_sf2_file","1080_FluidR3_GM_sf2_file","1080_GeneralUserGS_sf2_file","1080_JCLive_sf2_file","1080_SBLive_sf2","1080_SoundBlasterOld_sf2","1081_SoundBlasterOld_sf2","1090_Aspirin_sf2_file","1090_Chaos_sf2_file","1090_FluidR3_GM_sf2_file","1090_GeneralUserGS_sf2_file","1090_JCLive_sf2_file","1090_SBLive_sf2","1090_SoundBlasterOld_sf2","1091_SoundBlasterOld_sf2","1100_Aspirin_sf2_file","1100_Chaos_sf2_file","1100_FluidR3_GM_sf2_file","1100_GeneralUserGS_sf2_file","1100_JCLive_sf2_file","1100_SBLive_sf2","1100_SoundBlasterOld_sf2","1101_Aspirin_sf2_file","1101_FluidR3_GM_sf2_file","1101_GeneralUserGS_sf2_file","1102_GeneralUserGS_sf2_file","1110_Aspirin_sf2_file","1110_Chaos_sf2_file","1110_FluidR3_GM_sf2_file","1110_GeneralUserGS_sf2_file","1110_JCLive_sf2_file","1110_SBLive_sf2","1110_SoundBlasterOld_sf2","1120_Aspirin_sf2_file","1120_Chaos_sf2_file","1120_FluidR3_GM_sf2_file","1120_GeneralUserGS_sf2_file","1120_JCLive_sf2_file","1120_SBLive_sf2","1120_SoundBlasterOld_sf2","1121_SoundBlasterOld_sf2","1130_Aspirin_sf2_file","1130_Chaos_sf2_file","1130_FluidR3_GM_sf2_file","1130_GeneralUserGS_sf2_file","1130_JCLive_sf2_file","1130_SBLive_sf2","1130_SoundBlasterOld_sf2","1131_FluidR3_GM_sf2_file","1131_SoundBlasterOld_sf2","1140_Aspirin_sf2_file","1140_Chaos_sf2_file","1140_FluidR3_GM_sf2_file","1140_GeneralUserGS_sf2_file","1140_JCLive_sf2_file","1140_SBLive_sf2","1140_SoundBlasterOld_sf2","1141_FluidR3_GM_sf2_file","1150_Aspirin_sf2_file","1150_Chaos_sf2_file","1150_FluidR3_GM_sf2_file","1150_GeneralUserGS_sf2_file","1150_JCLive_sf2_file","1150_SBLive_sf2","1150_SoundBlasterOld_sf2","1151_FluidR3_GM_sf2_file","1151_GeneralUserGS_sf2_file","1152_FluidR3_GM_sf2_file","1152_GeneralUserGS_sf2_file","1160_Aspirin_sf2_file","1160_Chaos_sf2_file","1160_FluidR3_GM_sf2_file","1160_GeneralUserGS_sf2_file","1160_JCLive_sf2_file","1160_SBLive_sf2","1160_SoundBlasterOld_sf2","1161_FluidR3_GM_sf2_file","1161_GeneralUserGS_sf2_file","1161_SoundBlasterOld_sf2","1162_FluidR3_GM_sf2_file","1162_GeneralUserGS_sf2_file","1163_FluidR3_GM_sf2_file","1170_Aspirin_sf2_file","1170_Chaos_sf2_file","1170_FluidR3_GM_sf2_file","1170_GeneralUserGS_sf2_file","1170_JCLive_sf2_file","1170_SBLive_sf2","1170_SoundBlasterOld_sf2","1171_FluidR3_GM_sf2_file","1171_GeneralUserGS_sf2_file","1172_FluidR3_GM_sf2_file","1173_FluidR3_GM_sf2_file","1180_Aspirin_sf2_file","1180_Chaos_sf2_file","1180_FluidR3_GM_sf2_file","1180_GeneralUserGS_sf2_file","1180_JCLive_sf2_file","1180_SBLive_sf2","1180_SoundBlasterOld_sf2","1181_FluidR3_GM_sf2_file","1181_GeneralUserGS_sf2_file","1181_SoundBlasterOld_sf2","1190_Aspirin_sf2_file","1190_Chaos_sf2_file","1190_FluidR3_GM_sf2_file","1190_GeneralUserGS_sf2_file","1190_JCLive_sf2_file","1190_SBLive_sf2","1190_SoundBlasterOld_sf2","1191_GeneralUserGS_sf2_file","1192_GeneralUserGS_sf2_file","1193_GeneralUserGS_sf2_file","1194_GeneralUserGS_sf2_file","1200_Aspirin_sf2_file","1200_Chaos_sf2_file","1200_FluidR3_GM_sf2_file","1200_GeneralUserGS_sf2_file","1200_JCLive_sf2_file","1200_SBLive_sf2","1200_SoundBlasterOld_sf2","1201_Aspirin_sf2_file","1201_GeneralUserGS_sf2_file","1202_GeneralUserGS_sf2_file","1210_Aspirin_sf2_file","1210_Chaos_sf2_file","1210_FluidR3_GM_sf2_file","1210_GeneralUserGS_sf2_file","1210_JCLive_sf2_file","1210_SBLive_sf2","1210_SoundBlasterOld_sf2","1211_Aspirin_sf2_file","1211_GeneralUserGS_sf2_file","1212_GeneralUserGS_sf2_file","1220_Aspirin_sf2_file","1220_Chaos_sf2_file","1220_FluidR3_GM_sf2_file","1220_GeneralUserGS_sf2_file","1220_JCLive_sf2_file","1220_SBLive_sf2","1220_SoundBlasterOld_sf2","1221_Aspirin_sf2_file","1221_GeneralUserGS_sf2_file","1221_JCLive_sf2_file","1222_Aspirin_sf2_file","1222_GeneralUserGS_sf2_file","1223_Aspirin_sf2_file","1223_GeneralUserGS_sf2_file","1224_Aspirin_sf2_file","1224_GeneralUserGS_sf2_file","1225_GeneralUserGS_sf2_file","1226_GeneralUserGS_sf2_file","1230_Aspirin_sf2_file","1230_Chaos_sf2_file","1230_FluidR3_GM_sf2_file","1230_GeneralUserGS_sf2_file","1230_JCLive_sf2_file","1230_SBLive_sf2","1230_SoundBlasterOld_sf2","1231_Aspirin_sf2_file","1231_GeneralUserGS_sf2_file","1232_Aspirin_sf2_file","1232_GeneralUserGS_sf2_file","1233_GeneralUserGS_sf2_file","1234_GeneralUserGS_sf2_file","1240_Aspirin_sf2_file","1240_Chaos_sf2_file","1240_FluidR3_GM_sf2_file","1240_GeneralUserGS_sf2_file","1240_JCLive_sf2_file","1240_SBLive_sf2","1240_SoundBlasterOld_sf2","1241_Aspirin_sf2_file","1241_GeneralUserGS_sf2_file","1242_Aspirin_sf2_file","1242_GeneralUserGS_sf2_file","1243_Aspirin_sf2_file","1243_GeneralUserGS_sf2_file","1244_Aspirin_sf2_file","1244_GeneralUserGS_sf2_file","1250_Aspirin_sf2_file","1250_Chaos_sf2_file","1250_FluidR3_GM_sf2_file","1250_GeneralUserGS_sf2_file","1250_JCLive_sf2_file","1250_SBLive_sf2","1250_SoundBlasterOld_sf2","1251_Aspirin_sf2_file","1251_FluidR3_GM_sf2_file","1251_GeneralUserGS_sf2_file","1252_Aspirin_sf2_file","1252_FluidR3_GM_sf2_file","1252_GeneralUserGS_sf2_file","1253_Aspirin_sf2_file","1253_GeneralUserGS_sf2_file","1254_Aspirin_sf2_file","1254_GeneralUserGS_sf2_file","1255_Aspirin_sf2_file","1255_GeneralUserGS_sf2_file","1256_Aspirin_sf2_file","1256_GeneralUserGS_sf2_file","1257_Aspirin_sf2_file","1257_GeneralUserGS_sf2_file","1258_Aspirin_sf2_file","1258_GeneralUserGS_sf2_file","1259_GeneralUserGS_sf2_file","1260_Aspirin_sf2_file","1260_Chaos_sf2_file","1260_FluidR3_GM_sf2_file","1260_GeneralUserGS_sf2_file","1260_JCLive_sf2_file","1260_SBLive_sf2","1260_SoundBlasterOld_sf2","1261_Aspirin_sf2_file","1261_GeneralUserGS_sf2_file","1262_Aspirin_sf2_file","1262_GeneralUserGS_sf2_file","1263_Aspirin_sf2_file","1263_GeneralUserGS_sf2_file","1264_Aspirin_sf2_file","1264_GeneralUserGS_sf2_file","1265_Aspirin_sf2_file","1265_GeneralUserGS_sf2_file","1270_Aspirin_sf2_file","1270_Chaos_sf2_file","1270_FluidR3_GM_sf2_file","1270_GeneralUserGS_sf2_file","1270_JCLive_sf2_file","1270_SBLive_sf2","1270_SoundBlasterOld_sf2","1271_Aspirin_sf2_file","1271_GeneralUserGS_sf2_file","1272_Aspirin_sf2_file","1272_GeneralUserGS_sf2_file","1273_GeneralUserGS_sf2_file","1274_GeneralUserGS_sf2_file"],drums=["35_0_Chaos_sf2_file","35_12_JCLive_sf2_file","35_16_JCLive_sf2_file","35_18_JCLive_sf2_file","35_4_Chaos_sf2_file","36_0_SBLive_sf2","36_12_JCLive_sf2_file","36_16_JCLive_sf2_file","36_18_JCLive_sf2_file","36_4_Chaos_sf2_file","37_0_SBLive_sf2","37_12_JCLive_sf2_file","37_16_JCLive_sf2_file","37_18_JCLive_sf2_file","37_4_Chaos_sf2_file","38_0_SBLive_sf2","38_12_JCLive_sf2_file","38_16_JCLive_sf2_file","38_18_JCLive_sf2_file","38_4_Chaos_sf2_file","39_0_SBLive_sf2","39_12_JCLive_sf2_file","39_16_JCLive_sf2_file","39_18_JCLive_sf2_file","39_4_Chaos_sf2_file","40_0_SBLive_sf2","40_12_JCLive_sf2_file","40_16_JCLive_sf2_file","40_18_JCLive_sf2_file","40_4_Chaos_sf2_file","41_0_SBLive_sf2","41_12_JCLive_sf2_file","41_16_JCLive_sf2_file","41_18_JCLive_sf2_file","41_4_Chaos_sf2_file","42_0_SBLive_sf2","42_12_JCLive_sf2_file","42_16_JCLive_sf2_file","42_18_JCLive_sf2_file","42_4_Chaos_sf2_file","43_0_SBLive_sf2","43_12_JCLive_sf2_file","43_16_JCLive_sf2_file","43_18_JCLive_sf2_file","43_4_Chaos_sf2_file","44_0_SBLive_sf2","44_12_JCLive_sf2_file","44_16_JCLive_sf2_file","44_18_JCLive_sf2_file","44_4_Chaos_sf2_file","45_0_SBLive_sf2","45_12_JCLive_sf2_file","45_16_JCLive_sf2_file","45_18_JCLive_sf2_file","45_4_Chaos_sf2_file","46_0_SBLive_sf2","46_12_JCLive_sf2_file","46_16_JCLive_sf2_file","46_18_JCLive_sf2_file","46_4_Chaos_sf2_file","47_0_SBLive_sf2","47_12_JCLive_sf2_file","47_16_JCLive_sf2_file","47_18_JCLive_sf2_file","47_4_Chaos_sf2_file","48_0_SBLive_sf2","48_12_JCLive_sf2_file","48_16_JCLive_sf2_file","48_18_JCLive_sf2_file","48_4_Chaos_sf2_file","49_0_SBLive_sf2","49_12_JCLive_sf2_file","49_16_JCLive_sf2_file","49_18_JCLive_sf2_file","49_4_Chaos_sf2_file","50_0_SBLive_sf2","50_12_JCLive_sf2_file","50_16_JCLive_sf2_file","50_18_JCLive_sf2_file","50_4_Chaos_sf2_file","51_0_SBLive_sf2","51_12_JCLive_sf2_file","51_16_JCLive_sf2_file","51_18_JCLive_sf2_file","51_4_Chaos_sf2_file","52_0_SBLive_sf2","52_12_JCLive_sf2_file","52_16_JCLive_sf2_file","52_18_JCLive_sf2_file","52_4_Chaos_sf2_file","53_0_SBLive_sf2","53_12_JCLive_sf2_file","53_16_JCLive_sf2_file","53_18_JCLive_sf2_file","53_4_Chaos_sf2_file","54_0_SBLive_sf2","54_12_JCLive_sf2_file","54_16_JCLive_sf2_file","54_18_JCLive_sf2_file","54_4_Chaos_sf2_file","55_0_SBLive_sf2","55_12_JCLive_sf2_file","55_16_JCLive_sf2_file","55_18_JCLive_sf2_file","55_4_Chaos_sf2_file","56_0_SBLive_sf2","56_12_JCLive_sf2_file","56_16_JCLive_sf2_file","56_18_JCLive_sf2_file","56_4_Chaos_sf2_file","57_0_SBLive_sf2","57_12_JCLive_sf2_file","57_16_JCLive_sf2_file","57_18_JCLive_sf2_file","57_4_Chaos_sf2_file","58_0_SBLive_sf2","58_12_JCLive_sf2_file","58_16_JCLive_sf2_file","58_18_JCLive_sf2_file","58_4_Chaos_sf2_file","59_0_SBLive_sf2","59_12_JCLive_sf2_file","59_16_JCLive_sf2_file","59_18_JCLive_sf2_file","59_4_Chaos_sf2_file","60_0_SBLive_sf2","60_12_JCLive_sf2_file","60_16_JCLive_sf2_file","60_18_JCLive_sf2_file","60_4_Chaos_sf2_file","61_0_SBLive_sf2","61_12_JCLive_sf2_file","61_16_JCLive_sf2_file","61_18_JCLive_sf2_file","61_4_Chaos_sf2_file","62_0_SBLive_sf2","62_12_JCLive_sf2_file","62_16_JCLive_sf2_file","62_18_JCLive_sf2_file","62_4_Chaos_sf2_file","63_0_SBLive_sf2","63_12_JCLive_sf2_file","63_16_JCLive_sf2_file","63_18_JCLive_sf2_file","63_4_Chaos_sf2_file","64_0_SBLive_sf2","64_12_JCLive_sf2_file","64_16_JCLive_sf2_file","64_18_JCLive_sf2_file","64_4_Chaos_sf2_file","65_0_SBLive_sf2","65_12_JCLive_sf2_file","65_16_JCLive_sf2_file","65_18_JCLive_sf2_file","65_4_Chaos_sf2_file","66_0_SBLive_sf2","66_12_JCLive_sf2_file","66_16_JCLive_sf2_file","66_18_JCLive_sf2_file","66_4_Chaos_sf2_file","67_0_SBLive_sf2","67_12_JCLive_sf2_file","67_16_JCLive_sf2_file","67_18_JCLive_sf2_file","67_4_Chaos_sf2_file","68_0_SBLive_sf2","68_12_JCLive_sf2_file","68_16_JCLive_sf2_file","68_18_JCLive_sf2_file","68_4_Chaos_sf2_file","69_0_SBLive_sf2","69_12_JCLive_sf2_file","69_16_JCLive_sf2_file","69_18_JCLive_sf2_file","69_4_Chaos_sf2_file","70_0_SBLive_sf2","70_12_JCLive_sf2_file","70_16_JCLive_sf2_file","70_18_JCLive_sf2_file","70_4_Chaos_sf2_file","71_0_SBLive_sf2","71_12_JCLive_sf2_file","71_16_JCLive_sf2_file","71_18_JCLive_sf2_file","71_4_Chaos_sf2_file","72_0_SBLive_sf2","72_12_JCLive_sf2_file","72_16_JCLive_sf2_file","72_18_JCLive_sf2_file","72_4_Chaos_sf2_file","73_0_SBLive_sf2","73_12_JCLive_sf2_file","73_16_JCLive_sf2_file","73_18_JCLive_sf2_file","73_4_Chaos_sf2_file","74_0_SBLive_sf2","74_12_JCLive_sf2_file","74_16_JCLive_sf2_file","74_18_JCLive_sf2_file","74_4_Chaos_sf2_file","75_0_SBLive_sf2","75_12_JCLive_sf2_file","75_16_JCLive_sf2_file","75_18_JCLive_sf2_file","75_4_Chaos_sf2_file","76_0_SBLive_sf2","76_12_JCLive_sf2_file","76_16_JCLive_sf2_file","76_18_JCLive_sf2_file","76_4_Chaos_sf2_file","77_0_SBLive_sf2","77_12_JCLive_sf2_file","77_16_JCLive_sf2_file","77_18_JCLive_sf2_file","77_4_Chaos_sf2_file","78_0_SBLive_sf2","78_12_JCLive_sf2_file","78_16_JCLive_sf2_file","78_18_JCLive_sf2_file","78_4_Chaos_sf2_file","79_0_SBLive_sf2","79_12_JCLive_sf2_file","79_16_JCLive_sf2_file","79_18_JCLive_sf2_file","79_4_Chaos_sf2_file","80_0_SBLive_sf2","80_12_JCLive_sf2_file","80_16_JCLive_sf2_file","80_18_JCLive_sf2_file","80_4_Chaos_sf2_file","81_0_SBLive_sf2","81_12_JCLive_sf2_file","81_16_JCLive_sf2_file","81_18_JCLive_sf2_file","81_4_Chaos_sf2_file"],instrumentNames=[];instrumentNames[0]="Acoustic Grand Piano: Piano";instrumentNames[1]="Bright Acoustic Piano: Piano";instrumentNames[2]="Electric Grand Piano: Piano";instrumentNames[3]="Honky-tonk Piano: Piano";instrumentNames[4]="Electric Piano 1: Piano";instrumentNames[5]="Electric Piano 2: Piano";instrumentNames[6]="Harpsichord: Piano";instrumentNames[7]="Clavinet: Piano";instrumentNames[8]="Celesta: Chromatic Percussion";instrumentNames[9]="Glockenspiel: Chromatic Percussion";instrumentNames[10]="Music Box: Chromatic Percussion";instrumentNames[11]="Vibraphone: Chromatic Percussion";instrumentNames[12]="Marimba: Chromatic Percussion";instrumentNames[13]="Xylophone: Chromatic Percussion";instrumentNames[14]="Tubular Bells: Chromatic Percussion";instrumentNames[15]="Dulcimer: Chromatic Percussion";instrumentNames[16]="Drawbar Organ: Organ";instrumentNames[17]="Percussive Organ: Organ";instrumentNames[18]="Rock Organ: Organ";instrumentNames[19]="Church Organ: Organ";instrumentNames[20]="Reed Organ: Organ";instrumentNames[21]="Accordion: Organ";instrumentNames[22]="Harmonica: Organ";instrumentNames[23]="Tango Accordion: Organ";instrumentNames[24]="Acoustic Guitar (nylon): Guitar";instrumentNames[25]="Acoustic Guitar (steel): Guitar";instrumentNames[26]="Electric Guitar (jazz): Guitar";instrumentNames[27]="Electric Guitar (clean): Guitar";instrumentNames[28]="Electric Guitar (muted): Guitar";instrumentNames[29]="Overdriven Guitar: Guitar";instrumentNames[30]="Distortion Guitar: Guitar";instrumentNames[31]="Guitar Harmonics: Guitar";instrumentNames[32]="Acoustic Bass: Bass";instrumentNames[33]="Electric Bass (finger): Bass";instrumentNames[34]="Electric Bass (pick): Bass";instrumentNames[35]="Fretless Bass: Bass";instrumentNames[36]="Slap Bass 1: Bass";instrumentNames[37]="Slap Bass 2: Bass";instrumentNames[38]="Synth Bass 1: Bass";instrumentNames[39]="Synth Bass 2: Bass";instrumentNames[40]="Violin: Strings";instrumentNames[41]="Viola: Strings";instrumentNames[42]="Cello: Strings";instrumentNames[43]="Contrabass: Strings";instrumentNames[44]="Tremolo Strings: Strings";instrumentNames[45]="Pizzicato Strings: Strings";instrumentNames[46]="Orchestral Harp: Strings";instrumentNames[47]="Timpani: Strings";instrumentNames[48]="String Ensemble 1: Ensemble";instrumentNames[49]="String Ensemble 2: Ensemble";instrumentNames[50]="Synth Strings 1: Ensemble";instrumentNames[51]="Synth Strings 2: Ensemble";instrumentNames[52]="Choir Aahs: Ensemble";instrumentNames[53]="Voice Oohs: Ensemble";instrumentNames[54]="Synth Choir: Ensemble";instrumentNames[55]="Orchestra Hit: Ensemble";instrumentNames[56]="Trumpet: Brass";instrumentNames[57]="Trombone: Brass";instrumentNames[58]="Tuba: Brass";instrumentNames[59]="Muted Trumpet: Brass";instrumentNames[60]="French Horn: Brass";instrumentNames[61]="Brass Section: Brass";instrumentNames[62]="Synth Brass 1: Brass";instrumentNames[63]="Synth Brass 2: Brass";instrumentNames[64]="Soprano Sax: Reed";instrumentNames[65]="Alto Sax: Reed";instrumentNames[66]="Tenor Sax: Reed";instrumentNames[67]="Baritone Sax: Reed";instrumentNames[68]="Oboe: Reed";instrumentNames[69]="English Horn: Reed";instrumentNames[70]="Bassoon: Reed";instrumentNames[71]="Clarinet: Reed";instrumentNames[72]="Piccolo: Pipe";instrumentNames[73]="Flute: Pipe";instrumentNames[74]="Recorder: Pipe";instrumentNames[75]="Pan Flute: Pipe";instrumentNames[76]="Blown bottle: Pipe";instrumentNames[77]="Shakuhachi: Pipe";instrumentNames[78]="Whistle: Pipe";instrumentNames[79]="Ocarina: Pipe";instrumentNames[80]="Lead 1 (square): Synth Lead";instrumentNames[81]="Lead 2 (sawtooth): Synth Lead";instrumentNames[82]="Lead 3 (calliope): Synth Lead";instrumentNames[83]="Lead 4 (chiff): Synth Lead";instrumentNames[84]="Lead 5 (charang): Synth Lead";instrumentNames[85]="Lead 6 (voice): Synth Lead";instrumentNames[86]="Lead 7 (fifths): Synth Lead";instrumentNames[87]="Lead 8 (bass + lead): Synth Lead";instrumentNames[88]="Pad 1 (new age): Synth Pad";instrumentNames[89]="Pad 2 (warm): Synth Pad";instrumentNames[90]="Pad 3 (polysynth): Synth Pad";instrumentNames[91]="Pad 4 (choir): Synth Pad";instrumentNames[92]="Pad 5 (bowed): Synth Pad";instrumentNames[93]="Pad 6 (metallic): Synth Pad";instrumentNames[94]="Pad 7 (halo): Synth Pad";instrumentNames[95]="Pad 8 (sweep): Synth Pad";instrumentNames[96]="FX 1 (rain): Synth Effects";instrumentNames[97]="FX 2 (soundtrack): Synth Effects";instrumentNames[98]="FX 3 (crystal): Synth Effects";instrumentNames[99]="FX 4 (atmosphere): Synth Effects";instrumentNames[100]="FX 5 (brightness): Synth Effects";instrumentNames[101]="FX 6 (goblins): Synth Effects";instrumentNames[102]="FX 7 (echoes): Synth Effects";instrumentNames[103]="FX 8 (sci-fi): Synth Effects";instrumentNames[104]="Sitar: Ethnic";instrumentNames[105]="Banjo: Ethnic";instrumentNames[106]="Shamisen: Ethnic";instrumentNames[107]="Koto: Ethnic";instrumentNames[108]="Kalimba: Ethnic";instrumentNames[109]="Bagpipe: Ethnic";instrumentNames[110]="Fiddle: Ethnic";instrumentNames[111]="Shanai: Ethnic";instrumentNames[112]="Tinkle Bell: Percussive";instrumentNames[113]="Agogo: Percussive";instrumentNames[114]="Steel Drums: Percussive";instrumentNames[115]="Woodblock: Percussive";instrumentNames[116]="Taiko Drum: Percussive";instrumentNames[117]="Melodic Tom: Percussive";instrumentNames[118]="Synth Drum: Percussive";instrumentNames[119]="Reverse Cymbal: Percussive";instrumentNames[120]="Guitar Fret Noise: Sound effects";instrumentNames[121]="Breath Noise: Sound effects";instrumentNames[122]="Seashore: Sound effects";instrumentNames[123]="Bird Tweet: Sound effects";instrumentNames[124]="Telephone Ring: Sound effects";instrumentNames[125]="Helicopter: Sound effects";instrumentNames[126]="Applause: Sound effects";instrumentNames[127]="Gunshot: Sound effects";const list=Object.freeze(Object.defineProperty({__proto__:null,instruments,drums,instrumentNames},Symbol.toStringTag,{value:"Module"}));var SoundFont2={exports:{}};(function(h,y){(function(S,n){h.exports=n()})(window,function(){return function(S){var n={};function e(f){if(n[f])return n[f].exports;var i=n[f]={i:f,l:!1,exports:{}};return S[f].call(i.exports,i,i.exports,e),i.l=!0,i.exports}return e.m=S,e.c=n,e.d=function(f,i,l){e.o(f,i)||Object.defineProperty(f,i,{enumerable:!0,get:l})},e.r=function(f){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(f,"__esModule",{value:!0})},e.t=function(f,i){if(1&i&&(f=e(f)),8&i||4&i&&typeof f=="object"&&f&&f.__esModule)return f;var l=Object.create(null);if(e.r(l),Object.defineProperty(l,"default",{enumerable:!0,value:f}),2&i&&typeof f!="string")for(var t in f)e.d(l,t,function(s){return f[s]}.bind(null,t));return l},e.n=function(f){var i=f&&f.__esModule?function(){return f.default}:function(){return f};return e.d(i,"a",i),i},e.o=function(f,i){return Object.prototype.hasOwnProperty.call(f,i)},e.p="",e(e.s="./src/index.ts")}({"./src/chunk.ts":function(S,n,e){e.r(n),e.d(n,"SF2Chunk",function(){return r});var f=e("./src/riff/index.ts"),i=e("./src/constants.ts"),l=e("./src/chunks/index.ts");function t(u){return(t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o){return typeof o}:function(o){return o&&typeof Symbol=="function"&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(u)}function s(u,o){for(var d=0;d>10&63,polarity:s>>9&1,direction:s>>8&1,palette:s>>7&1,index:127&s}},t=function(s,c){if(s.id!==c)throw new f.ParseError("Unexpected chunk ID","'".concat(c,"'"),"'".concat(s.id,"'"));if(s.length%i.SF_MODULATOR_SIZE)throw new f.ParseError("Invalid size for the '".concat(c,"' sub-chunk"));return s.iterate(function(v){return{source:l(v.getInt16BE()),id:v.getInt16BE(),value:v.getInt16BE(),valueSource:l(v.getInt16BE()),transform:v.getInt16BE()}})}},"./src/chunks/presets/headers.ts":function(S,n,e){e.r(n),e.d(n,"getPresetHeaders",function(){return l});var f=e("./src/riff/index.ts"),i=e("./src/constants.ts"),l=function(t){if(t.id!=="phdr")throw new f.ParseError("Invalid chunk ID","'phdr'","'".concat(t.id,"'"));if(t.length%i.SF_PRESET_HEADER_SIZE)throw new f.ParseError("Invalid size for the 'phdr' sub-chunk");return t.iterate(function(s){return{name:s.getString(),preset:s.getInt16(),bank:s.getInt16(),bagIndex:s.getInt16(),library:s.getUInt32(),genre:s.getUInt32(),morphology:s.getUInt32()}})}},"./src/chunks/presets/index.ts":function(S,n,e){e.r(n);var f=e("./src/chunks/presets/headers.ts");e.d(n,"getPresetHeaders",function(){return f.getPresetHeaders})},"./src/chunks/samples/headers.ts":function(S,n,e){e.r(n),e.d(n,"getSampleHeaders",function(){return l});var f=e("./src/riff/index.ts"),i=e("./src/constants.ts"),l=function(t){if(t.id!=="shdr")throw new f.ParseError("Unexpected chunk ID","'shdr'","'".concat(t.id,"'"));if(t.length%i.SF_SAMPLE_HEADER_SIZE)throw new f.ParseError("Invalid size for the 'shdr' sub-chunk");return t.iterate(function(s){return{name:s.getString(),start:s.getUInt32(),end:s.getUInt32(),startLoop:s.getUInt32(),endLoop:s.getUInt32(),sampleRate:s.getUInt32(),originalPitch:s.getByte(),pitchCorrection:s.getChar(),link:s.getInt16(),type:s.getInt16()}})}},"./src/chunks/samples/index.ts":function(S,n,e){e.r(n);var f=e("./src/chunks/samples/headers.ts");e.d(n,"getSampleHeaders",function(){return f.getSampleHeaders})},"./src/chunks/zones.ts":function(S,n,e){e.r(n),e.d(n,"getZones",function(){return t}),e.d(n,"getItemsInZone",function(){return s});var f=e("./src/riff/index.ts"),i=e("./src/constants.ts"),l=e("./src/types/index.ts"),t=function(r,u){if(r.id!==u)throw new f.ParseError("Unexpected chunk ID","'".concat(u,"'"),"'".concat(r.id,"'"));if(r.length%i.SF_BAG_SIZE)throw new f.ParseError("Invalid size for the '".concat(u,"' sub-chunk"));return r.iterate(function(o){return{generatorIndex:o.getInt16(),modulatorIndex:o.getInt16()}})},s=function(r,u,o,d,a,L){for(var g=[],U=0;U1&&arguments[1]!==void 0?arguments[1]:0;(function(u,o){if(!(u instanceof o))throw new TypeError("Cannot call a class as a function")})(this,s),l(this,"target",[]),l(this,"chunk",void 0),l(this,"position",0),this.chunk=p,this.position=r}var c,v;return c=s,(v=[{key:"iterate",value:function(p){for(;this.position0&&arguments[0]!==void 0?arguments[0]:20,r=Object(f.getStringFromBuffer)(this.getBuffer(this.position,p));return this.position+=p,r}},{key:"getInt16",value:function(){return this.chunk.buffer[this.position++]|this.chunk.buffer[this.position++]<<8}},{key:"getInt16BE",value:function(){return this.getInt16()<<16>>16}},{key:"getUInt32",value:function(){return(this.chunk.buffer[this.position++]|this.chunk.buffer[this.position++]<<8|this.chunk.buffer[this.position++]<<16|this.chunk.buffer[this.position++]<<24)>>>0}},{key:"getByte",value:function(){return this.chunk.buffer[this.position++]}},{key:"getChar",value:function(){return this.chunk.buffer[this.position++]<<24>>24}},{key:"skip",value:function(p){this.position+=p}},{key:"getBuffer",value:function(p,r){return this.chunk.buffer.subarray(p,p+r)}},{key:"currentPosition",get:function(){return this.position}}])&&i(c.prototype,v),s}()},"./src/riff/index.ts":function(S,n,e){e.r(n);var f=e("./src/riff/chunkIterator.ts");e.d(n,"ChunkIterator",function(){return f.ChunkIterator});var i=e("./src/riff/parseError.ts");e.d(n,"ParseError",function(){return i.ParseError});var l=e("./src/riff/parser.ts");e.d(n,"parseBuffer",function(){return l.parseBuffer}),e.d(n,"getChunk",function(){return l.getChunk}),e.d(n,"getChunkLength",function(){return l.getChunkLength}),e.d(n,"getSubChunks",function(){return l.getSubChunks}),e.d(n,"getChunkId",function(){return l.getChunkId});var t=e("./src/riff/riffChunk.ts");e.d(n,"RIFFChunk",function(){return t.RIFFChunk})},"./src/riff/parseError.ts":function(S,n,e){function f(p){return(f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(p)}function i(p,r){return!r||f(r)!=="object"&&typeof r!="function"?function(u){if(u===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return u}(p):r}function l(p){var r=typeof Map=="function"?new Map:void 0;return(l=function(u){if(u===null||(o=u,Function.toString.call(o).indexOf("[native code]")===-1))return u;var o;if(typeof u!="function")throw new TypeError("Super expression must either be null or a function");if(r!==void 0){if(r.has(u))return r.get(u);r.set(u,d)}function d(){return t(u,arguments,c(this).constructor)}return d.prototype=Object.create(u.prototype,{constructor:{value:d,enumerable:!1,writable:!0,configurable:!0}}),s(d,u)})(p)}function t(p,r,u){return(t=function(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}()?Reflect.construct:function(o,d,a){var L=[null];L.push.apply(L,d);var g=new(Function.bind.apply(o,L));return a&&s(g,a.prototype),g}).apply(null,arguments)}function s(p,r){return(s=Object.setPrototypeOf||function(u,o){return u.__proto__=o,u})(p,r)}function c(p){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)})(p)}e.r(n),e.d(n,"ParseError",function(){return v});var v=function(p){function r(u,o,d){return function(a,L){if(!(a instanceof L))throw new TypeError("Cannot call a class as a function")}(this,r),i(this,c(r).call(this,"".concat(u).concat(o&&d?", expected ".concat(o,", received ").concat(d):"")))}return function(u,o){if(typeof o!="function"&&o!==null)throw new TypeError("Super expression must either be null or a function");u.prototype=Object.create(o&&o.prototype,{constructor:{value:u,writable:!0,configurable:!0}}),o&&s(u,o)}(r,l(Error)),r}()},"./src/riff/parser.ts":function(S,n,e){e.r(n),e.d(n,"parseBuffer",function(){return t}),e.d(n,"getChunk",function(){return s}),e.d(n,"getChunkLength",function(){return c}),e.d(n,"getSubChunks",function(){return v}),e.d(n,"getChunkId",function(){return p});var f=e("./src/riff/parseError.ts"),i=e("./src/utils/buffer.ts"),l=e("./src/riff/riffChunk.ts"),t=function(r){var u=p(r);if(u!=="RIFF")throw new f.ParseError("Invalid file format","RIFF",u);var o=p(r,8);if(o!=="sfbk")throw new f.ParseError("Invalid signature","sfbk",o);var d=r.subarray(8),a=v(d.subarray(4));return new l.RIFFChunk(u,d.length,d,a)},s=function(r,u){var o=p(r,u),d=c(r,u+4),a=[];return o!=="RIFF"&&o!=="LIST"||(a=v(r.subarray(u+12))),new l.RIFFChunk(o,d,r.subarray(u+8),a)},c=function(r,u){return((r=r.subarray(u,u+4))[0]|r[1]<<8|r[2]<<16|r[3]<<24)>>>0},v=function(r){for(var u=[],o=0;o<=r.length-8;){var d=s(r,o);u.push(d),o=(o+=8+d.length)%2?o+1:o}return u},p=function(r){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Object(i.getStringFromBuffer)(r.subarray(u,u+4))}},"./src/riff/riffChunk.ts":function(S,n,e){e.r(n),e.d(n,"RIFFChunk",function(){return s});var f=e("./src/riff/chunkIterator.ts"),i=e("./src/utils/index.ts");function l(c,v){for(var p=0;p0&&arguments[0]!==void 0?arguments[0]:0,u=arguments.length>1?arguments[1]:void 0;return Object(i.getStringFromBuffer)(this.getBuffer(r,u||this.length-r))}},{key:"getInt16",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[r++]|this.buffer[r]<<8}},{key:"getUInt32",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return(this.buffer[r++]|this.buffer[r++]<<8|this.buffer[r++]<<16|this.buffer[r]<<24)>>>0}},{key:"getByte",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[r]}},{key:"getChar",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.buffer[r]<<24>>24}},{key:"iterator",value:function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return new f.ChunkIterator(this,r)}},{key:"iterate",value:function(r){var u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,o=new f.ChunkIterator(this,u);return o.iterate(r),o.target}},{key:"getBuffer",value:function(r,u){return this.buffer.subarray(r,r+u)}}])&&l(v.prototype,p),c}()},"./src/soundFont2.ts":function(S,n,e){e.r(n),e.d(n,"SoundFont2",function(){return u});var f=e("./src/types/index.ts"),i=e("./src/chunk.ts"),l=e("./src/riff/index.ts"),t=e("./src/chunks/index.ts"),s=e("./src/utils/index.ts");function c(o){for(var d=1;d1&&arguments[1]!==void 0?arguments[1]:0,g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return Object(s.memoize)(function(U,B,F){var M=a.banks[B];if(M){var O=M.presets[F];if(O){var R=O.zones.find(function(N){return a.isKeyInRange(N,U)});if(R){var E=R.instrument,A=E.zones.find(function(N){return a.isKeyInRange(N,U)});if(A){var k=A.sample,b=c({},R.generators,A.generators),P=c({},R.modulators,A.modulators);return{keyNumber:U,preset:O,instrument:E,sample:k,generators:b,modulators:P}}}}}return null})(d,L,g)}},{key:"isKeyInRange",value:function(d,a){return d.keyRange===void 0||d.keyRange.lo<=a&&d.keyRange.hi>=a}},{key:"getBanks",value:function(){return this.presets.reduce(function(d,a){var L=a.header.bank;return d[L]||(d[L]={presets:[]}),d[L].presets[a.header.preset]=a,d},[])}},{key:"getPresets",value:function(){var d=this.presetData,a=d.presetHeaders,L=d.presetZones,g=d.presetGenerators,U=d.presetModulators;return Object(t.getItemsInZone)(a,L,U,g,this.instruments,f.GeneratorType.Instrument).filter(function(B){return B.header.name!=="EOP"}).map(function(B){return{header:B.header,globalZone:B.globalZone,zones:B.zones.map(function(F){return{keyRange:F.keyRange,generators:F.generators,modulators:F.modulators,instrument:F.reference}})}})}},{key:"getInstruments",value:function(){var d=this.presetData,a=d.instrumentHeaders,L=d.instrumentZones,g=d.instrumentModulators,U=d.instrumentGenerators;return Object(t.getItemsInZone)(a,L,g,U,this.samples,f.GeneratorType.SampleId).filter(function(B){return B.header.name!=="EOI"}).map(function(B){return{header:B.header,globalZone:B.globalZone,zones:B.zones.map(function(F){return{keyRange:F.keyRange,generators:F.generators,modulators:F.modulators,sample:F.reference}})}})}},{key:"getSamples",value:function(){var d=this;return this.presetData.sampleHeaders.filter(function(a){return a.name!=="EOS"}).map(function(a){if(a.name!=="EOS"&&a.sampleRate<=0)throw new Error("Illegal sample rate of ".concat(a.sampleRate," hz in sample '").concat(a.name,"'"));return a.originalPitch>=128&&a.originalPitch<=254&&(a.originalPitch=60),a.startLoop-=a.start,a.endLoop-=a.start,{header:a,data:new Int16Array(new Uint8Array(d.sampleData.subarray(2*a.start,2*a.end)).buffer)}})}}]),o}()},"./src/types/bank.ts":function(S,n){},"./src/types/generator.ts":function(S,n,e){var f,i;function l(s,c,v){return c in s?Object.defineProperty(s,c,{value:v,enumerable:!0,configurable:!0,writable:!0}):s[c]=v,s}e.r(n),e.d(n,"GeneratorType",function(){return i}),e.d(n,"DEFAULT_GENERATOR_VALUES",function(){return t}),function(s){s[s.StartAddrsOffset=0]="StartAddrsOffset",s[s.EndAddrsOffset=1]="EndAddrsOffset",s[s.StartLoopAddrsOffset=2]="StartLoopAddrsOffset",s[s.EndLoopAddrsOffset=3]="EndLoopAddrsOffset",s[s.StartAddrsCoarseOffset=4]="StartAddrsCoarseOffset",s[s.ModLFOToPitch=5]="ModLFOToPitch",s[s.VibLFOToPitch=6]="VibLFOToPitch",s[s.ModEnvToPitch=7]="ModEnvToPitch",s[s.InitialFilterFc=8]="InitialFilterFc",s[s.InitialFilterQ=9]="InitialFilterQ",s[s.ModLFOToFilterFc=10]="ModLFOToFilterFc",s[s.ModEnvToFilterFc=11]="ModEnvToFilterFc",s[s.EndAddrsCoarseOffset=12]="EndAddrsCoarseOffset",s[s.ModLFOToVolume=13]="ModLFOToVolume",s[s.Unused1=14]="Unused1",s[s.ChorusEffectsSend=15]="ChorusEffectsSend",s[s.ReverbEffectsSend=16]="ReverbEffectsSend",s[s.Pan=17]="Pan",s[s.Unused2=18]="Unused2",s[s.Unused3=19]="Unused3",s[s.Unused4=20]="Unused4",s[s.DelayModLFO=21]="DelayModLFO",s[s.FreqModLFO=22]="FreqModLFO",s[s.DelayVibLFO=23]="DelayVibLFO",s[s.FreqVibLFO=24]="FreqVibLFO",s[s.DelayModEnv=25]="DelayModEnv",s[s.AttackModEnv=26]="AttackModEnv",s[s.HoldModEnv=27]="HoldModEnv",s[s.DecayModEnv=28]="DecayModEnv",s[s.SustainModEnv=29]="SustainModEnv",s[s.ReleaseModEnv=30]="ReleaseModEnv",s[s.KeyNumToModEnvHold=31]="KeyNumToModEnvHold",s[s.KeyNumToModEnvDecay=32]="KeyNumToModEnvDecay",s[s.DelayVolEnv=33]="DelayVolEnv",s[s.AttackVolEnv=34]="AttackVolEnv",s[s.HoldVolEnv=35]="HoldVolEnv",s[s.DecayVolEnv=36]="DecayVolEnv",s[s.SustainVolEnv=37]="SustainVolEnv",s[s.ReleaseVolEnv=38]="ReleaseVolEnv",s[s.KeyNumToVolEnvHold=39]="KeyNumToVolEnvHold",s[s.KeyNumToVolEnvDecay=40]="KeyNumToVolEnvDecay",s[s.Instrument=41]="Instrument",s[s.Reserved1=42]="Reserved1",s[s.KeyRange=43]="KeyRange",s[s.VelRange=44]="VelRange",s[s.StartLoopAddrsCoarseOffset=45]="StartLoopAddrsCoarseOffset",s[s.KeyNum=46]="KeyNum",s[s.Velocity=47]="Velocity",s[s.InitialAttenuation=48]="InitialAttenuation",s[s.Reserved2=49]="Reserved2",s[s.EndLoopAddrsCoarseOffset=50]="EndLoopAddrsCoarseOffset",s[s.CoarseTune=51]="CoarseTune",s[s.FineTune=52]="FineTune",s[s.SampleId=53]="SampleId",s[s.SampleModes=54]="SampleModes",s[s.Reserved3=55]="Reserved3",s[s.ScaleTuning=56]="ScaleTuning",s[s.ExclusiveClass=57]="ExclusiveClass",s[s.OverridingRootKey=58]="OverridingRootKey",s[s.Unused5=59]="Unused5",s[s.EndOper=60]="EndOper"}(i||(i={}));var t=(l(f={},i.StartAddrsOffset,0),l(f,i.EndAddrsOffset,0),l(f,i.StartLoopAddrsOffset,0),l(f,i.EndLoopAddrsOffset,0),l(f,i.StartAddrsCoarseOffset,0),l(f,i.ModLFOToPitch,0),l(f,i.VibLFOToPitch,0),l(f,i.ModEnvToPitch,0),l(f,i.InitialFilterFc,13500),l(f,i.InitialFilterQ,0),l(f,i.ModLFOToFilterFc,0),l(f,i.ModEnvToFilterFc,0),l(f,i.EndAddrsCoarseOffset,0),l(f,i.ModLFOToVolume,0),l(f,i.ChorusEffectsSend,0),l(f,i.ReverbEffectsSend,0),l(f,i.Pan,0),l(f,i.DelayModLFO,-12e3),l(f,i.FreqModLFO,0),l(f,i.DelayVibLFO,-12e3),l(f,i.FreqVibLFO,0),l(f,i.DelayModEnv,-12e3),l(f,i.AttackModEnv,-12e3),l(f,i.HoldModEnv,-12e3),l(f,i.DecayModEnv,-12e3),l(f,i.SustainModEnv,0),l(f,i.ReleaseModEnv,-12e3),l(f,i.KeyNumToModEnvHold,0),l(f,i.KeyNumToModEnvDecay,0),l(f,i.DelayVolEnv,-12e3),l(f,i.AttackVolEnv,-12e3),l(f,i.HoldVolEnv,-12e3),l(f,i.DecayVolEnv,-12e3),l(f,i.SustainVolEnv,0),l(f,i.ReleaseVolEnv,-12e3),l(f,i.KeyNumToVolEnvHold,0),l(f,i.KeyNumToVolEnvDecay,0),l(f,i.StartLoopAddrsCoarseOffset,0),l(f,i.KeyNum,-1),l(f,i.Velocity,-1),l(f,i.InitialAttenuation,0),l(f,i.EndLoopAddrsCoarseOffset,0),l(f,i.CoarseTune,0),l(f,i.FineTune,0),l(f,i.SampleModes,0),l(f,i.ScaleTuning,100),l(f,i.ExclusiveClass,0),l(f,i.OverridingRootKey,-1),f)},"./src/types/index.ts":function(S,n,e){e.r(n);var f=e("./src/types/bank.ts");for(var i in f)i!=="default"&&function(d){e.d(n,d,function(){return f[d]})}(i);var l=e("./src/types/generator.ts");e.d(n,"GeneratorType",function(){return l.GeneratorType}),e.d(n,"DEFAULT_GENERATOR_VALUES",function(){return l.DEFAULT_GENERATOR_VALUES});var t=e("./src/types/instrument.ts");for(var i in t)["GeneratorType","DEFAULT_GENERATOR_VALUES","default"].indexOf(i)<0&&function(a){e.d(n,a,function(){return t[a]})}(i);var s=e("./src/types/key.ts");for(var i in s)["GeneratorType","DEFAULT_GENERATOR_VALUES","default"].indexOf(i)<0&&function(a){e.d(n,a,function(){return s[a]})}(i);var c=e("./src/types/metaData.ts");for(var i in c)["GeneratorType","DEFAULT_GENERATOR_VALUES","default"].indexOf(i)<0&&function(a){e.d(n,a,function(){return c[a]})}(i);var v=e("./src/types/modulator.ts");e.d(n,"ControllerType",function(){return v.ControllerType}),e.d(n,"ControllerPolarity",function(){return v.ControllerPolarity}),e.d(n,"ControllerDirection",function(){return v.ControllerDirection}),e.d(n,"ControllerPalette",function(){return v.ControllerPalette}),e.d(n,"Controller",function(){return v.Controller}),e.d(n,"TransformType",function(){return v.TransformType}),e.d(n,"DEFAULT_INSTRUMENT_MODULATORS",function(){return v.DEFAULT_INSTRUMENT_MODULATORS});var p=e("./src/types/preset.ts");for(var i in p)["GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS","default"].indexOf(i)<0&&function(a){e.d(n,a,function(){return p[a]})}(i);var r=e("./src/types/presetData.ts");for(var i in r)["GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS","default"].indexOf(i)<0&&function(a){e.d(n,a,function(){return r[a]})}(i);var u=e("./src/types/sample.ts");e.d(n,"SampleType",function(){return u.SampleType});var o=e("./src/types/zone.ts");for(var i in o)["GeneratorType","DEFAULT_GENERATOR_VALUES","ControllerType","ControllerPolarity","ControllerDirection","ControllerPalette","Controller","TransformType","DEFAULT_INSTRUMENT_MODULATORS","SampleType","default"].indexOf(i)<0&&function(a){e.d(n,a,function(){return o[a]})}(i)},"./src/types/instrument.ts":function(S,n){},"./src/types/key.ts":function(S,n){},"./src/types/metaData.ts":function(S,n){},"./src/types/modulator.ts":function(S,n,e){e.r(n),e.d(n,"ControllerType",function(){return f}),e.d(n,"ControllerPolarity",function(){return i}),e.d(n,"ControllerDirection",function(){return l}),e.d(n,"ControllerPalette",function(){return t}),e.d(n,"Controller",function(){return s}),e.d(n,"TransformType",function(){return c}),e.d(n,"DEFAULT_INSTRUMENT_MODULATORS",function(){return p});var f,i,l,t,s,c,v=e("./src/types/generator.ts");(function(r){r[r.Linear=0]="Linear",r[r.Concave=1]="Concave",r[r.Convex=2]="Convex",r[r.Switch=3]="Switch"})(f||(f={})),function(r){r[r.Unipolar=0]="Unipolar",r[r.Bipolar=1]="Bipolar"}(i||(i={})),function(r){r[r.Increasing=0]="Increasing",r[r.Decreasing=1]="Decreasing"}(l||(l={})),function(r){r[r.GeneralController=0]="GeneralController",r[r.MidiController=1]="MidiController"}(t||(t={})),function(r){r[r.NoController=0]="NoController",r[r.NoteOnVelocity=2]="NoteOnVelocity",r[r.NoteOnKeyNumber=3]="NoteOnKeyNumber",r[r.PolyPressure=10]="PolyPressure",r[r.ChannelPressure=13]="ChannelPressure",r[r.PitchWheel=14]="PitchWheel",r[r.PitchWheelSensitivity=16]="PitchWheelSensitivity",r[r.Link=127]="Link"}(s||(s={})),function(r){r[r.Linear=0]="Linear",r[r.Absolute=2]="Absolute"}(c||(c={}));var p=[{id:v.GeneratorType.InitialAttenuation,source:{type:f.Concave,polarity:i.Unipolar,direction:l.Decreasing,palette:t.GeneralController,index:s.NoteOnVelocity},value:960,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.InitialFilterFc,source:{type:f.Linear,polarity:i.Unipolar,direction:l.Decreasing,palette:t.GeneralController,index:s.NoteOnVelocity},value:-2400,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.VibLFOToPitch,source:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.ChannelPressure},value:50,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.VibLFOToPitch,source:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.MidiController,index:1},value:50,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.InitialAttenuation,source:{type:f.Concave,polarity:i.Unipolar,direction:l.Decreasing,palette:t.MidiController,index:7},value:960,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.InitialAttenuation,source:{type:f.Linear,polarity:i.Bipolar,direction:l.Increasing,palette:t.MidiController,index:10},value:1e3,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.InitialAttenuation,source:{type:f.Concave,polarity:i.Unipolar,direction:l.Decreasing,palette:t.MidiController,index:11},value:960,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.ReverbEffectsSend,source:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.MidiController,index:91},value:200,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.ChorusEffectsSend,source:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.MidiController,index:93},value:200,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.NoController},transform:c.Linear},{id:v.GeneratorType.CoarseTune,source:{type:f.Linear,polarity:i.Bipolar,direction:l.Increasing,palette:t.GeneralController,index:s.PitchWheel},value:12700,valueSource:{type:f.Linear,polarity:i.Unipolar,direction:l.Increasing,palette:t.GeneralController,index:s.PitchWheelSensitivity},transform:c.Linear}]},"./src/types/preset.ts":function(S,n){},"./src/types/presetData.ts":function(S,n){},"./src/types/sample.ts":function(S,n,e){var f;e.r(n),e.d(n,"SampleType",function(){return f}),function(i){i[i.EOS=0]="EOS",i[i.Mono=1]="Mono",i[i.Right=2]="Right",i[i.Left=4]="Left",i[i.Linked=8]="Linked",i[i.RomMono=32769]="RomMono",i[i.RomRight=32770]="RomRight",i[i.RomLeft=32772]="RomLeft",i[i.RomLinked=32776]="RomLinked"}(f||(f={}))},"./src/types/zone.ts":function(S,n){},"./src/utils/buffer.ts":function(S,n,e){e.r(n),e.d(n,"getStringFromBuffer",function(){return f});var f=function(i){return new TextDecoder("utf8").decode(i).split(/\0/)[0].trim()}},"./src/utils/index.ts":function(S,n,e){e.r(n);var f=e("./src/utils/buffer.ts");e.d(n,"getStringFromBuffer",function(){return f.getStringFromBuffer});var i=e("./src/utils/memoize.ts");e.d(n,"memoize",function(){return i.memoize})},"./src/utils/memoize.ts":function(S,n,e){e.r(n),e.d(n,"memoize",function(){return f});var f=function(i){var l={};return function(){for(var t=arguments.length,s=new Array(t),c=0;cMath.pow(2,h/1200),Q=h=>h/1e3,G=(h,y)=>{const S=Math.pow(10,y);return Math.round(h*S)/S};typeof AudioParam<"u"&&(AudioParam.prototype.dahdsr=function(h,y,S,n,e,f,i,l,t){e=Math.max(G(e,4),.001),i=Math.max(G(i,4),.001),t=G(t,4),y=Math.max(y,.001);let s=h;return this.setValueAtTime(y,s),this.setValueAtTime(y,s+=n),this.exponentialRampToValueAtTime(S,s+=e),this.setValueAtTime(S,s+=f),this.exponentialRampToValueAtTime(Math.max(l*S,.001),s+=i),(c,v)=>{this.cancelAndHoldAtTime(c);const p=Math.max(v!=null?v:y,.001);this.exponentialRampToValueAtTime(p,c+t)}});const T={0:"startAddrOffset",1:"endAddrOffset",2:"startloopAddrsOffset",3:"endloopAddrsOffset",4:"startAddrsCoarseOffset",5:"modLfoToPitch",6:"vibLfoToPitch",7:"modEnvToPitch",8:"initialFilterFc",9:"initialFilterQ",10:"modLfoToFilterFc",11:"modEnvToFilterFc",12:"endAddrsCoarseOffset",13:"modLfoToVolume",14:"unused1",15:"chorusEffectsSend",16:"reverbEffectsSend",17:"pan",18:"unused2",19:"unused3",20:"unused4",21:"delayModLFO",22:"freqModLFO",23:"delayVibLFO",24:"freqVibLFO",25:"delayModEnv",26:"attackModEnv",27:"holdModEnv",28:"decayModEnv",29:"sustainModEnv",30:"releaseModEnv",31:"keyNumToModEnvHold",32:"keyNumToModEnvDecay",33:"delayVolEnv",34:"attackVolEnv",35:"holdVolEnv",36:"decayVolEnv",37:"sustainVolEnv",38:"releaseVolEnv",39:"keyNumToVolEnvHold",40:"keyNumToVolEnvDecay",41:"instrument",42:"reserved1",43:"keyRange",44:"velRange",45:"startloopAddrsCoarseOffset",46:"keyNum",47:"velocity",48:"initialAttenuation",49:"reserved2",50:"endloopAddrsCoarseOffset",51:"coarseTune",52:"fineTune",53:"sampleID",54:"sampleModes",55:"reserved3",56:"scaleTuning",57:"exclusiveClass",58:"overridingRootKey",59:"unused5",60:"endOper"};Object.fromEntries(Object.entries(SoundFont2.exports.DEFAULT_GENERATOR_VALUES).map(([h,y])=>[T[h],y]));const D=(h,y,S,n,e)=>{var f,i,l,t,s,c,v;const p=SoundFont2.exports.DEFAULT_GENERATOR_VALUES[h];if(typeof p!="number")throw new Error(`no default value found for generator with index ${h}`);const r=y.generators[h],u=(i=(f=S.globalZone)==null?void 0:f.generators)==null?void 0:i[h],o=(l=n==null?void 0:n.generators)==null?void 0:l[h],d=(s=(t=e.globalZone)==null?void 0:t.generators)==null?void 0:s[h],a=r&&"value"in r?r.value:void 0,L=u&&"value"in u?u.value:void 0,g=o&&"value"in o?o.value:void 0,U=d&&"value"in d?d.value:void 0,B=(c=a!=null?a:L)!=null?c:p,F=(v=g!=null?g:U)!=null?v:0;return B+F},J=h=>SoundFont2.exports.DEFAULT_GENERATOR_VALUES[h]!==void 0,W=(h,y,S)=>{var n,e,f,i;return Object.fromEntries(Array.from(new Set([Object.keys((e=(n=S.globalZone)==null?void 0:n.generators)!=null?e:{}),Object.keys(y.generators),Object.keys((i=(f=y.instrument.globalZone)==null?void 0:f.generators)!=null?i:{}),Object.keys(h.generators)].flat())).filter(J).map(l=>[T[l],D(parseInt(l),h,y.instrument,y,S)]))};async function ae(h){const y=await fetch(h).then(n=>n.arrayBuffer()),S=new Uint8Array(y);return new SoundFont2.exports.SoundFont2(S)}function X(h,y,S){let{time:n=h.currentTime}=S;const{midi:e,start:f,velocity:i=.3,startLoop:l,endLoop:t,sampleRate:s,originalPitch:c,pitchCorrection:v,type:p,sampleModes:r=0,overridingRootKey:u,fineTune:o=0,startloopAddrsOffset:d=0,startloopAddrsCoarseOffset:a=0,endloopAddrsOffset:L=0,endloopAddrsCoarseOffset:g=0,delayVolEnv:U=-12e3,attackVolEnv:B=-12e3,holdVolEnv:F=-12e3,decayVolEnv:M=-12e3,sustainVolEnv:O=0,releaseVolEnv:R=-12e3,pan:E=0,...A}=S,k=100*(u!==void 0&&u!==-1?u:c)+v-o,b=e*100-k,P=1*Math.pow(2,b/1200);y.playbackRate.value=P;const N=l+d+a*32768,I=t+L+g*32768;I>N&&r===1?(y.loopStart=N/s,y.loopEnd=I/s,y.loop=!0):r===3&&console.warn("unimplemented sampleMode 3 (play till end on note off)"),Object.keys(A).filter(w=>!["name","instrument","keyRange","sampleID","end"].includes(w)).length;const V=h.createGain(),j=[n,0,i,m(U),m(B),m(F),m(M),O>=960?0:1-Q(O),m(R)],Z=V.gain.dahdsr(...j),H=h.createStereoPanner();return H.pan.value=E/1e3,V.connect(H),y.connect(V),H.connect(h.destination),y.start(n),(w=h.currentTime)=>{y.stop(w+m(R)),Z(w)}}function Y(h,y,S={}){const{header:n,data:e}=y,f=new Float32Array(e.length);for(let t=0;t!h.keyRange||h.keyRange.lo<=y&&y<=h.keyRange.hi,x=(h,y)=>h.zones.filter(S=>C(S,y)&&S.instrument).map(S=>S.instrument.zones.filter(n=>C(n,y)).map(n=>{const e=W(n,S,h);return{...n,mergedGenerators:e}})).flat(),ce=(h,y,S,n=h.currentTime)=>{const e=x(y,S).map(f=>Y(h,f.sample,{...f.mergedGenerators,midi:S,time:n}));return(f=h.currentTime)=>{e.forEach(i=>i(f))}};Pattern.prototype.soundfont=function(h,y=0){return this.onTrigger((S,n,e)=>{const f=getAudioContext(),i=getPlayableNoteValue(n),l=h.presets[y%h.presets.length],t=f.currentTime+S-e,s=[f,l,toMidi(i),t];ce(...s)(t+n.duration)})};const soundfontCache=new Map;function loadSoundfont(h){if(soundfontCache.get(h))return soundfontCache.get(h);const y=ae(h);return soundfontCache.set(h,y),y}export{getFontBufferSource,loadSoundfont,list as soundfontList,ce as startPresetNote}; diff --git a/packages/react/examples/nano-repl/dist/assets/index.e7ac54e9.js b/packages/react/examples/nano-repl/dist/assets/index.e7ac54e9.js deleted file mode 100644 index cf1d497eb..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.e7ac54e9.js +++ /dev/null @@ -1 +0,0 @@ -import{f as s,i as t,h as o,j as d,q as f,l as p,k as u,p as i,o as l,n as r,w as g}from"./index.ec9f9930.js";export{s as getAudioContext,t as getCachedBuffer,o as getDestination,d as getLoadedBuffer,f as getLoadedSamples,p as loadBuffer,u as loadGithubSamples,i as panic,l as resetLoadedSamples,r as samples,g as webaudioOutput}; diff --git a/packages/react/examples/nano-repl/dist/assets/index.ec9f9930.js b/packages/react/examples/nano-repl/dist/assets/index.ec9f9930.js deleted file mode 100644 index de4a10a08..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.ec9f9930.js +++ /dev/null @@ -1,124 +0,0 @@ -var pn=Object.defineProperty;var fn=(o,e,s)=>e in o?pn(o,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[e]=s;var Rt=(o,e,s)=>(fn(o,typeof e!="symbol"?e+"":e,s),s);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const h of c)if(h.type==="childList")for(const d of h.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&a(d)}).observe(document,{childList:!0,subtree:!0});function s(c){const h={};return c.integrity&&(h.integrity=c.integrity),c.referrerpolicy&&(h.referrerPolicy=c.referrerpolicy),c.crossorigin==="use-credentials"?h.credentials="include":c.crossorigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function a(c){if(c.ep)return;c.ep=!0;const h=s(c);fetch(c.href,h)}})();var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function getAugmentedNamespace(o){var e=o.default;if(typeof e=="function"){var s=function(){return e.apply(this,arguments)};s.prototype=e.prototype}else s={};return Object.defineProperty(s,"__esModule",{value:!0}),Object.keys(o).forEach(function(a){var c=Object.getOwnPropertyDescriptor(o,a);Object.defineProperty(s,a,c.get?c:{enumerable:!0,get:function(){return o[a]}})}),s}var react={exports:{}},react_production_min={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var l$1=Symbol.for("react.element"),n$1=Symbol.for("react.portal"),p$3=Symbol.for("react.fragment"),q$1=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),t$2=Symbol.for("react.provider"),u=Symbol.for("react.context"),v$1=Symbol.for("react.forward_ref"),w=Symbol.for("react.suspense"),x=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),z$1=Symbol.iterator;function A$1(o){return o===null||typeof o!="object"?null:(o=z$1&&o[z$1]||o["@@iterator"],typeof o=="function"?o:null)}var B$1={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C$2=Object.assign,D$1={};function E$1(o,e,s){this.props=o,this.context=e,this.refs=D$1,this.updater=s||B$1}E$1.prototype.isReactComponent={};E$1.prototype.setState=function(o,e){if(typeof o!="object"&&typeof o!="function"&&o!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,o,e,"setState")};E$1.prototype.forceUpdate=function(o){this.updater.enqueueForceUpdate(this,o,"forceUpdate")};function F$1(){}F$1.prototype=E$1.prototype;function G$1(o,e,s){this.props=o,this.context=e,this.refs=D$1,this.updater=s||B$1}var H$1=G$1.prototype=new F$1;H$1.constructor=G$1;C$2(H$1,E$1.prototype);H$1.isPureReactComponent=!0;var I$2=Array.isArray,J=Object.prototype.hasOwnProperty,K$1={current:null},L$1={key:!0,ref:!0,__self:!0,__source:!0};function M$1(o,e,s){var a,c={},h=null,d=null;if(e!=null)for(a in e.ref!==void 0&&(d=e.ref),e.key!==void 0&&(h=""+e.key),e)J.call(e,a)&&!L$1.hasOwnProperty(a)&&(c[a]=e[a]);var g=arguments.length-2;if(g===1)c.children=s;else if(1>>1,Tt=dt[xt];if(0>>1;xtc(Bt,Ct))Ftc(Lt,Bt)?(dt[xt]=Lt,dt[Ft]=Ct,xt=Ft):(dt[xt]=Bt,dt[_t]=Ct,xt=_t);else if(Ftc(Lt,Ct))dt[xt]=Lt,dt[Ft]=Ct,xt=Ft;else break e}}return Dt}function c(dt,Dt){var Ct=dt.sortIndex-Dt.sortIndex;return Ct!==0?Ct:dt.id-Dt.id}if(typeof performance=="object"&&typeof performance.now=="function"){var h=performance;o.unstable_now=function(){return h.now()}}else{var d=Date,g=d.now();o.unstable_now=function(){return d.now()-g}}var _=[],b=[],$=1,j=null,_e=3,et=!1,tt=!1,nt=!1,st=typeof setTimeout=="function"?setTimeout:null,rt=typeof clearTimeout=="function"?clearTimeout:null,it=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function at(dt){for(var Dt=s(b);Dt!==null;){if(Dt.callback===null)a(b);else if(Dt.startTime<=dt)a(b),Dt.sortIndex=Dt.expirationTime,e(_,Dt);else break;Dt=s(b)}}function ot(dt){if(nt=!1,at(dt),!tt)if(s(_)!==null)tt=!0,St(ut);else{var Dt=s(b);Dt!==null&&At(ot,Dt.startTime-dt)}}function ut(dt,Dt){tt=!1,nt&&(nt=!1,rt(lt),lt=-1),et=!0;var Ct=_e;try{for(at(Dt),j=s(_);j!==null&&(!(j.expirationTime>Dt)||dt&&!gt());){var xt=j.callback;if(typeof xt=="function"){j.callback=null,_e=j.priorityLevel;var Tt=xt(j.expirationTime<=Dt);Dt=o.unstable_now(),typeof Tt=="function"?j.callback=Tt:j===s(_)&&a(_),at(Dt)}else a(_);j=s(_)}if(j!==null)var kt=!0;else{var _t=s(b);_t!==null&&At(ot,_t.startTime-Dt),kt=!1}return kt}finally{j=null,_e=Ct,et=!1}}var ct=!1,ht=null,lt=-1,pt=5,ft=-1;function gt(){return!(o.unstable_now()-ftdt||125xt?(dt.sortIndex=Ct,e(b,dt),s(_)===null&&dt===s(b)&&(nt?(rt(lt),lt=-1):nt=!0,At(ot,Ct-xt))):(dt.sortIndex=Tt,e(_,dt),tt||et||(tt=!0,St(ut))),dt},o.unstable_shouldYield=gt,o.unstable_wrapCallback=function(dt){var Dt=_e;return function(){var Ct=_e;_e=Dt;try{return dt.apply(this,arguments)}finally{_e=Ct}}}})(scheduler_production_min);(function(o){o.exports=scheduler_production_min})(scheduler);/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var aa=react.exports,ca=scheduler.exports;function p$2(o){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+o,s=1;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,la={},ma={};function oa(o){return ja.call(ma,o)?!0:ja.call(la,o)?!1:ka.test(o)?ma[o]=!0:(la[o]=!0,!1)}function pa(o,e,s,a){if(s!==null&&s.type===0)return!1;switch(typeof e){case"function":case"symbol":return!0;case"boolean":return a?!1:s!==null?!s.acceptsBooleans:(o=o.toLowerCase().slice(0,5),o!=="data-"&&o!=="aria-");default:return!1}}function qa(o,e,s,a){if(e===null||typeof e>"u"||pa(o,e,s,a))return!0;if(a)return!1;if(s!==null)switch(s.type){case 3:return!e;case 4:return e===!1;case 5:return isNaN(e);case 6:return isNaN(e)||1>e}return!1}function v(o,e,s,a,c,h,d){this.acceptsBooleans=e===2||e===3||e===4,this.attributeName=a,this.attributeNamespace=c,this.mustUseProperty=s,this.propertyName=o,this.type=e,this.sanitizeURL=h,this.removeEmptyString=d}var z={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(o){z[o]=new v(o,0,!1,o,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(o){var e=o[0];z[e]=new v(e,1,!1,o[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(o){z[o]=new v(o,2,!1,o.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(o){z[o]=new v(o,2,!1,o,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(o){z[o]=new v(o,3,!1,o.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(o){z[o]=new v(o,3,!0,o,null,!1,!1)});["capture","download"].forEach(function(o){z[o]=new v(o,4,!1,o,null,!1,!1)});["cols","rows","size","span"].forEach(function(o){z[o]=new v(o,6,!1,o,null,!1,!1)});["rowSpan","start"].forEach(function(o){z[o]=new v(o,5,!1,o.toLowerCase(),null,!1,!1)});var ra=/[\-:]([a-z])/g;function sa(o){return o[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(o){var e=o.replace(ra,sa);z[e]=new v(e,1,!1,o,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(o){var e=o.replace(ra,sa);z[e]=new v(e,1,!1,o,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(o){var e=o.replace(ra,sa);z[e]=new v(e,1,!1,o,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(o){z[o]=new v(o,1,!1,o.toLowerCase(),null,!1,!1)});z.xlinkHref=new v("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(o){z[o]=new v(o,1,!1,o.toLowerCase(),null,!0,!0)});function ta(o,e,s,a){var c=z.hasOwnProperty(e)?z[e]:null;(c!==null?c.type!==0:a||!(2g||c[d]!==h[g]){var _=` -`+c[d].replace(" at new "," at ");return o.displayName&&_.includes("")&&(_=_.replace("",o.displayName)),_}while(1<=d&&0<=g);break}}}finally{Na=!1,Error.prepareStackTrace=s}return(o=o?o.displayName||o.name:"")?Ma(o):""}function Pa(o){switch(o.tag){case 5:return Ma(o.type);case 16:return Ma("Lazy");case 13:return Ma("Suspense");case 19:return Ma("SuspenseList");case 0:case 2:case 15:return o=Oa(o.type,!1),o;case 11:return o=Oa(o.type.render,!1),o;case 1:return o=Oa(o.type,!0),o;default:return""}}function Qa(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case ya:return"Fragment";case wa:return"Portal";case Aa:return"Profiler";case za:return"StrictMode";case Ea:return"Suspense";case Fa:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case Ca:return(o.displayName||"Context")+".Consumer";case Ba:return(o._context.displayName||"Context")+".Provider";case Da:var e=o.render;return o=o.displayName,o||(o=e.displayName||e.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case Ga:return e=o.displayName||null,e!==null?e:Qa(o.type)||"Memo";case Ha:e=o._payload,o=o._init;try{return Qa(o(e))}catch{}}return null}function Ra(o){var e=o.type;switch(o.tag){case 24:return"Cache";case 9:return(e.displayName||"Context")+".Consumer";case 10:return(e._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return o=e.render,o=o.displayName||o.name||"",e.displayName||(o!==""?"ForwardRef("+o+")":"ForwardRef");case 7:return"Fragment";case 5:return e;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Qa(e);case 8:return e===za?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e}return null}function Sa(o){switch(typeof o){case"boolean":case"number":case"string":case"undefined":return o;case"object":return o;default:return""}}function Ta(o){var e=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(e==="checkbox"||e==="radio")}function Ua(o){var e=Ta(o)?"checked":"value",s=Object.getOwnPropertyDescriptor(o.constructor.prototype,e),a=""+o[e];if(!o.hasOwnProperty(e)&&typeof s<"u"&&typeof s.get=="function"&&typeof s.set=="function"){var c=s.get,h=s.set;return Object.defineProperty(o,e,{configurable:!0,get:function(){return c.call(this)},set:function(d){a=""+d,h.call(this,d)}}),Object.defineProperty(o,e,{enumerable:s.enumerable}),{getValue:function(){return a},setValue:function(d){a=""+d},stopTracking:function(){o._valueTracker=null,delete o[e]}}}}function Va(o){o._valueTracker||(o._valueTracker=Ua(o))}function Wa(o){if(!o)return!1;var e=o._valueTracker;if(!e)return!0;var s=e.getValue(),a="";return o&&(a=Ta(o)?o.checked?"true":"false":o.value),o=a,o!==s?(e.setValue(o),!0):!1}function Xa(o){if(o=o||(typeof document<"u"?document:void 0),typeof o>"u")return null;try{return o.activeElement||o.body}catch{return o.body}}function Ya(o,e){var s=e.checked;return A({},e,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:s!=null?s:o._wrapperState.initialChecked})}function Za(o,e){var s=e.defaultValue==null?"":e.defaultValue,a=e.checked!=null?e.checked:e.defaultChecked;s=Sa(e.value!=null?e.value:s),o._wrapperState={initialChecked:a,initialValue:s,controlled:e.type==="checkbox"||e.type==="radio"?e.checked!=null:e.value!=null}}function ab(o,e){e=e.checked,e!=null&&ta(o,"checked",e,!1)}function bb(o,e){ab(o,e);var s=Sa(e.value),a=e.type;if(s!=null)a==="number"?(s===0&&o.value===""||o.value!=s)&&(o.value=""+s):o.value!==""+s&&(o.value=""+s);else if(a==="submit"||a==="reset"){o.removeAttribute("value");return}e.hasOwnProperty("value")?cb(o,e.type,s):e.hasOwnProperty("defaultValue")&&cb(o,e.type,Sa(e.defaultValue)),e.checked==null&&e.defaultChecked!=null&&(o.defaultChecked=!!e.defaultChecked)}function db(o,e,s){if(e.hasOwnProperty("value")||e.hasOwnProperty("defaultValue")){var a=e.type;if(!(a!=="submit"&&a!=="reset"||e.value!==void 0&&e.value!==null))return;e=""+o._wrapperState.initialValue,s||e===o.value||(o.value=e),o.defaultValue=e}s=o.name,s!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,s!==""&&(o.name=s)}function cb(o,e,s){(e!=="number"||Xa(o.ownerDocument)!==o)&&(s==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+s&&(o.defaultValue=""+s))}var eb=Array.isArray;function fb(o,e,s,a){if(o=o.options,e){e={};for(var c=0;c"+e.valueOf().toString()+"",e=mb.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;e.firstChild;)o.appendChild(e.firstChild)}});function ob(o,e){if(e){var s=o.firstChild;if(s&&s===o.lastChild&&s.nodeType===3){s.nodeValue=e;return}}o.textContent=e}var pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=["Webkit","ms","Moz","O"];Object.keys(pb).forEach(function(o){qb.forEach(function(e){e=e+o.charAt(0).toUpperCase()+o.substring(1),pb[e]=pb[o]})});function rb(o,e,s){return e==null||typeof e=="boolean"||e===""?"":s||typeof e!="number"||e===0||pb.hasOwnProperty(o)&&pb[o]?(""+e).trim():e+"px"}function sb(o,e){o=o.style;for(var s in e)if(e.hasOwnProperty(s)){var a=s.indexOf("--")===0,c=rb(s,e[s],a);s==="float"&&(s="cssFloat"),a?o.setProperty(s,c):o[s]=c}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ub(o,e){if(e){if(tb[o]&&(e.children!=null||e.dangerouslySetInnerHTML!=null))throw Error(p$2(137,o));if(e.dangerouslySetInnerHTML!=null){if(e.children!=null)throw Error(p$2(60));if(typeof e.dangerouslySetInnerHTML!="object"||!("__html"in e.dangerouslySetInnerHTML))throw Error(p$2(61))}if(e.style!=null&&typeof e.style!="object")throw Error(p$2(62))}}function vb(o,e){if(o.indexOf("-")===-1)return typeof e.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var wb=null;function xb(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var yb=null,zb=null,Ab=null;function Bb(o){if(o=Cb(o)){if(typeof yb!="function")throw Error(p$2(280));var e=o.stateNode;e&&(e=Db(e),yb(o.stateNode,o.type,e))}}function Eb(o){zb?Ab?Ab.push(o):Ab=[o]:zb=o}function Fb(){if(zb){var o=zb,e=Ab;if(Ab=zb=null,Bb(o),e)for(o=0;o>>=0,o===0?32:31-(pc(o)/qc|0)|0}var rc=64,sc=4194304;function tc(o){switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return o&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return o}}function uc(o,e){var s=o.pendingLanes;if(s===0)return 0;var a=0,c=o.suspendedLanes,h=o.pingedLanes,d=s&268435455;if(d!==0){var g=d&~c;g!==0?a=tc(g):(h&=d,h!==0&&(a=tc(h)))}else d=s&~c,d!==0?a=tc(d):h!==0&&(a=tc(h));if(a===0)return 0;if(e!==0&&e!==a&&(e&c)===0&&(c=a&-a,h=e&-e,c>=h||c===16&&(h&4194240)!==0))return e;if((a&4)!==0&&(a|=s&16),e=o.entangledLanes,e!==0)for(o=o.entanglements,e&=a;0s;s++)e.push(o);return e}function Ac(o,e,s){o.pendingLanes|=e,e!==536870912&&(o.suspendedLanes=0,o.pingedLanes=0),o=o.eventTimes,e=31-oc(e),o[e]=s}function Bc(o,e){var s=o.pendingLanes&~e;o.pendingLanes=e,o.suspendedLanes=0,o.pingedLanes=0,o.expiredLanes&=e,o.mutableReadLanes&=e,o.entangledLanes&=e,e=o.entanglements;var a=o.eventTimes;for(o=o.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;function ge(o,e){switch(o){case"keyup":return $d.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function he(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var ie$2=!1;function je(o,e){switch(o){case"compositionend":return he(e);case"keypress":return e.which!==32?null:(fe=!0,ee);case"textInput":return o=e.data,o===ee&&fe?null:o;default:return null}}function ke(o,e){if(ie$2)return o==="compositionend"||!ae&&ge(o,e)?(o=nd(),md=ld=kd=null,ie$2=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:s,offset:e-o};o=a}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Je(s)}}function Le(o,e){return o&&e?o===e?!0:o&&o.nodeType===3?!1:e&&e.nodeType===3?Le(o,e.parentNode):"contains"in o?o.contains(e):o.compareDocumentPosition?!!(o.compareDocumentPosition(e)&16):!1:!1}function Me(){for(var o=window,e=Xa();e instanceof o.HTMLIFrameElement;){try{var s=typeof e.contentWindow.location.href=="string"}catch{s=!1}if(s)o=e.contentWindow;else break;e=Xa(o.document)}return e}function Ne(o){var e=o&&o.nodeName&&o.nodeName.toLowerCase();return e&&(e==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||e==="textarea"||o.contentEditable==="true")}function Oe(o){var e=Me(),s=o.focusedElem,a=o.selectionRange;if(e!==s&&s&&s.ownerDocument&&Le(s.ownerDocument.documentElement,s)){if(a!==null&&Ne(s)){if(e=a.start,o=a.end,o===void 0&&(o=e),"selectionStart"in s)s.selectionStart=e,s.selectionEnd=Math.min(o,s.value.length);else if(o=(e=s.ownerDocument||document)&&e.defaultView||window,o.getSelection){o=o.getSelection();var c=s.textContent.length,h=Math.min(a.start,c);a=a.end===void 0?h:Math.min(a.end,c),!o.extend&&h>a&&(c=a,a=h,h=c),c=Ke(s,h);var d=Ke(s,a);c&&d&&(o.rangeCount!==1||o.anchorNode!==c.node||o.anchorOffset!==c.offset||o.focusNode!==d.node||o.focusOffset!==d.offset)&&(e=e.createRange(),e.setStart(c.node,c.offset),o.removeAllRanges(),h>a?(o.addRange(e),o.extend(d.node,d.offset)):(e.setEnd(d.node,d.offset),o.addRange(e)))}}for(e=[],o=s;o=o.parentNode;)o.nodeType===1&&e.push({element:o,left:o.scrollLeft,top:o.scrollTop});for(typeof s.focus=="function"&&s.focus(),s=0;s=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;function Ue(o,e,s){var a=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Te||Qe==null||Qe!==Xa(a)||(a=Qe,"selectionStart"in a&&Ne(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Se&&Ie(Se,a)||(Se=a,a=oe(Re,"onSelect"),0Tf||(o.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(o,e){Tf++,Sf[Tf]=o.current,o.current=e}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(o,e){var s=o.type.contextTypes;if(!s)return Vf;var a=o.stateNode;if(a&&a.__reactInternalMemoizedUnmaskedChildContext===e)return a.__reactInternalMemoizedMaskedChildContext;var c={},h;for(h in s)c[h]=e[h];return a&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=e,o.__reactInternalMemoizedMaskedChildContext=c),c}function Zf(o){return o=o.childContextTypes,o!=null}function $f(){E(Wf),E(H)}function ag(o,e,s){if(H.current!==Vf)throw Error(p$2(168));G(H,e),G(Wf,s)}function bg(o,e,s){var a=o.stateNode;if(e=e.childContextTypes,typeof a.getChildContext!="function")return s;a=a.getChildContext();for(var c in a)if(!(c in e))throw Error(p$2(108,Ra(o)||"Unknown",c));return A({},s,a)}function cg(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||Vf,Xf=H.current,G(H,o),G(Wf,Wf.current),!0}function dg(o,e,s){var a=o.stateNode;if(!a)throw Error(p$2(169));s?(o=bg(o,e,Xf),a.__reactInternalMemoizedMergedChildContext=o,E(Wf),E(H),G(H,o)):E(Wf),G(Wf,s)}var eg=null,fg=!1,gg=!1;function hg(o){eg===null?eg=[o]:eg.push(o)}function ig(o){fg=!0,hg(o)}function jg(){if(!gg&&eg!==null){gg=!0;var o=0,e=C$1;try{var s=eg;for(C$1=1;o>=d,c-=d,rg=1<<32-oc(e)+c|s<lt?(pt=ht,ht=null):pt=ht.sibling;var ft=_e(rt,ht,at[lt],ot);if(ft===null){ht===null&&(ht=pt);break}o&&ht&&ft.alternate===null&&e(rt,ht),it=h(ft,it,lt),ct===null?ut=ft:ct.sibling=ft,ct=ft,ht=pt}if(lt===at.length)return s(rt,ht),I$1&&tg(rt,lt),ut;if(ht===null){for(;ltlt?(pt=ht,ht=null):pt=ht.sibling;var gt=_e(rt,ht,ft.value,ot);if(gt===null){ht===null&&(ht=pt);break}o&&ht&>.alternate===null&&e(rt,ht),it=h(gt,it,lt),ct===null?ut=gt:ct.sibling=gt,ct=gt,ht=pt}if(ft.done)return s(rt,ht),I$1&&tg(rt,lt),ut;if(ht===null){for(;!ft.done;lt++,ft=at.next())ft=j(rt,ft.value,ot),ft!==null&&(it=h(ft,it,lt),ct===null?ut=ft:ct.sibling=ft,ct=ft);return I$1&&tg(rt,lt),ut}for(ht=a(rt,ht);!ft.done;lt++,ft=at.next())ft=et(ht,rt,lt,ft.value,ot),ft!==null&&(o&&ft.alternate!==null&&ht.delete(ft.key===null?lt:ft.key),it=h(ft,it,lt),ct===null?ut=ft:ct.sibling=ft,ct=ft);return o&&ht.forEach(function(yt){return e(rt,yt)}),I$1&&tg(rt,lt),ut}function st(rt,it,at,ot){if(typeof at=="object"&&at!==null&&at.type===ya&&at.key===null&&(at=at.props.children),typeof at=="object"&&at!==null){switch(at.$$typeof){case va:e:{for(var ut=at.key,ct=it;ct!==null;){if(ct.key===ut){if(ut=at.type,ut===ya){if(ct.tag===7){s(rt,ct.sibling),it=c(ct,at.props.children),it.return=rt,rt=it;break e}}else if(ct.elementType===ut||typeof ut=="object"&&ut!==null&&ut.$$typeof===Ha&&uh(ut)===ct.type){s(rt,ct.sibling),it=c(ct,at.props),it.ref=sh(rt,ct,at),it.return=rt,rt=it;break e}s(rt,ct);break}else e(rt,ct);ct=ct.sibling}at.type===ya?(it=Ah(at.props.children,rt.mode,ot,at.key),it.return=rt,rt=it):(ot=yh(at.type,at.key,at.props,null,rt.mode,ot),ot.ref=sh(rt,it,at),ot.return=rt,rt=ot)}return d(rt);case wa:e:{for(ct=at.key;it!==null;){if(it.key===ct)if(it.tag===4&&it.stateNode.containerInfo===at.containerInfo&&it.stateNode.implementation===at.implementation){s(rt,it.sibling),it=c(it,at.children||[]),it.return=rt,rt=it;break e}else{s(rt,it);break}else e(rt,it);it=it.sibling}it=zh(at,rt.mode,ot),it.return=rt,rt=it}return d(rt);case Ha:return ct=at._init,st(rt,it,ct(at._payload),ot)}if(eb(at))return tt(rt,it,at,ot);if(Ka(at))return nt(rt,it,at,ot);th(rt,at)}return typeof at=="string"&&at!==""||typeof at=="number"?(at=""+at,it!==null&&it.tag===6?(s(rt,it.sibling),it=c(it,at),it.return=rt,rt=it):(s(rt,it),it=xh(at,rt.mode,ot),it.return=rt,rt=it),d(rt)):s(rt,it)}return st}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(o){if(o===Dh)throw Error(p$2(174));return o}function Ih(o,e){switch(G(Gh,e),G(Fh,o),G(Eh,Dh),o=e.nodeType,o){case 9:case 11:e=(e=e.documentElement)?e.namespaceURI:lb(null,"");break;default:o=o===8?e.parentNode:e,e=o.namespaceURI||null,o=o.tagName,e=lb(e,o)}E(Eh),G(Eh,e)}function Jh(){E(Eh),E(Fh),E(Gh)}function Kh(o){Hh(Gh.current);var e=Hh(Eh.current),s=lb(e,o.type);e!==s&&(G(Fh,o),G(Eh,s))}function Lh(o){Fh.current===o&&(E(Eh),E(Fh))}var M=Uf(0);function Mh(o){for(var e=o;e!==null;){if(e.tag===13){var s=e.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||s.data==="$?"||s.data==="$!"))return e}else if(e.tag===19&&e.memoizedProps.revealOrder!==void 0){if((e.flags&128)!==0)return e}else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===o)break;for(;e.sibling===null;){if(e.return===null||e.return===o)return null;e=e.return}e.sibling.return=e.return,e=e.sibling}return null}var Nh=[];function Oh(){for(var o=0;os?s:4,o(!0);var a=Qh.transition;Qh.transition={};try{o(!1),e()}finally{C$1=s,Qh.transition=a}}function Fi(){return di().memoizedState}function Gi(o,e,s){var a=lh(o);if(s={lane:a,action:s,hasEagerState:!1,eagerState:null,next:null},Hi(o))Ii(e,s);else if(s=Yg(o,e,s,a),s!==null){var c=L();mh(s,o,a,c),Ji(s,e,a)}}function ri(o,e,s){var a=lh(o),c={lane:a,action:s,hasEagerState:!1,eagerState:null,next:null};if(Hi(o))Ii(e,c);else{var h=o.alternate;if(o.lanes===0&&(h===null||h.lanes===0)&&(h=e.lastRenderedReducer,h!==null))try{var d=e.lastRenderedState,g=h(d,s);if(c.hasEagerState=!0,c.eagerState=g,He(g,d)){var _=e.interleaved;_===null?(c.next=c,Xg(e)):(c.next=_.next,_.next=c),e.interleaved=c;return}}catch{}finally{}s=Yg(o,e,c,a),s!==null&&(c=L(),mh(s,o,a,c),Ji(s,e,a))}}function Hi(o){var e=o.alternate;return o===N||e!==null&&e===N}function Ii(o,e){Th=Sh=!0;var s=o.pending;s===null?e.next=e:(e.next=s.next,s.next=e),o.pending=e}function Ji(o,e,s){if((s&4194240)!==0){var a=e.lanes;a&=o.pendingLanes,s|=a,e.lanes=s,Cc(o,s)}}var ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(o,e){return ci().memoizedState=[o,e===void 0?null:e],o},useContext:Vg,useEffect:vi,useImperativeHandle:function(o,e,s){return s=s!=null?s.concat([o]):null,ti(4194308,4,yi.bind(null,e,o),s)},useLayoutEffect:function(o,e){return ti(4194308,4,o,e)},useInsertionEffect:function(o,e){return ti(4,2,o,e)},useMemo:function(o,e){var s=ci();return e=e===void 0?null:e,o=o(),s.memoizedState=[o,e],o},useReducer:function(o,e,s){var a=ci();return e=s!==void 0?s(e):e,a.memoizedState=a.baseState=e,o={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:o,lastRenderedState:e},a.queue=o,o=o.dispatch=Gi.bind(null,N,o),[a.memoizedState,o]},useRef:function(o){var e=ci();return o={current:o},e.memoizedState=o},useState:qi,useDebugValue:Ai,useDeferredValue:function(o){return ci().memoizedState=o},useTransition:function(){var o=qi(!1),e=o[0];return o=Ei.bind(null,o[1]),ci().memoizedState=o,[e,o]},useMutableSource:function(){},useSyncExternalStore:function(o,e,s){var a=N,c=ci();if(I$1){if(s===void 0)throw Error(p$2(407));s=s()}else{if(s=e(),R===null)throw Error(p$2(349));(Rh&30)!==0||ni(a,e,s)}c.memoizedState=s;var h={value:s,getSnapshot:e};return c.queue=h,vi(ki.bind(null,a,h,o),[o]),a.flags|=2048,li(9,mi.bind(null,a,h,s,e),void 0,null),s},useId:function(){var o=ci(),e=R.identifierPrefix;if(I$1){var s=sg,a=rg;s=(a&~(1<<32-oc(a)-1)).toString(32)+s,e=":"+e+"R"+s,s=Uh++,0<\/script>",o=o.removeChild(o.firstChild)):typeof a.is=="string"?o=d.createElement(s,{is:a.is}):(o=d.createElement(s),s==="select"&&(d=o,a.multiple?d.multiple=!0:a.size&&(d.size=a.size))):o=d.createElementNS(o,s),o[Of]=e,o[Pf]=a,Aj(o,e,!1,!1),e.stateNode=o;e:{switch(d=vb(s,a),s){case"dialog":D("cancel",o),D("close",o),c=a;break;case"iframe":case"object":case"embed":D("load",o),c=a;break;case"video":case"audio":for(c=0;cHj&&(e.flags|=128,a=!0,Ej(h,!1),e.lanes=4194304)}else{if(!a)if(o=Mh(d),o!==null){if(e.flags|=128,a=!0,s=o.updateQueue,s!==null&&(e.updateQueue=s,e.flags|=4),Ej(h,!0),h.tail===null&&h.tailMode==="hidden"&&!d.alternate&&!I$1)return S(e),null}else 2*B()-h.renderingStartTime>Hj&&s!==1073741824&&(e.flags|=128,a=!0,Ej(h,!1),e.lanes=4194304);h.isBackwards?(d.sibling=e.child,e.child=d):(s=h.last,s!==null?s.sibling=d:e.child=d,h.last=d)}return h.tail!==null?(e=h.tail,h.rendering=e,h.tail=e.sibling,h.renderingStartTime=B(),e.sibling=null,s=M.current,G(M,a?s&1|2:s&1),e):(S(e),null);case 22:case 23:return Ij(),a=e.memoizedState!==null,o!==null&&o.memoizedState!==null!==a&&(e.flags|=8192),a&&(e.mode&1)!==0?(gj&1073741824)!==0&&(S(e),e.subtreeFlags&6&&(e.flags|=8192)):S(e),null;case 24:return null;case 25:return null}throw Error(p$2(156,e.tag))}function Jj(o,e){switch(wg(e),e.tag){case 1:return Zf(e.type)&&$f(),o=e.flags,o&65536?(e.flags=o&-65537|128,e):null;case 3:return Jh(),E(Wf),E(H),Oh(),o=e.flags,(o&65536)!==0&&(o&128)===0?(e.flags=o&-65537|128,e):null;case 5:return Lh(e),null;case 13:if(E(M),o=e.memoizedState,o!==null&&o.dehydrated!==null){if(e.alternate===null)throw Error(p$2(340));Ig()}return o=e.flags,o&65536?(e.flags=o&-65537|128,e):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(e.type._context),null;case 22:case 23:return Ij(),null;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=typeof WeakSet=="function"?WeakSet:Set,V=null;function Mj(o,e){var s=o.ref;if(s!==null)if(typeof s=="function")try{s(null)}catch(a){W(o,e,a)}else s.current=null}function Nj(o,e,s){try{s()}catch(a){W(o,e,a)}}var Oj=!1;function Pj(o,e){if(Cf=dd,o=Me(),Ne(o)){if("selectionStart"in o)var s={start:o.selectionStart,end:o.selectionEnd};else e:{s=(s=o.ownerDocument)&&s.defaultView||window;var a=s.getSelection&&s.getSelection();if(a&&a.rangeCount!==0){s=a.anchorNode;var c=a.anchorOffset,h=a.focusNode;a=a.focusOffset;try{s.nodeType,h.nodeType}catch{s=null;break e}var d=0,g=-1,_=-1,b=0,$=0,j=o,_e=null;t:for(;;){for(var et;j!==s||c!==0&&j.nodeType!==3||(g=d+c),j!==h||a!==0&&j.nodeType!==3||(_=d+a),j.nodeType===3&&(d+=j.nodeValue.length),(et=j.firstChild)!==null;)_e=j,j=et;for(;;){if(j===o)break t;if(_e===s&&++b===c&&(g=d),_e===h&&++$===a&&(_=d),(et=j.nextSibling)!==null)break;j=_e,_e=j.parentNode}j=et}s=g===-1||_===-1?null:{start:g,end:_}}else s=null}s=s||{start:0,end:0}}else s=null;for(Df={focusedElem:o,selectionRange:s},dd=!1,V=e;V!==null;)if(e=V,o=e.child,(e.subtreeFlags&1028)!==0&&o!==null)o.return=e,V=o;else for(;V!==null;){e=V;try{var tt=e.alternate;if((e.flags&1024)!==0)switch(e.tag){case 0:case 11:case 15:break;case 1:if(tt!==null){var nt=tt.memoizedProps,st=tt.memoizedState,rt=e.stateNode,it=rt.getSnapshotBeforeUpdate(e.elementType===e.type?nt:Lg(e.type,nt),st);rt.__reactInternalSnapshotBeforeUpdate=it}break;case 3:var at=e.stateNode.containerInfo;at.nodeType===1?at.textContent="":at.nodeType===9&&at.documentElement&&at.removeChild(at.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p$2(163))}}catch(ot){W(e,e.return,ot)}if(o=e.sibling,o!==null){o.return=e.return,V=o;break}V=e.return}return tt=Oj,Oj=!1,tt}function Qj(o,e,s){var a=e.updateQueue;if(a=a!==null?a.lastEffect:null,a!==null){var c=a=a.next;do{if((c.tag&o)===o){var h=c.destroy;c.destroy=void 0,h!==void 0&&Nj(e,s,h)}c=c.next}while(c!==a)}}function Rj(o,e){if(e=e.updateQueue,e=e!==null?e.lastEffect:null,e!==null){var s=e=e.next;do{if((s.tag&o)===o){var a=s.create;s.destroy=a()}s=s.next}while(s!==e)}}function Sj(o){var e=o.ref;if(e!==null){var s=o.stateNode;switch(o.tag){case 5:o=s;break;default:o=s}typeof e=="function"?e(o):e.current=o}}function Tj(o){var e=o.alternate;e!==null&&(o.alternate=null,Tj(e)),o.child=null,o.deletions=null,o.sibling=null,o.tag===5&&(e=o.stateNode,e!==null&&(delete e[Of],delete e[Pf],delete e[of],delete e[Qf],delete e[Rf])),o.stateNode=null,o.return=null,o.dependencies=null,o.memoizedProps=null,o.memoizedState=null,o.pendingProps=null,o.stateNode=null,o.updateQueue=null}function Uj(o){return o.tag===5||o.tag===3||o.tag===4}function Vj(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||Uj(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function Wj(o,e,s){var a=o.tag;if(a===5||a===6)o=o.stateNode,e?s.nodeType===8?s.parentNode.insertBefore(o,e):s.insertBefore(o,e):(s.nodeType===8?(e=s.parentNode,e.insertBefore(o,s)):(e=s,e.appendChild(o)),s=s._reactRootContainer,s!=null||e.onclick!==null||(e.onclick=Bf));else if(a!==4&&(o=o.child,o!==null))for(Wj(o,e,s),o=o.sibling;o!==null;)Wj(o,e,s),o=o.sibling}function Xj(o,e,s){var a=o.tag;if(a===5||a===6)o=o.stateNode,e?s.insertBefore(o,e):s.appendChild(o);else if(a!==4&&(o=o.child,o!==null))for(Xj(o,e,s),o=o.sibling;o!==null;)Xj(o,e,s),o=o.sibling}var X=null,Yj=!1;function Zj(o,e,s){for(s=s.child;s!==null;)ak(o,e,s),s=s.sibling}function ak(o,e,s){if(lc&&typeof lc.onCommitFiberUnmount=="function")try{lc.onCommitFiberUnmount(kc,s)}catch{}switch(s.tag){case 5:U||Mj(s,e);case 6:var a=X,c=Yj;X=null,Zj(o,e,s),X=a,Yj=c,X!==null&&(Yj?(o=X,s=s.stateNode,o.nodeType===8?o.parentNode.removeChild(s):o.removeChild(s)):X.removeChild(s.stateNode));break;case 18:X!==null&&(Yj?(o=X,s=s.stateNode,o.nodeType===8?Kf(o.parentNode,s):o.nodeType===1&&Kf(o,s),bd(o)):Kf(X,s.stateNode));break;case 4:a=X,c=Yj,X=s.stateNode.containerInfo,Yj=!0,Zj(o,e,s),X=a,Yj=c;break;case 0:case 11:case 14:case 15:if(!U&&(a=s.updateQueue,a!==null&&(a=a.lastEffect,a!==null))){c=a=a.next;do{var h=c,d=h.destroy;h=h.tag,d!==void 0&&((h&2)!==0||(h&4)!==0)&&Nj(s,e,d),c=c.next}while(c!==a)}Zj(o,e,s);break;case 1:if(!U&&(Mj(s,e),a=s.stateNode,typeof a.componentWillUnmount=="function"))try{a.props=s.memoizedProps,a.state=s.memoizedState,a.componentWillUnmount()}catch(g){W(s,e,g)}Zj(o,e,s);break;case 21:Zj(o,e,s);break;case 22:s.mode&1?(U=(a=U)||s.memoizedState!==null,Zj(o,e,s),U=a):Zj(o,e,s);break;default:Zj(o,e,s)}}function bk(o){var e=o.updateQueue;if(e!==null){o.updateQueue=null;var s=o.stateNode;s===null&&(s=o.stateNode=new Lj),e.forEach(function(a){var c=ck.bind(null,o,a);s.has(a)||(s.add(a),a.then(c,c))})}}function dk(o,e){var s=e.deletions;if(s!==null)for(var a=0;ac&&(c=d),a&=~h}if(a=c,a=B()-a,a=(120>a?120:480>a?480:1080>a?1080:1920>a?1920:3e3>a?3e3:4320>a?4320:1960*mk(a/1960))-a,10o?16:o,xk===null)var a=!1;else{if(o=xk,xk=null,yk=0,(K&6)!==0)throw Error(p$2(331));var c=K;for(K|=4,V=o.current;V!==null;){var h=V,d=h.child;if((V.flags&16)!==0){var g=h.deletions;if(g!==null){for(var _=0;_B()-gk?Lk(o,0):sk|=s),Ek(o,e)}function Zk(o,e){e===0&&((o.mode&1)===0?e=1:(e=sc,sc<<=1,(sc&130023424)===0&&(sc=4194304)));var s=L();o=Zg(o,e),o!==null&&(Ac(o,e,s),Ek(o,s))}function vj(o){var e=o.memoizedState,s=0;e!==null&&(s=e.retryLane),Zk(o,s)}function ck(o,e){var s=0;switch(o.tag){case 13:var a=o.stateNode,c=o.memoizedState;c!==null&&(s=c.retryLane);break;case 19:a=o.stateNode;break;default:throw Error(p$2(314))}a!==null&&a.delete(e),Zk(o,s)}var Wk;Wk=function(o,e,s){if(o!==null)if(o.memoizedProps!==e.pendingProps||Wf.current)Ug=!0;else{if((o.lanes&s)===0&&(e.flags&128)===0)return Ug=!1,zj(o,e,s);Ug=(o.flags&131072)!==0}else Ug=!1,I$1&&(e.flags&1048576)!==0&&ug(e,ng,e.index);switch(e.lanes=0,e.tag){case 2:var a=e.type;jj(o,e),o=e.pendingProps;var c=Yf(e,H.current);Tg(e,s),c=Xh(null,e,a,o,c,s);var h=bi();return e.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0?(e.tag=1,e.memoizedState=null,e.updateQueue=null,Zf(a)?(h=!0,cg(e)):h=!1,e.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,ah(e),c.updater=nh,e.stateNode=c,c._reactInternals=e,rh(e,a,o,s),e=kj(null,e,a,!0,h,s)):(e.tag=0,I$1&&h&&vg(e),Yi(null,e,c,s),e=e.child),e;case 16:a=e.elementType;e:{switch(jj(o,e),o=e.pendingProps,c=a._init,a=c(a._payload),e.type=a,c=e.tag=$k(a),o=Lg(a,o),c){case 0:e=dj(null,e,a,o,s);break e;case 1:e=ij(null,e,a,o,s);break e;case 11:e=Zi(null,e,a,o,s);break e;case 14:e=aj(null,e,a,Lg(a.type,o),s);break e}throw Error(p$2(306,a,""))}return e;case 0:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:Lg(a,c),dj(o,e,a,c,s);case 1:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:Lg(a,c),ij(o,e,a,c,s);case 3:e:{if(lj(e),o===null)throw Error(p$2(387));a=e.pendingProps,h=e.memoizedState,c=h.element,bh(o,e),gh(e,a,null,s);var d=e.memoizedState;if(a=d.element,h.isDehydrated)if(h={element:a,isDehydrated:!1,cache:d.cache,pendingSuspenseBoundaries:d.pendingSuspenseBoundaries,transitions:d.transitions},e.updateQueue.baseState=h,e.memoizedState=h,e.flags&256){c=Ki(Error(p$2(423)),e),e=mj(o,e,a,s,c);break e}else if(a!==c){c=Ki(Error(p$2(424)),e),e=mj(o,e,a,s,c);break e}else for(yg=Lf(e.stateNode.containerInfo.firstChild),xg=e,I$1=!0,zg=null,s=Ch(e,null,a,s),e.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Ig(),a===c){e=$i(o,e,s);break e}Yi(o,e,a,s)}e=e.child}return e;case 5:return Kh(e),o===null&&Eg(e),a=e.type,c=e.pendingProps,h=o!==null?o.memoizedProps:null,d=c.children,Ef(a,c)?d=null:h!==null&&Ef(a,h)&&(e.flags|=32),hj(o,e),Yi(o,e,d,s),e.child;case 6:return o===null&&Eg(e),null;case 13:return pj(o,e,s);case 4:return Ih(e,e.stateNode.containerInfo),a=e.pendingProps,o===null?e.child=Bh(e,null,a,s):Yi(o,e,a,s),e.child;case 11:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:Lg(a,c),Zi(o,e,a,c,s);case 7:return Yi(o,e,e.pendingProps,s),e.child;case 8:return Yi(o,e,e.pendingProps.children,s),e.child;case 12:return Yi(o,e,e.pendingProps.children,s),e.child;case 10:e:{if(a=e.type._context,c=e.pendingProps,h=e.memoizedProps,d=c.value,G(Mg,a._currentValue),a._currentValue=d,h!==null)if(He(h.value,d)){if(h.children===c.children&&!Wf.current){e=$i(o,e,s);break e}}else for(h=e.child,h!==null&&(h.return=e);h!==null;){var g=h.dependencies;if(g!==null){d=h.child;for(var _=g.firstContext;_!==null;){if(_.context===a){if(h.tag===1){_=ch(-1,s&-s),_.tag=2;var b=h.updateQueue;if(b!==null){b=b.shared;var $=b.pending;$===null?_.next=_:(_.next=$.next,$.next=_),b.pending=_}}h.lanes|=s,_=h.alternate,_!==null&&(_.lanes|=s),Sg(h.return,s,e),g.lanes|=s;break}_=_.next}}else if(h.tag===10)d=h.type===e.type?null:h.child;else if(h.tag===18){if(d=h.return,d===null)throw Error(p$2(341));d.lanes|=s,g=d.alternate,g!==null&&(g.lanes|=s),Sg(d,s,e),d=h.sibling}else d=h.child;if(d!==null)d.return=h;else for(d=h;d!==null;){if(d===e){d=null;break}if(h=d.sibling,h!==null){h.return=d.return,d=h;break}d=d.return}h=d}Yi(o,e,c.children,s),e=e.child}return e;case 9:return c=e.type,a=e.pendingProps.children,Tg(e,s),c=Vg(c),a=a(c),e.flags|=1,Yi(o,e,a,s),e.child;case 14:return a=e.type,c=Lg(a,e.pendingProps),c=Lg(a.type,c),aj(o,e,a,c,s);case 15:return cj(o,e,e.type,e.pendingProps,s);case 17:return a=e.type,c=e.pendingProps,c=e.elementType===a?c:Lg(a,c),jj(o,e),e.tag=1,Zf(a)?(o=!0,cg(e)):o=!1,Tg(e,s),ph(e,a,c),rh(e,a,c,s),kj(null,e,a,!0,o,s);case 19:return yj(o,e,s);case 22:return ej(o,e,s)}throw Error(p$2(156,e.tag))};function Gk(o,e){return ac(o,e)}function al(o,e,s,a){this.tag=o,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=e,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Bg(o,e,s,a){return new al(o,e,s,a)}function bj(o){return o=o.prototype,!(!o||!o.isReactComponent)}function $k(o){if(typeof o=="function")return bj(o)?1:0;if(o!=null){if(o=o.$$typeof,o===Da)return 11;if(o===Ga)return 14}return 2}function wh(o,e){var s=o.alternate;return s===null?(s=Bg(o.tag,e,o.key,o.mode),s.elementType=o.elementType,s.type=o.type,s.stateNode=o.stateNode,s.alternate=o,o.alternate=s):(s.pendingProps=e,s.type=o.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=o.flags&14680064,s.childLanes=o.childLanes,s.lanes=o.lanes,s.child=o.child,s.memoizedProps=o.memoizedProps,s.memoizedState=o.memoizedState,s.updateQueue=o.updateQueue,e=o.dependencies,s.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext},s.sibling=o.sibling,s.index=o.index,s.ref=o.ref,s}function yh(o,e,s,a,c,h){var d=2;if(a=o,typeof o=="function")bj(o)&&(d=1);else if(typeof o=="string")d=5;else e:switch(o){case ya:return Ah(s.children,c,h,e);case za:d=8,c|=8;break;case Aa:return o=Bg(12,s,e,c|2),o.elementType=Aa,o.lanes=h,o;case Ea:return o=Bg(13,s,e,c),o.elementType=Ea,o.lanes=h,o;case Fa:return o=Bg(19,s,e,c),o.elementType=Fa,o.lanes=h,o;case Ia:return qj(s,c,h,e);default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case Ba:d=10;break e;case Ca:d=9;break e;case Da:d=11;break e;case Ga:d=14;break e;case Ha:d=16,a=null;break e}throw Error(p$2(130,o==null?o:typeof o,""))}return e=Bg(d,s,e,c),e.elementType=o,e.type=a,e.lanes=h,e}function Ah(o,e,s,a){return o=Bg(7,o,a,e),o.lanes=s,o}function qj(o,e,s,a){return o=Bg(22,o,a,e),o.elementType=Ia,o.lanes=s,o.stateNode={isHidden:!1},o}function xh(o,e,s){return o=Bg(6,o,null,e),o.lanes=s,o}function zh(o,e,s){return e=Bg(4,o.children!==null?o.children:[],o.key,e),e.lanes=s,e.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},e}function bl(o,e,s,a,c){this.tag=e,this.containerInfo=o,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=zc(0),this.expirationTimes=zc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=zc(0),this.identifierPrefix=a,this.onRecoverableError=c,this.mutableSourceEagerHydrationData=null}function cl(o,e,s,a,c,h,d,g,_){return o=new bl(o,e,s,g,_),e===1?(e=1,h===!0&&(e|=8)):e=0,h=Bg(3,null,null,e),o.current=h,h.stateNode=o,h.memoizedState={element:a,isDehydrated:s,cache:null,transitions:null,pendingSuspenseBoundaries:null},ah(h),o}function dl(o,e,s){var a=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(s){console.error(s)}}e(),o.exports=reactDom_production_min})(reactDom);var m$1=reactDom.exports;client.createRoot=m$1.createRoot,client.hydrateRoot=m$1.hydrateRoot;const scriptRel="modulepreload",assetsURL=function(o){return"/"+o},seen={},__vitePreload=function(e,s,a){return!s||s.length===0?e():Promise.all(s.map(c=>{if(c=assetsURL(c),c in seen)return;seen[c]=!0;const h=c.endsWith(".css"),d=h?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const g=document.createElement("link");if(g.rel=h?"stylesheet":scriptRel,h||(g.as="script",g.crossOrigin=""),g.href=c,document.head.appendChild(g),h)return new Promise((_,b)=>{g.addEventListener("load",_),g.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${c}`)))})})).then(()=>e())};var fraction$1={exports:{}};/** - * @license Fraction.js v4.2.0 05/03/2022 - * https://www.xarg.org/2014/03/rational-numbers-in-javascript/ - * - * Copyright (c) 2021, Robert Eisele (robert@xarg.org) - * Dual licensed under the MIT or GPL Version 2 licenses. - **/(function(o,e){(function(s){var a=2e3,c={s:1,n:0,d:1};function h(tt,nt){if(isNaN(tt=parseInt(tt,10)))throw et.InvalidParameter;return tt*nt}function d(tt,nt){if(nt===0)throw et.DivisionByZero;var st=Object.create(et.prototype);st.s=tt<0?-1:1,tt=tt<0?-tt:tt;var rt=_e(tt,nt);return st.n=tt/rt,st.d=nt/rt,st}function g(tt){for(var nt={},st=tt,rt=2,it=4;it<=st;){for(;st%rt===0;)st/=rt,nt[rt]=(nt[rt]||0)+1;it+=1+2*rt++}return st!==tt?st>1&&(nt[st]=(nt[st]||0)+1):nt[tt]=(nt[tt]||0)+1,nt}var _=function(tt,nt){var st=0,rt=1,it=1,at=0,ot=0,ut=0,ct=1,ht=1,lt=0,pt=1,ft=1,gt=1,yt=1e7,mt;if(tt!=null)if(nt!==void 0){if(st=tt,rt=nt,it=st*rt,st%1!==0||rt%1!==0)throw et.NonIntegerParameter}else switch(typeof tt){case"object":{if("d"in tt&&"n"in tt)st=tt.n,rt=tt.d,"s"in tt&&(st*=tt.s);else if(0 in tt)st=tt[0],1 in tt&&(rt=tt[1]);else throw et.InvalidParameter;it=st*rt;break}case"number":{if(tt<0&&(it=tt,tt=-tt),tt%1===0)st=tt;else if(tt>0){for(tt>=1&&(ht=Math.pow(10,Math.floor(1+Math.log(tt)/Math.LN10)),tt/=ht);pt<=yt&><=yt;)if(mt=(lt+ft)/(pt+gt),tt===mt){pt+gt<=yt?(st=lt+ft,rt=pt+gt):gt>pt?(st=ft,rt=gt):(st=lt,rt=pt);break}else tt>mt?(lt+=ft,pt+=gt):(ft+=lt,gt+=pt),pt>yt?(st=ft,rt=gt):(st=lt,rt=pt);st*=ht}else(isNaN(tt)||isNaN(nt))&&(rt=st=NaN);break}case"string":{if(pt=tt.match(/\d+|./g),pt===null)throw et.InvalidParameter;if(pt[lt]==="-"?(it=-1,lt++):pt[lt]==="+"&<++,pt.length===lt+1?ot=h(pt[lt++],it):pt[lt+1]==="."||pt[lt]==="."?(pt[lt]!=="."&&(at=h(pt[lt++],it)),lt++,(lt+1===pt.length||pt[lt+1]==="("&&pt[lt+3]===")"||pt[lt+1]==="'"&&pt[lt+3]==="'")&&(ot=h(pt[lt],it),ct=Math.pow(10,pt[lt].length),lt++),(pt[lt]==="("&&pt[lt+2]===")"||pt[lt]==="'"&&pt[lt+2]==="'")&&(ut=h(pt[lt+1],it),ht=Math.pow(10,pt[lt+1].length)-1,lt+=3)):pt[lt+1]==="/"||pt[lt+1]===":"?(ot=h(pt[lt],it),ct=h(pt[lt+2],1),lt+=3):pt[lt+3]==="/"&&pt[lt+1]===" "&&(at=h(pt[lt],it),ot=h(pt[lt+2],it),ct=h(pt[lt+4],1),lt+=5),pt.length<=lt){rt=ct*ht,it=st=ut+rt*at+ht*ot;break}}default:throw et.InvalidParameter}if(rt===0)throw et.DivisionByZero;c.s=it<0?-1:1,c.n=Math.abs(st),c.d=Math.abs(rt)};function b(tt,nt,st){for(var rt=1;nt>0;tt=tt*tt%st,nt>>=1)nt&1&&(rt=rt*tt%st);return rt}function $(tt,nt){for(;nt%2===0;nt/=2);for(;nt%5===0;nt/=5);if(nt===1)return 0;for(var st=10%nt,rt=1;st!==1;rt++)if(st=st*10%nt,rt>a)return 0;return rt}function j(tt,nt,st){for(var rt=1,it=b(10,st,nt),at=0;at<300;at++){if(rt===it)return at;rt=rt*10%nt,it=it*10%nt}return 0}function _e(tt,nt){if(!tt)return nt;if(!nt)return tt;for(;;){if(tt%=nt,!tt)return nt;if(nt%=tt,!nt)return tt}}function et(tt,nt){if(_(tt,nt),this instanceof et)tt=_e(c.d,c.n),this.s=c.s,this.n=c.n/tt,this.d=c.d/tt;else return d(c.s*c.n,c.d)}et.DivisionByZero=new Error("Division by Zero"),et.InvalidParameter=new Error("Invalid argument"),et.NonIntegerParameter=new Error("Parameters must be integer"),et.prototype={s:1,n:0,d:1,abs:function(){return d(this.n,this.d)},neg:function(){return d(-this.s*this.n,this.d)},add:function(tt,nt){return _(tt,nt),d(this.s*this.n*c.d+c.s*this.d*c.n,this.d*c.d)},sub:function(tt,nt){return _(tt,nt),d(this.s*this.n*c.d-c.s*this.d*c.n,this.d*c.d)},mul:function(tt,nt){return _(tt,nt),d(this.s*c.s*this.n*c.n,this.d*c.d)},div:function(tt,nt){return _(tt,nt),d(this.s*c.s*this.n*c.d,this.d*c.n)},clone:function(){return d(this.s*this.n,this.d)},mod:function(tt,nt){if(isNaN(this.n)||isNaN(this.d))return new et(NaN);if(tt===void 0)return d(this.s*this.n%this.d,1);if(_(tt,nt),c.n===0&&this.d===0)throw et.DivisionByZero;return d(this.s*(c.d*this.n)%(c.n*this.d),c.d*this.d)},gcd:function(tt,nt){return _(tt,nt),d(_e(c.n,this.n)*_e(c.d,this.d),c.d*this.d)},lcm:function(tt,nt){return _(tt,nt),c.n===0&&this.n===0?d(0,1):d(c.n*this.n,_e(c.n,this.n)*_e(c.d,this.d))},ceil:function(tt){return tt=Math.pow(10,tt||0),isNaN(this.n)||isNaN(this.d)?new et(NaN):d(Math.ceil(tt*this.s*this.n/this.d),tt)},floor:function(tt){return tt=Math.pow(10,tt||0),isNaN(this.n)||isNaN(this.d)?new et(NaN):d(Math.floor(tt*this.s*this.n/this.d),tt)},round:function(tt){return tt=Math.pow(10,tt||0),isNaN(this.n)||isNaN(this.d)?new et(NaN):d(Math.round(tt*this.s*this.n/this.d),tt)},inverse:function(){return d(this.s*this.d,this.n)},pow:function(tt,nt){if(_(tt,nt),c.d===1)return c.s<0?d(Math.pow(this.s*this.d,c.n),Math.pow(this.n,c.n)):d(Math.pow(this.s*this.n,c.n),Math.pow(this.d,c.n));if(this.s<0)return null;var st=g(this.n),rt=g(this.d),it=1,at=1;for(var ot in st)if(ot!=="1"){if(ot==="0"){it=0;break}if(st[ot]*=c.n,st[ot]%c.d===0)st[ot]/=c.d;else return null;it*=Math.pow(ot,st[ot])}for(var ot in rt)if(ot!=="1"){if(rt[ot]*=c.n,rt[ot]%c.d===0)rt[ot]/=c.d;else return null;at*=Math.pow(ot,rt[ot])}return c.s<0?d(at,it):d(it,at)},equals:function(tt,nt){return _(tt,nt),this.s*this.n*c.d===c.s*c.n*this.d},compare:function(tt,nt){_(tt,nt);var st=this.s*this.n*c.d-c.s*c.n*this.d;return(0=0;at--)it=it.inverse().add(st[at]);if(it.sub(nt).abs().valueOf()0&&(st+=nt,st+=" ",rt%=it),st+=rt,st+="/",st+=it),st},toLatex:function(tt){var nt,st="",rt=this.n,it=this.d;return this.s<0&&(st+="-"),it===1?st+=rt:(tt&&(nt=Math.floor(rt/it))>0&&(st+=nt,rt%=it),st+="\\frac{",st+=rt,st+="}{",st+=it,st+="}"),st},toContinued:function(){var tt,nt=this.n,st=this.d,rt=[];if(isNaN(nt)||isNaN(st))return rt;do rt.push(Math.floor(nt/st)),tt=nt%st,nt=st,st=tt;while(nt!==1);return rt},toString:function(tt){var nt=this.n,st=this.d;if(isNaN(nt)||isNaN(st))return"NaN";tt=tt||15;var rt=$(nt,st),it=j(nt,st,rt),at=this.s<0?"-":"";if(at+=nt/st|0,nt%=st,nt*=10,nt&&(at+="."),rt){for(var ot=it;ot--;)at+=nt/st|0,nt%=st,nt*=10;at+="(";for(var ot=rt;ot--;)at+=nt/st|0,nt%=st,nt*=10;at+=")"}else for(var ot=tt;nt&&ot--;)at+=nt/st|0,nt%=st,nt*=10;return at}},Object.defineProperty(et,"__esModule",{value:!0}),et.default=et,et.Fraction=et,o.exports=et})()})(fraction$1);const Fraction=getDefaultExportFromCjs(fraction$1.exports);Fraction.prototype.sam=function(){return this.floor()};Fraction.prototype.nextSam=function(){return this.sam().add(1)};Fraction.prototype.wholeCycle=function(){return new TimeSpan(this.sam(),this.nextSam())};Fraction.prototype.cyclePos=function(){return this.sub(this.sam())};Fraction.prototype.lt=function(o){return this.compare(o)<0};Fraction.prototype.gt=function(o){return this.compare(o)>0};Fraction.prototype.lte=function(o){return this.compare(o)<=0};Fraction.prototype.gte=function(o){return this.compare(o)>=0};Fraction.prototype.eq=function(o){return this.compare(o)==0};Fraction.prototype.max=function(o){return this.gt(o)?this:o};Fraction.prototype.min=function(o){return this.lt(o)?this:o};Fraction.prototype.show=function(){return this.s*this.n+"/"+this.d};Fraction.prototype.or=function(o){return this.eq(0)?o:this};const fraction=o=>(typeof o=="number"&&(o=String(o)),Fraction(o)),gcd=(...o)=>o.reduce((e,s)=>e.gcd(s),fraction(1));fraction._original=Fraction;class TimeSpan{constructor(e,s){this.begin=fraction(e),this.end=fraction(s)}get spanCycles(){const e=[];var s=this.begin;const a=this.end,c=a.sam();for(;a.gt(s);){if(s.sam().equals(c)){e.push(new TimeSpan(s,this.end));break}const h=s.nextSam();e.push(new TimeSpan(s,h)),s=h}return e}get duration(){return this.end.sub(this.begin)}cycleArc(){const e=this.begin.cyclePos(),s=e.add(this.duration);return new TimeSpan(e,s)}withTime(e){return new TimeSpan(e(this.begin),e(this.end))}withEnd(e){return new TimeSpan(this.begin,e(this.end))}withCycle(e){const s=this.begin.sam(),a=s.add(e(this.begin.sub(s))),c=s.add(e(this.end.sub(s)));return new TimeSpan(a,c)}intersection(e){const s=this.begin.max(e.begin),a=this.end.min(e.end);if(!s.gt(a)&&!(s.equals(a)&&(s.equals(this.end)&&this.begin.lt(this.end)||s.equals(e.end)&&e.begin.lt(e.end))))return new TimeSpan(s,a)}intersection_e(e){const s=this.intersection(e);if(s==null)throw"TimeSpans do not intersect";return s}midpoint(){return this.begin.add(this.duration.div(fraction(2)))}equals(e){return this.begin.equals(e.begin)&&this.end.equals(e.end)}show(){return this.begin.show()+" -> "+this.end.show()}}class Hap{constructor(e,s,a,c={},h=!1){this.whole=e,this.part=s,this.value=a,this.context=c,this.stateful=h,h&&console.assert(typeof this.value=="function","Stateful values must be functions")}get duration(){return this.whole.end.sub(this.whole.begin)}wholeOrPart(){return this.whole?this.whole:this.part}withSpan(e){const s=this.whole?e(this.whole):void 0;return new Hap(s,e(this.part),this.value,this.context)}withValue(e){return new Hap(this.whole,this.part,e(this.value),this.context)}hasOnset(){return this.whole!=null&&this.whole.begin.equals(this.part.begin)}resolveState(e){if(this.stateful&&this.hasOnset()){console.log("stateful");const s=this.value,[a,c]=s(e);return[a,new Hap(this.whole,this.part,c,this.context,!1)]}return[e,this]}spanEquals(e){return this.whole==null&&e.whole==null||this.whole.equals(e.whole)}equals(e){return this.spanEquals(e)&&this.part.equals(e.part)&&this.value===e.value}show(){return"("+(this.whole==null?"~":this.whole.show())+", "+this.part.show()+", "+this.value+")"}showWhole(){return`${this.whole==null?"~":this.whole.show()}: ${typeof this.value=="object"?JSON.stringify(this.value):this.value}`}combineContext(e){const s=this;return{...s.context,...e.context,locations:(s.context.locations||[]).concat(e.context.locations||[])}}setContext(e){return new Hap(this.whole,this.part,this.value,e)}}class State{constructor(e,s={}){this.span=e,this.controls=s}setSpan(e){return new State(e,this.controls)}withSpan(e){return this.setSpan(e(this.span))}setControls(e){return new State(this.span,e)}}const isNote$1=o=>/^[a-gA-G][#b]*[0-9]$/.test(o),tokenizeNote=o=>{var c;if(typeof o!="string")return[];const[e,s="",a]=((c=o.match(/^([a-gA-G])([#bs]*)([0-9])?$/))==null?void 0:c.slice(1))||[];return e?[e,s,a?Number(a):void 0]:[]},toMidi=o=>{const[e,s,a]=tokenizeNote(o);if(!e)throw new Error('not a note: "'+o+'"');const c={c:0,d:2,e:4,f:5,g:7,a:9,b:11}[e.toLowerCase()],h=(s==null?void 0:s.split("").reduce((d,g)=>d+{"#":1,b:-1,s:1}[g],0))||0;return(Number(a)+1)*12+c+h},fromMidi=o=>Math.pow(2,(o-69)/12)*440,getFreq=o=>fromMidi(typeof o=="number"?o:toMidi(o)),midi2note=o=>{const e=Math.floor(o/12)-1;return["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"][o%12]+e},mod=(o,e)=>(o%e+e)%e,getPlayableNoteValue=o=>{let{value:e,context:s}=o;if(typeof e=="object"&&!Array.isArray(e)&&(e=e.note||e.n||e.value),typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="number"&&s.type==="frequency")e=o.value;else if(typeof e!="string"||!isNote$1(e))throw new Error("not a note: "+JSON.stringify(e));return e},getFrequency=o=>{let{value:e,context:s}=o;if(typeof e=="object")return e.freq?e.freq:getFreq(e.note||e.n||e.value);if(typeof e=="number"&&s.type!=="frequency")e=fromMidi(o.value);else if(typeof e=="string"&&isNote$1(e))e=fromMidi(toMidi(o.value));else if(typeof e!="number")throw new Error("not a note or frequency:"+e);return e},rotate=(o,e)=>o.slice(e).concat(o.slice(0,e)),pipe=(...o)=>o.reduce((e,s)=>(...a)=>e(s(...a)),e=>e),compose=(...o)=>pipe(...o.reverse()),removeUndefineds=o=>o.filter(e=>e!=null),flatten$1=o=>[].concat(...o),id$1=o=>o,constant=(o,e)=>o,listRange=(o,e)=>Array.from({length:e-o+1},(s,a)=>a+o);function curry(o,e){const s=function a(...c){if(c.length>=o.length)return o.apply(this,c);{const h=function(...d){return a.apply(this,c.concat(d))};return e&&e(h,c),h}};return e&&e(s,[]),s}function unionWithObj(o,e,s){const a=Object.keys(o).filter(c=>Object.keys(e).includes(c));return Object.assign({},o,e,Object.fromEntries(a.map(c=>[c,s(o[c],e[c])])))}curry((o,e)=>o*e);curry((o,e)=>e.map(o));function drawLine(o,e=60){let s=0,a=fraction(0),c=[""],h="";for(;c[0].length$.hasOnset()).map($=>$.duration),_=gcd(...g),b=_.inverse();c=c.map($=>$+"|"),h+="|";for(let $=0;$nt.whole.begin.lte(j)&&nt.whole.end.gte(_e)),tt=et.length-c.length;tt>0&&(c=c.concat(Array(tt).fill(h))),c=c.map((nt,st)=>{const rt=et[st];if(rt){const at=rt.whole.begin.eq(j)?""+rt.value:"-";return nt+at}return nt+"."}),h+=".",a=a.add(_)}s++}return c.join(` -`)}class Pattern$3{constructor(e){Rt(this,"_Pattern",!0);this.query=e}queryArc(e,s){return this.query(new State(new TimeSpan(e,s)))}_splitQueries(){const e=this,s=a=>flatten$1(a.span.spanCycles.map(c=>e.query(a.setSpan(c))));return new Pattern$3(s)}withQuerySpan(e){return new Pattern$3(s=>this.query(s.withSpan(e)))}withQueryTime(e){return new Pattern$3(s=>this.query(s.withSpan(a=>a.withTime(e))))}withHapSpan(e){return new Pattern$3(s=>this.query(s).map(a=>a.withSpan(e)))}withHapTime(e){return this.withHapSpan(s=>s.withTime(e))}_withHaps(e){return new Pattern$3(s=>e(this.query(s)))}_withHap(e){return this._withHaps(s=>s.map(e))}_setContext(e){return this._withHap(s=>s.setContext(e))}_withContext(e){return this._withHap(s=>s.setContext(e(s.context)))}_stripContext(){return this._withHap(e=>e.setContext({}))}withLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{const h=(c.locations||[]).concat([a]);return{...c,locations:h}})}withMiniLocation(e,s){const a={start:{line:e[0],column:e[1],offset:e[2]},end:{line:s[0],column:s[1],offset:s[2]}};return this._withContext(c=>{let h=c.locations||[];return h=h.map(({start:d,end:g})=>{const _=d.line===1?a.start.column:0;return{start:{...d,line:d.line-1+(a.start.line-1)+1,column:d.column-1+_},end:{...g,line:g.line-1+(a.start.line-1)+1,column:g.column-1+_}}}),{...c,locations:h}})}withValue(e){return new Pattern$3(s=>this.query(s).map(a=>a.withValue(e)))}fmap(e){return this.withValue(e)}_filterHaps(e){return new Pattern$3(s=>this.query(s).filter(e))}_filterValues(e){return new Pattern$3(s=>this.query(s).filter(a=>e(a.value)))}_removeUndefineds(){return this._filterValues(e=>e!=null)}onsetsOnly(){return this._filterHaps(e=>e.hasOnset())}discreteOnly(){return this._filterHaps(e=>e.whole)}_appWhole(e,s){const a=this,c=function(h){const d=a.query(h),g=s.query(h),_=function(b,$){const j=b.part.intersection($.part);if(j!=null)return new Hap(e(b.whole,$.whole),j,b.value($.value),$.combineContext(b))};return flatten$1(d.map(b=>removeUndefineds(g.map($=>_(b,$)))))};return new Pattern$3(c)}appBoth(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._appWhole(s,e)}appLeft(e){const s=this,a=function(c){const h=[];for(const d of s.query(c)){const g=e.query(c.setSpan(d.wholeOrPart()));for(const _ of g){const b=d.whole,$=d.part.intersection(_.part);if($){const j=d.value(_.value),_e=_.combineContext(d),et=new Hap(b,$,j,_e);h.push(et)}}}return h};return new Pattern$3(a)}appRight(e){const s=this,a=function(c){const h=[];for(const d of e.query(c)){const g=s.query(c.setSpan(d.wholeOrPart()));for(const _ of g){const b=d.whole,$=_.part.intersection(d.part);if($){const j=_.value(d.value),_e=d.combineContext(_),et=new Hap(b,$,j,_e);h.push(et)}}}return h};return new Pattern$3(a)}firstCycle(e=!1){var s=this;return e||(s=s._stripContext()),s.query(new State(new TimeSpan(fraction(0),fraction(1))))}get _firstCycleValues(){return this.firstCycle().map(e=>e.value)}get _showFirstCycle(){return this.firstCycle().map(e=>`${e.value}: ${e.whole.begin.toFraction()} - ${e.whole.end.toFraction()}`)}_sortHapsByPart(){return this._withHaps(e=>e.sort((s,a)=>s.part.begin.sub(a.part.begin).or(s.part.end.sub(a.part.end)).or(s.whole.begin.sub(a.whole.begin).or(s.whole.end.sub(a.whole.end)))))}_opIn(e,s){return this.fmap(s).appLeft(reify$1(e))}_opOut(e,s){return this.fmap(s).appRight(reify$1(e))}_opMix(e,s){return this.fmap(s).appBoth(reify$1(e))}_opSqueeze(e,s){const a=reify$1(e);return this.fmap(c=>a.fmap(h=>s(c)(h)))._squeezeJoin()}_opSqueezeOut(e,s){const a=this;return reify$1(e).fmap(h=>a.fmap(d=>s(d)(h)))._squeezeJoin()}_opTrig(e,s){return reify$1(e).fmap(c=>this.fmap(h=>s(h)(c)))._trigJoin()}_opTrigzero(e,s){return reify$1(e).fmap(c=>this.fmap(h=>s(h)(c)))._TrigzeroJoin()}_asNumber(e=!1,s=!1){return this._withHap(a=>{const c=Number(a.value);if(!isNaN(c))return a.withValue(()=>c);const h={e:Math.E,pi:Math.PI}[a.value];if(typeof h<"u")return a.withValue(()=>h);if(isNote$1(a.value))return new Hap(a.whole,a.part,toMidi(a.value),{...a.context,type:"midi"});if(!e){if(s)return a;throw new Error('cannot parse as number: "'+a.value+'"')}})}round(){return this._asNumber().fmap(e=>Math.round(e))}floor(){return this._asNumber().fmap(e=>Math.floor(e))}ceil(){return this._asNumber().fmap(e=>Math.ceil(e))}_toBipolar(){return this.fmap(e=>e*2-1)}_fromBipolar(){return this.fmap(e=>(e+1)/2)}range(e,s){return this.mul(s-e).add(e)}rangex(e,s){return this.range(Math.log(e),Math.log(s)).fmap(Math.exp)}range2(e,s){return this._fromBipolar().range(e,s)}_bindWhole(e,s){const a=this,c=function(h){const d=function(_,b){return new Hap(e(_.whole,b.whole),b.part,b.value,Object.assign({},_.context,b.context,{locations:(_.context.locations||[]).concat(b.context.locations||[])}))},g=function(_){return s(_.value).query(h.setSpan(_.part)).map(b=>d(_,b))};return flatten$1(a.query(h).map(_=>g(_)))};return new Pattern$3(c)}bind(e){const s=function(a,c){if(!(a==null||c==null))return a.intersection_e(c)};return this._bindWhole(s,e)}join(){return this.bind(id$1)}outerBind(e){return this._bindWhole((s,a)=>s,e)}outerJoin(){return this.outerBind(id$1)}innerBind(e){return this._bindWhole((s,a)=>a,e)}innerJoin(){return this.innerBind(id$1)}_trigJoin(e=!1){const s=this;return new Pattern$3(a=>s.discreteOnly().query(a).map(c=>c.value.late(e?c.whole.begin:c.whole.begin.cyclePos()).query(a).map(h=>new Hap(h.whole?h.whole.intersection(c.whole):void 0,h.part.intersection(c.part),h.value).setContext(c.combineContext(h))).filter(h=>h.part)).flat())}_TrigzeroJoin(){return this._trigJoin(!0)}_squeezeJoin(){const e=this;function s(a){const c=e.discreteOnly().query(a);function h(g){const b=g.value._compressSpan(g.wholeOrPart().cycleArc()).query(a.setSpan(g.part));function $(j,_e){let et;if(_e.whole&&j.whole&&(et=_e.whole.intersection(j.whole),!et))return;const tt=_e.part.intersection(j.part);if(!tt)return;const nt=_e.combineContext(j);return new Hap(et,tt,_e.value,nt)}return b.map(j=>$(g,j))}return flatten$1(c.map(h)).filter(g=>g)}return new Pattern$3(s)}_squeezeBind(e){return this.fmap(e)._squeezeJoin()}_apply(e){return e(this)}layer(...e){return stack(...e.map(s=>s(this)))}_patternify(e){const s=this;return function(...c){return c=c.map(d=>isPattern$1(d)?d.fmap(g=>g.value||g):d),sequence(...c).fmap(d=>e.call(s,d)).innerJoin()}}_fastGap(e){const s=function(c){const h=c.begin.sam(),d=h.add(c.begin.sub(h).mul(e).min(1)),g=h.add(c.end.sub(h).mul(e).min(1));return new TimeSpan(d,g)},a=function(c){const h=c.begin.sam(),d=h.add(c.begin.sub(h).div(e).min(1)),g=h.add(c.end.sub(h).div(e).min(1));return new TimeSpan(d,g)};return this.withQuerySpan(s).withHapSpan(a)._splitQueries()}_compress(e,s){return e.gt(s)||e.gt(1)||s.gt(1)||e.lt(0)||s.lt(0)?silence:this._fastGap(fraction(1).div(s.sub(e)))._late(e)}_compressSpan(e){return this._compress(e.begin,e.end)}_fast(e){return this.withQueryTime(a=>a.mul(e)).withHapTime(a=>a.div(e))}_slow(e){return this._fast(fraction(1).div(e))}_inside(e,s){return s(this._slow(e))._fast(e)}_outside(e,s){return s(this._fast(e))._slow(e)}_ply(e){return this.fmap(s=>pure(s)._fast(e))._squeezeJoin()}_chop(e){const a=Array.from({length:e},(h,d)=>d).map(h=>({begin:h/e,end:(h+1)/e})),c=function(h){return sequence(a.map(d=>Object.assign({},h,d)))};return this._squeezeBind(c)}_striate(e){const a=Array.from({length:e},(h,d)=>d).map(h=>({begin:h/e,end:(h+1)/e})),c=slowcat(...a);return this.set(c)._fast(e)}_cpm(e){return this._fast(e/60)}_early(e){return e=fraction(e),this.withQueryTime(s=>s.add(e)).withHapTime(s=>s.sub(e))}_late(e){return e=fraction(e),this._early(fraction(0).sub(e))}_zoom(e,s){s=fraction(s),e=fraction(e);const a=s.sub(e);return this.withQuerySpan(c=>c.withCycle(h=>h.mul(a).add(e))).withHapSpan(c=>c.withCycle(h=>h.sub(e).div(a)))._splitQueries()}_zoomArc(e){return this.zoom(e.begin,e.end)}_linger(e){return e==0?silence:e<0?this._zoom(e.add(1),1)._slow(e):this._zoom(0,e)._slow(e)}_color(e){return this._withContext(s=>({...s,color:e}))}log(){return this._withHap(e=>{var s;return e.setContext({...e.context,logs:(((s=e.context)==null?void 0:s.logs)||[]).concat([e.show()])})})}drawLine(){return console.log(drawLine(this)),this}_segment(e){return this.struct(pure(!0)._fast(e))}invert(){return this.fmap(e=>!e)}inv(){return this.invert()}when(e,s){const a=e._filterValues(id$1),c=e._filterValues(g=>!g),h=a.fmap(g=>_=>_).appRight(s(this)),d=c.fmap(g=>_=>_).appRight(this);return stack(h,d)}off(e,s){return stack(this,s(this.late(e)))}every(e,s){const a=this,c=Array(e-1).fill(a);return c.unshift(s(a)),slowcatPrime(...c)}brak(){return this.when(slowcat(!1,!0),e=>fastcat(e,silence)._late(.25))}rev(){const e=this,s=function(a){const c=a.span,h=c.begin.sam(),d=c.begin.nextSam(),g=function(b){const $=b.withTime(_e=>h.add(d.sub(_e))),j=$.begin;return $.begin=$.end,$.end=j,$};return e.query(a.setSpan(g(c))).map(b=>b.withSpan(g))};return new Pattern$3(s)._splitQueries()}palindrome(){return this.every(2,rev)}juxBy(e,s){e/=2;const a=function(d,g,_){return g in d?d[g]:_},c=this.withValue(d=>Object.assign({},d,{pan:a(d,"pan",.5)-e})),h=this.withValue(d=>Object.assign({},d,{pan:a(d,"pan",.5)+e}));return stack(c,s(h))}_jux(e){return this.juxBy(1,e)}stack(...e){return stack(this,...e)}sequence(...e){return sequence(this,...e)}seq(...e){return sequence(this,...e)}cat(...e){return cat(this,...e)}fastcat(...e){return fastcat(this,...e)}slowcat(...e){return slowcat(this,...e)}superimpose(...e){return this.stack(...e.map(s=>s(this)))}stutWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}stut(e,s,a){return this.stutWith(e,a,(c,h)=>c.velocity(Math.pow(s,h)))}_echoWith(e,s,a){return stack(...listRange(0,e-1).map(c=>a(this.late(fraction(s).mul(c)),c)))}_echo(e,s,a){return this._echoWith(e,s,(c,h)=>c.velocity(Math.pow(a,h)))}iter(e,s=!1){return slowcat(...listRange(0,e-1).map(a=>s?this.late(a/e):this.early(a/e)))}iterBack(e){return this.iter(e,!0)}_chunk(e,s,a=!1){const c=Array(e-1).fill(!1);c.unshift(!0);const h=sequence(...c).iter(e,a);return this.when(h,s)}_chunkBack(e,s){return this._chunk(e,s,!0)}_bypass(e){return e=Boolean(parseInt(e)),e?silence:this}hush(){return silence}_duration(e){return this.withHapSpan(s=>new TimeSpan(s.begin,s.begin.add(e)))}_legato(e){return this.withHapSpan(s=>new TimeSpan(s.begin,s.begin.add(s.end.sub(s.begin).mul(e))))}_velocity(e){return this._withContext(s=>({...s,velocity:(s.velocity||1)*e}))}_loopAt(e,s=1){return this.speed(1/e*s).unit("c").slow(e)}onTrigger(e){return this._withHap(s=>s.setContext({...s.context,onTrigger:e}))}log(e=id$1){return this._withHap(s=>s.setContext({...s.context,onTrigger:(...a)=>{s.context.onTrigger&&s.context.onTrigger(...a),console.log(e(...a))}}))}logValues(e=id$1){return this.log((s,a)=>e(a.value))}}function _composeOp(o,e,s){function a(c){return c instanceof Object&&!(c instanceof Function)}return a(o)||a(e)?(a(o)||(o={value:o}),a(e)||(e={value:e}),unionWithObj(o,e,s)):s(o,e)}(function(){const o=a=>a._asNumber(),s={set:[(a,c)=>c],keep:[(a,c)=>a],keepif:[(a,c)=>c?a:void 0],add:[(a,c)=>a+c,a=>a._asNumber(!1,!0)],sub:[(a,c)=>a-c,o],mul:[(a,c)=>a*c,o],div:[(a,c)=>a/c,o],mod:[mod,o],pow:[Math.pow,o],_and:[(a,c)=>a&c,o],_or:[(a,c)=>a|c,o],_xor:[(a,c)=>a^c,o],_lshift:[(a,c)=>a<a>>c,o],lt:[(a,c)=>aa>c],lte:[(a,c)=>a<=c],gte:[(a,c)=>a>=c],eq:[(a,c)=>a==c],eqt:[(a,c)=>a===c],ne:[(a,c)=>a!=c],net:[(a,c)=>a!==c],and:[(a,c)=>a&&c],or:[(a,c)=>a||c],func:[(a,c)=>c(a)]};for(const[a,[c,h]]of Object.entries(s))for(const d of["In","Out","Mix","Squeeze","SqueezeOut","Trig","Trigzero"])Pattern$3.prototype[a+d]=function(...g){var _=this;g=sequence(g),h&&(_=h(_),g=h(g));var b=_["_op"+d](g,$=>j=>_composeOp($,j,c));return a==="keepif"&&(b=b._removeUndefineds()),b},d==="Squeeze"&&(Pattern$3.prototype[a+"SqueezeIn"]=Pattern$3.prototype[a+d]),d==="In"?Pattern$3.prototype[a]=Pattern$3.prototype[a+d]:a==="set"&&(Pattern$3.prototype[d.toLowerCase()]=Pattern$3.prototype[a+d]);Pattern$3.prototype.struct=Pattern$3.prototype.keepifOut,Pattern$3.prototype.structAll=Pattern$3.prototype.keepOut,Pattern$3.prototype.mask=Pattern$3.prototype.keepifIn,Pattern$3.prototype.maskAll=Pattern$3.prototype.keepIn,Pattern$3.prototype.reset=Pattern$3.prototype.keepifTrig,Pattern$3.prototype.resetAll=Pattern$3.prototype.keepTrig,Pattern$3.prototype.restart=Pattern$3.prototype.keepifTrigzero,Pattern$3.prototype.restartAll=Pattern$3.prototype.keepTrigzero})();Pattern$3.prototype.patternified=["apply","chop","color","cpm","duration","early","fast","jux","late","legato","linger","ply","segment","striate","slow","velocity"];Pattern$3.prototype.factories={pure,stack,slowcat,fastcat,cat,timeCat,sequence,seq:seq$2,polymeter,pm,polyrhythm,pr};const silence=new Pattern$3(o=>[]);function pure(o){function e(s){return s.span.spanCycles.map(a=>new Hap(fraction(a.begin).wholeCycle(),a,o))}return new Pattern$3(e)}function isPattern$1(o){const e=o instanceof Pattern$3||(o==null?void 0:o._Pattern);return!o instanceof Pattern$3&&console.warn(`Found Pattern that fails "instanceof Pattern" check. - This may happen if you are using multiple versions of @strudel.cycles/core. - Please check by running "npm ls @strudel.cycles/core".`),e}function reify$1(o){return isPattern$1(o)?o:pure(o)}function stack(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=s=>flatten$1(o.map(a=>a.query(s)));return new Pattern$3(e)}function slowcat(...o){o=o.map(s=>Array.isArray(s)?sequence(...s):reify$1(s));const e=function(s){const a=s.span,c=mod(a.begin.sam(),o.length),h=o[c];if(!h)return[];const d=a.begin.floor().sub(a.begin.div(o.length).floor());return h.withHapTime(g=>g.add(d)).query(s.setSpan(a.withTime(g=>g.sub(d))))};return new Pattern$3(e)._splitQueries()}function slowcatPrime(...o){o=o.map(reify$1);const e=function(s){const a=Math.floor(s.span.begin)%o.length,c=o[a];return(c==null?void 0:c.query(s))||[]};return new Pattern$3(e)._splitQueries()}function fastcat(...o){return slowcat(...o)._fast(o.length)}function cat(...o){return slowcat(...o)}function timeCat(...o){const e=o.map(c=>c[0]).reduce((c,h)=>c.add(h),fraction(0));let s=fraction(0);const a=[];for(const[c,h]of o){const d=s.add(c);a.push(reify$1(h)._compress(s.div(e),d.div(e))),s=d}return stack(...a)}function sequence(...o){return fastcat(...o)}function seq$2(...o){return fastcat(...o)}function _sequenceCount(o){return Array.isArray(o)?o.length==0?[silence,0]:o.length==1?_sequenceCount(o[0]):[fastcat(...o.map(e=>_sequenceCount(e)[0])),o.length]:[reify$1(o),1]}function polymeterSteps(o,...e){const s=e.map(c=>_sequenceCount(c));if(s.length==0)return silence;o==0&&(o=s[0][1]);const a=[];for(const c of s)c[1]==0&&next,o==c[1]?a.push(c[0]):a.push(c[0]._fast(fraction(o).div(fraction(c[1]))));return stack(...a)}function polymeter(...o){return polymeterSteps(0,...o)}function pm(...o){polymeter(...o)}function polyrhythm(...o){const e=o.map(s=>sequence(s));return e.length==0?silence:stack(...e)}function pr(o){polyrhythm(o)}const add$1=curry((o,e)=>e.add(o)),chop=curry((o,e)=>e.chop(o)),chunk=curry((o,e)=>e.chunk(o)),chunkBack=curry((o,e)=>e.chunkBack(o)),div=curry((o,e)=>e.div(o)),early=curry((o,e)=>e.early(o)),echo=curry((o,e,s,a)=>a.echo(o,e,s)),every=curry((o,e,s)=>s.every(o,e)),fast=curry((o,e)=>e.fast(o)),inv=o=>o.inv(),invert=o=>o.invert(),iter=curry((o,e)=>e.iter(o)),iterBack=curry((o,e)=>e.iter(o)),jux=curry((o,e)=>e.jux(o)),juxBy=curry((o,e,s)=>s.juxBy(o,e)),late=curry((o,e)=>e.late(o)),linger=curry((o,e)=>e.linger(o)),mask=curry((o,e)=>e.mask(o)),mul=curry((o,e)=>e.mul(o)),off=curry((o,e,s)=>s.off(o,e)),ply=curry((o,e)=>e.ply(o)),range=curry((o,e,s)=>s.range(o,e)),range2=curry((o,e,s)=>s.range2(o,e)),rev=o=>o.rev(),slow=curry((o,e)=>e.slow(o)),struct=curry((o,e)=>e.struct(o)),sub=curry((o,e)=>e.sub(o)),superimpose=curry((o,e)=>e.superimpose(...o)),set=curry((o,e)=>e.set(o)),when=curry((o,e,s)=>s.when(o,e));Pattern$3.prototype.composable={fast,slow,early,late,superimpose};function makeComposable(o){return Object.entries(Pattern$3.prototype.composable).forEach(([e,s])=>{o[e]=(...a)=>{const c=compose(o,s(...a));return makeComposable(c)}}),o}const patternify2=o=>(e,s,a)=>e.fmap(c=>h=>o.call(a,c,h)).appLeft(s).innerJoin(),patternify3=o=>(e,s,a,c)=>e.fmap(h=>d=>g=>o.call(c,h,d,g)).appLeft(s).appLeft(a).innerJoin(),patternify4=o=>(e,s,a,c,h)=>e.fmap(d=>g=>_=>b=>o.call(h,d,g,_,b)).appLeft(s).appLeft(a).appLeft(c).innerJoin();Pattern$3.prototype.echo=function(...o){return o=o.map(reify$1),patternify3(Pattern$3.prototype._echo)(...o,this)};Pattern$3.prototype.echoWith=function(...o){return o=o.map(reify$1),patternify3(Pattern$3.prototype._echoWith)(...o,this)};Pattern$3.prototype.chunk=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._chunk)(...o,this)};Pattern$3.prototype.chunkBack=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._chunkBack)(...o,this)};Pattern$3.prototype.loopAt=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._loopAt)(...o,this)};Pattern$3.prototype.zoom=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._zoom)(...o,this)};Pattern$3.prototype.compress=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._compress)(...o,this)};Pattern$3.prototype.outside=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._outside)(...o,this)};Pattern$3.prototype.inside=function(...o){return o=o.map(reify$1),patternify2(Pattern$3.prototype._inside)(...o,this)};Pattern$3.prototype.bootstrap=function(){const o=Object.fromEntries(Object.entries(Pattern$3.prototype.composable).map(([e,s])=>(Pattern$3.prototype[e]&&(Pattern$3.prototype[e]=makeComposable(Pattern$3.prototype[e])),[e,curry(s,makeComposable)])));return this.patternified.forEach(e=>{Pattern$3.prototype[e]=function(...s){return this._patternify(Pattern$3.prototype["_"+e])(...s)}}),o};Pattern$3.prototype.define=(o,e,s={})=>{s.composable&&(Pattern$3.prototype.composable[o]=e),s.patternified&&(Pattern$3.prototype.patternified=Pattern$3.prototype.patternified.concat([o])),Pattern$3.prototype.bootstrap()};Pattern$3.prototype.define("hush",o=>o.hush(),{patternified:!1,composable:!0});Pattern$3.prototype.define("bypass",o=>o.bypass(on),{patternified:!0,composable:!0});const controls={},generic_params=[["s","s","sound"],["f","n","The note or sample number to choose for a synth or sampleset"],["f","note","The note or pitch to play a sound or synth with"],["f","accelerate","a pattern of numbers that speed up (or slow down) samples while they play."],["f","gain","a pattern of numbers that specify volume. Values less than 1 make the sound quieter. Values greater than 1 make the sound louder. For the linear equivalent, see @amp@."],["f","amp","like @gain@, but linear."],["f","attack","a pattern of numbers to specify the attack time (in seconds) of an envelope applied to each sample."],["f","decay",""],["f","sustain",""],["f","release","a pattern of numbers to specify the release time (in seconds) of an envelope applied to each sample."],["f","hold","a pattern of numbers to specify the hold time (in seconds) of an envelope applied to each sample. Only takes effect if `attack` and `release` are also specified."],["f","bandf","A pattern of numbers from 0 to 1. Sets the center frequency of the band-pass filter."],["f","bandq","a pattern of anumbers from 0 to 1. Sets the q-factor of the band-pass filter."],["f","begin","a pattern of numbers from 0 to 1. Skips the beginning of each sample, e.g. `0.25` to cut off the first quarter from each sample."],["f","end","the same as `begin`, but cuts the end off samples, shortening them; e.g. `0.75` to cut off the last quarter of each sample."],["f","loop","loops the sample (from `begin` to `end`) the specified number of times."],["f","legato","controls the amount of overlap between two adjacent sounds"],["f","crush","bit crushing, a pattern of numbers from 1 (for drastic reduction in bit-depth) to 16 (for barely no reduction)."],["f","coarse","fake-resampling, a pattern of numbers for lowering the sample rate, i.e. 1 for original 2 for half, 3 for a third and so on."],["i","channel","choose the channel the pattern is sent to in superdirt"],["i","cut","In the style of classic drum-machines, `cut` will stop a playing sample as soon as another samples with in same cutgroup is to be played. An example would be an open hi-hat followed by a closed one, essentially muting the open."],["f","cutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the low-pass filter."],["f","hcutoff","a pattern of numbers from 0 to 1. Applies the cutoff frequency of the high-pass filter. Also has alias @hpf@"],["f","hresonance","a pattern of numbers from 0 to 1. Applies the resonance of the high-pass filter. Has alias @hpq@"],["f","resonance","a pattern of numbers from 0 to 1. Specifies the resonance of the low-pass filter."],["f","djf","DJ filter, below 0.5 is low pass filter, above is high pass filter."],["f","delay","a pattern of numbers from 0 to 1. Sets the level of the delay signal."],["f","delayfeedback","a pattern of numbers from 0 to 1. Sets the amount of delay feedback."],["f","delaytime","a pattern of numbers from 0 to 1. Sets the length of the delay."],["f","lock","A pattern of numbers. Specifies whether delaytime is calculated relative to cps. When set to 1, delaytime is a direct multiple of a cycle."],["f","detune",""],["f","dry","when set to `1` will disable all reverb for this pattern. See `room` and `size` for more information about reverb."],["f","fadeTime","Used when using begin/end or chop/striate and friends, to change the fade out time of the 'grain' envelope."],["f","fadeInTime","As with fadeTime, but controls the fade in time of the grain envelope. Not used if the grain begins at position 0 in the sample."],["f","freq",""],["f","gate",""],["f","leslie",""],["f","lrate",""],["f","lsize",""],["f","degree",""],["f","mtranspose",""],["f","ctranspose",""],["f","harmonic",""],["f","stepsPerOctave",""],["f","octaveR",""],["f","nudge","Nudges events into the future by the specified number of seconds. Negative numbers work up to a point as well (due to internal latency)"],["i","octave",""],["f","offset",""],["i","orbit","a pattern of numbers. An `orbit` is a global parameter context for patterns. Patterns with the same orbit will share hardware output bus offset and global effects, e.g. reverb and delay. The maximum number of orbits is specified in the superdirt startup, numbers higher than maximum will wrap around."],["f","overgain",""],["f","overshape",""],["f","pan","a pattern of numbers between 0 and 1, from left to right (assuming stereo), once round a circle (assuming multichannel)"],["f","panspan","a pattern of numbers between -inf and inf, which controls how much multichannel output is fanned out (negative is backwards ordering)"],["f","pansplay","a pattern of numbers between 0.0 and 1.0, which controls the multichannel spread range (multichannel only)"],["f","panwidth","a pattern of numbers between 0.0 and inf, which controls how much each channel is distributed over neighbours (multichannel only)"],["f","panorient","a pattern of numbers between -1.0 and 1.0, which controls the relative position of the centre pan in a pair of adjacent speakers (multichannel only)"],["f","rate","used in SuperDirt softsynths as a control rate or 'speed'"],["f","slide",""],["f","semitone",""],["f","velocity",""],["f","voice",""],["f","room","a pattern of numbers from 0 to 1. Sets the level of reverb."],["f","size","a pattern of numbers from 0 to 1. Sets the perceptual size (reverb time) of the `room` to be used in reverb."],["f","shape","wave shaping distortion, a pattern of numbers from 0 for no distortion up to 1 for loads of distortion."],["f","speed","a pattern of numbers which changes the speed of sample playback, i.e. a cheap way of changing pitch. Negative values will play the sample backwards!"],["s","unit",'used in conjunction with `speed`, accepts values of "r" (rate, default behavior), "c" (cycles), or "s" (seconds). Using `unit "c"` means `speed` will be interpreted in units of cycles, e.g. `speed "1"` means samples will be stretched to fill a cycle. Using `unit "s"` means the playback speed will be adjusted so that the duration is the number of seconds specified by `speed`.'],["f","squiz",""],["f","stutterdepth",""],["f","stuttertime",""],["f","timescale",""],["f","timescalewin",""],["s","vowel","formant filter to make things sound like vowels, a pattern of either `a`, `e`, `i`, `o` or `u`. Use a rest (`~`) for no effect."],["f","waveloss",""],["f","dur",""],["f","expression",""],["f","sustainpedal",""],["f","tremolodepth","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","tremolorate","Tremolo Audio DSP effect | params are 'tremolorate' and 'tremolodepth'"],["f","phaserdepth","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","phaserrate","Phaser Audio DSP effect | params are 'phaserrate' and 'phaserdepth'"],["f","fshift","frequency shifter"],["f","fshiftnote","frequency shifter"],["f","fshiftphase","frequency shifter"],["f","triode","tube distortion"],["f","krush","shape/bass enhancer"],["f","kcutoff",""],["f","octer","octaver effect"],["f","octersub","octaver effect"],["f","octersubsub","octaver effect"],["f","ring","ring modulation"],["f","ringf","ring modulation"],["f","ringdf","ring modulation"],["f","distort","noisy fuzzy distortion"],["f","freeze","Spectral freeze"],["f","xsdelay",""],["f","tsdelay",""],["f","real","Spectral conform"],["f","imag",""],["f","enhance","Spectral enhance"],["f","partials",""],["f","comb","Spectral comb"],["f","smear","Spectral smear"],["f","scram","Spectral scramble"],["f","binshift","Spectral binshift"],["f","hbrick","High pass sort of spectral filter"],["f","lbrick","Low pass sort of spectral filter"],["f","midichan",""],["f","control",""],["f","ccn",""],["f","ccv",""],["f","polyTouch",""],["f","midibend",""],["f","miditouch",""],["f","ctlNum",""],["f","frameRate",""],["f","frames",""],["f","hours",""],["s","midicmd",""],["f","minutes",""],["f","progNum",""],["f","seconds",""],["f","songPtr",""],["f","uid",""],["f","val",""],["f","cps",""],["f","clip",""]],_name=(o,...e)=>sequence(...e).withValue(s=>({[o]:s})),_setter=(o,e)=>function(...s){return s.length?this.set(o(...s)):this.fmap(a=>({[e]:a}))};generic_params.forEach(([o,e,s])=>{controls[e]=(...a)=>_name(e,...a),Pattern$3.prototype[e]=_setter(controls[e],e)});controls.createParam=o=>{const e=(...s)=>_name(o,...s);return Pattern$3.prototype[o]=_setter(e,o),(...s)=>_name(o,...s)};controls.createParams=(...o)=>o.reduce((e,s)=>Object.assign(e,{[s]:createParam(s)}),{});var dist$7={},tokenizer={},utils$1={},unicode$2={};Object.defineProperty(unicode$2,"__esModule",{value:!0});unicode$2.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$2.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$2.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$2.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$2.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$2.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(utils$1,"__esModule",{value:!0});utils$1.isStrictModeReservedWord=isStrictModeReservedWord;utils$1.isWhiteSpace=isWhiteSpace;utils$1.isLineTerminator=isLineTerminator;utils$1.isIdentifierStart=isIdentifierStart$1;utils$1.isIdentifierPart=isIdentifierPart$1;utils$1.isDecimalDigit=isDecimalDigit;utils$1.getHexValue=getHexValue;var _unicode$2=unicode$2,strictReservedWords=["null","true","false","implements","interface","package","private","protected","public","static","let","if","in","do","var","for","new","try","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];function isStrictModeReservedWord(o){return strictReservedWords.indexOf(o)!==-1}function isWhiteSpace(o){return o<128?_unicode$2.whitespaceBool[o]:o===160||o>5759&&_unicode$2.whitespaceArray.indexOf(o)!==-1}function isLineTerminator(o){return o===10||o===13||o===8232||o===8233}function isIdentifierStart$1(o){return o<128?_unicode$2.idStartBool[o]:_unicode$2.idStartLargeRegex.test(String.fromCodePoint(o))}function isIdentifierPart$1(o){return o<128?_unicode$2.idContinueBool[o]:_unicode$2.idContinueLargeRegex.test(String.fromCodePoint(o))}function isDecimalDigit(o){return o>=48&&o<=57}function getHexValue(o){return o>="0"&&o<="9"?o.charCodeAt(0)-48:o>="a"&&o<="f"?o.charCodeAt(0)-87:o>="A"&&o<="F"?o.charCodeAt(0)-55:-1}var errors={};Object.defineProperty(errors,"__esModule",{value:!0});errors.ErrorMessages={UNEXPECTED_TOKEN:function(e){return"Unexpected token "+JSON.stringify(e)},UNEXPECTED_ILLEGAL_TOKEN:function(e){return"Unexpected "+JSON.stringify(e)},UNEXPECTED_ESCAPED_KEYWORD:"Unexpected escaped keyword",UNEXPECTED_NUMBER:"Unexpected number",UNEXPECTED_STRING:"Unexpected string",UNEXPECTED_IDENTIFIER:"Unexpected identifier",UNEXPECTED_RESERVED_WORD:"Unexpected reserved word",UNEXPECTED_TEMPLATE:"Unexpected template",UNEXPECTED_EOS:"Unexpected end of input",UNEXPECTED_LINE_TERMINATOR:"Unexpected line terminator",UNEXPECTED_COMMA_AFTER_REST:"Unexpected comma after rest",UNEXPECTED_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",NEWLINE_AFTER_THROW:"Illegal newline after throw",UNTERMINATED_REGEXP:"Invalid regular expression: missing /",INVALID_LAST_REST_PARAMETER:"Rest parameter must be last formal parameter",INVALID_REST_PARAMETERS_INITIALIZATION:"Rest parameter may not have a default initializer",INVALID_REGEXP_FLAGS:"Invalid regular expression flags",INVALID_REGEX:"Invalid regular expression",INVALID_LHS_IN_ASSIGNMENT:"Invalid left-hand side in assignment",INVALID_LHS_IN_BINDING:"Invalid left-hand side in binding",INVALID_LHS_IN_FOR_IN:"Invalid left-hand side in for-in",INVALID_LHS_IN_FOR_OF:"Invalid left-hand side in for-of",INVALID_LHS_IN_FOR_AWAIT:"Invalid left-hand side in for-await",INVALID_UPDATE_OPERAND:"Increment/decrement target must be an identifier or member expression",INVALID_EXPONENTIATION_LHS:"Unary expressions as the left operand of an exponentation expression must be disambiguated with parentheses",MULTIPLE_DEFAULTS_IN_SWITCH:"More than one default clause in switch statement",NO_CATCH_OR_FINALLY:"Missing catch or finally after try",ILLEGAL_RETURN:"Illegal return statement",ILLEGAL_ARROW_FUNCTION_PARAMS:"Illegal arrow function parameter list",INVALID_ASYNC_PARAMS:"Async function parameters must not contain await expressions",INVALID_VAR_INIT_FOR_IN:"Invalid variable declaration in for-in statement",INVALID_VAR_INIT_FOR_OF:"Invalid variable declaration in for-of statement",INVALID_VAR_INIT_FOR_AWAIT:"Invalid variable declaration in for-await statement",UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT:"Binding pattern appears without initializer in for statement init",ILLEGAL_PROPERTY:"Illegal property initializer",INVALID_ID_BINDING_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in binding position in strict mode"},INVALID_ID_IN_LABEL_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in label position in strict mode"},INVALID_ID_IN_EXPRESSION_STRICT_MODE:function(e){return"The identifier "+JSON.stringify(e)+" must not be in expression position in strict mode"},INVALID_CALL_TO_SUPER:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',INVALID_DELETE_STRICT_MODE:"Identifier expressions must not be deleted in strict mode",DUPLICATE_BINDING:function(e){return"Duplicate binding "+JSON.stringify(e)},ILLEGAL_ID_IN_LEXICAL_DECLARATION:function(e){return"Lexical declarations must not have a binding named "+JSON.stringify(e)},UNITIALIZED_CONST:"Constant lexical declarations must have an initialiser",ILLEGAL_LABEL_IN_BODY:function(e){return"The body of a "+e+" statement must not be a labeled function declaration"},ILLEGEAL_LABEL_IN_IF:"The consequent of an if statement must not be a labeled function declaration",ILLEGAL_LABEL_IN_ELSE:"The alternate of an if statement must not be a labeled function declaration",ILLEGAL_CONTINUE_WITHOUT_ITERATION_WITH_ID:function(e){return"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e)},ILLEGAL_CONTINUE_WITHOUT_ITERATION:"Continue statement must be nested within an iteration statement",ILLEGAL_BREAK_WITHOUT_ITERATION_OR_SWITCH:"Break statement must be nested within an iteration statement or a switch statement",ILLEGAL_WITH_STRICT_MODE:"Strict mode code must not include a with statement",ILLEGAL_ACCESS_SUPER_MEMBER:"Member access on super must be in a method",ILLEGAL_SUPER_CALL:'Calls to super must be in the "constructor" method of a class expression or class declaration that has a superclass',DUPLICATE_LABEL_DECLARATION:function(e){return"Label "+JSON.stringify(e)+" has already been declared"},ILLEGAL_BREAK_WITHIN_LABEL:function(e){return"Break statement must be nested within a statement with label "+JSON.stringify(e)},ILLEGAL_YIELD_EXPRESSIONS:function(e){return e+" parameters must not contain yield expressions"},ILLEGAL_YIELD_IDENTIFIER:'"yield" may not be used as an identifier in this context',ILLEGAL_AWAIT_IDENTIFIER:'"await" may not be used as an identifier in this context',DUPLICATE_CONSTRUCTOR:"Duplicate constructor method in class",ILLEGAL_CONSTRUCTORS:"Constructors cannot be async, generators, getters or setters",ILLEGAL_STATIC_CLASS_NAME:'Static class methods cannot be named "prototype"',NEW_TARGET_ERROR:"new.target must be within function (but not arrow expression) code",DUPLICATE_EXPORT:function(e){return"Duplicate export "+JSON.stringify(e)},UNDECLARED_BINDING:function(e){return"Exported binding "+JSON.stringify(e)+" is not declared"},DUPLICATE_PROPTO_PROP:"Duplicate __proto__ property in object literal not allowed",ILLEGAL_LABEL_FUNC_DECLARATION:"Labeled FunctionDeclarations are disallowed in strict mode",ILLEGAL_FUNC_DECL_IF:"FunctionDeclarations in IfStatements are disallowed in strict mode",ILLEGAL_USE_STRICT:'Functions with non-simple parameter lists may not contain a "use strict" directive',ILLEGAL_EXPORTED_NAME:"Names of variables used in an export specifier from the current module must be identifiers",NO_OCTALS_IN_TEMPLATES:"Template literals may not contain octal escape sequences",NO_AWAIT_IN_ASYNC_PARAMS:'Async arrow parameters may not contain "await"'};Object.defineProperty(tokenizer,"__esModule",{value:!0});tokenizer.JsError=tokenizer.TokenType=tokenizer.TokenClass=void 0;var _slicedToArray=function(){function o(e,s){var a=[],c=!0,h=!1,d=void 0;try{for(var g=e[Symbol.iterator](),_;!(c=(_=g.next()).done)&&(a.push(_.value),!(s&&a.length===s));c=!0);}catch(b){h=!0,d=b}finally{try{!c&&g.return&&g.return()}finally{if(h)throw d}}return a}return function(e,s){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return o(e,s);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass$e=function(){function o(e,s){for(var a=0;a"},Ident:{name:"Identifier",isIdentifierName:!0},Keyword:{name:"Keyword",isIdentifierName:!0},NumericLiteral:{name:"Numeric"},TemplateElement:{name:"Template"},Punctuator:{name:"Punctuator"},StringLiteral:{name:"String"},RegularExpression:{name:"RegularExpression"},Illegal:{name:"Illegal"}},TokenType=tokenizer.TokenType={EOS:{klass:TokenClass.Eof,name:"EOS"},LPAREN:{klass:TokenClass.Punctuator,name:"("},RPAREN:{klass:TokenClass.Punctuator,name:")"},LBRACK:{klass:TokenClass.Punctuator,name:"["},RBRACK:{klass:TokenClass.Punctuator,name:"]"},LBRACE:{klass:TokenClass.Punctuator,name:"{"},RBRACE:{klass:TokenClass.Punctuator,name:"}"},COLON:{klass:TokenClass.Punctuator,name:":"},SEMICOLON:{klass:TokenClass.Punctuator,name:";"},PERIOD:{klass:TokenClass.Punctuator,name:"."},ELLIPSIS:{klass:TokenClass.Punctuator,name:"..."},ARROW:{klass:TokenClass.Punctuator,name:"=>"},CONDITIONAL:{klass:TokenClass.Punctuator,name:"?"},INC:{klass:TokenClass.Punctuator,name:"++"},DEC:{klass:TokenClass.Punctuator,name:"--"},ASSIGN:{klass:TokenClass.Punctuator,name:"="},ASSIGN_BIT_OR:{klass:TokenClass.Punctuator,name:"|="},ASSIGN_BIT_XOR:{klass:TokenClass.Punctuator,name:"^="},ASSIGN_BIT_AND:{klass:TokenClass.Punctuator,name:"&="},ASSIGN_SHL:{klass:TokenClass.Punctuator,name:"<<="},ASSIGN_SHR:{klass:TokenClass.Punctuator,name:">>="},ASSIGN_SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>="},ASSIGN_ADD:{klass:TokenClass.Punctuator,name:"+="},ASSIGN_SUB:{klass:TokenClass.Punctuator,name:"-="},ASSIGN_MUL:{klass:TokenClass.Punctuator,name:"*="},ASSIGN_DIV:{klass:TokenClass.Punctuator,name:"/="},ASSIGN_MOD:{klass:TokenClass.Punctuator,name:"%="},ASSIGN_EXP:{klass:TokenClass.Punctuator,name:"**="},COMMA:{klass:TokenClass.Punctuator,name:","},OR:{klass:TokenClass.Punctuator,name:"||"},AND:{klass:TokenClass.Punctuator,name:"&&"},BIT_OR:{klass:TokenClass.Punctuator,name:"|"},BIT_XOR:{klass:TokenClass.Punctuator,name:"^"},BIT_AND:{klass:TokenClass.Punctuator,name:"&"},SHL:{klass:TokenClass.Punctuator,name:"<<"},SHR:{klass:TokenClass.Punctuator,name:">>"},SHR_UNSIGNED:{klass:TokenClass.Punctuator,name:">>>"},ADD:{klass:TokenClass.Punctuator,name:"+"},SUB:{klass:TokenClass.Punctuator,name:"-"},MUL:{klass:TokenClass.Punctuator,name:"*"},DIV:{klass:TokenClass.Punctuator,name:"/"},MOD:{klass:TokenClass.Punctuator,name:"%"},EXP:{klass:TokenClass.Punctuator,name:"**"},EQ:{klass:TokenClass.Punctuator,name:"=="},NE:{klass:TokenClass.Punctuator,name:"!="},EQ_STRICT:{klass:TokenClass.Punctuator,name:"==="},NE_STRICT:{klass:TokenClass.Punctuator,name:"!=="},LT:{klass:TokenClass.Punctuator,name:"<"},GT:{klass:TokenClass.Punctuator,name:">"},LTE:{klass:TokenClass.Punctuator,name:"<="},GTE:{klass:TokenClass.Punctuator,name:">="},INSTANCEOF:{klass:TokenClass.Keyword,name:"instanceof"},IN:{klass:TokenClass.Keyword,name:"in"},NOT:{klass:TokenClass.Punctuator,name:"!"},BIT_NOT:{klass:TokenClass.Punctuator,name:"~"},ASYNC:{klass:TokenClass.Keyword,name:"async"},AWAIT:{klass:TokenClass.Keyword,name:"await"},ENUM:{klass:TokenClass.Keyword,name:"enum"},DELETE:{klass:TokenClass.Keyword,name:"delete"},TYPEOF:{klass:TokenClass.Keyword,name:"typeof"},VOID:{klass:TokenClass.Keyword,name:"void"},BREAK:{klass:TokenClass.Keyword,name:"break"},CASE:{klass:TokenClass.Keyword,name:"case"},CATCH:{klass:TokenClass.Keyword,name:"catch"},CLASS:{klass:TokenClass.Keyword,name:"class"},CONTINUE:{klass:TokenClass.Keyword,name:"continue"},DEBUGGER:{klass:TokenClass.Keyword,name:"debugger"},DEFAULT:{klass:TokenClass.Keyword,name:"default"},DO:{klass:TokenClass.Keyword,name:"do"},ELSE:{klass:TokenClass.Keyword,name:"else"},EXPORT:{klass:TokenClass.Keyword,name:"export"},EXTENDS:{klass:TokenClass.Keyword,name:"extends"},FINALLY:{klass:TokenClass.Keyword,name:"finally"},FOR:{klass:TokenClass.Keyword,name:"for"},FUNCTION:{klass:TokenClass.Keyword,name:"function"},IF:{klass:TokenClass.Keyword,name:"if"},IMPORT:{klass:TokenClass.Keyword,name:"import"},LET:{klass:TokenClass.Keyword,name:"let"},NEW:{klass:TokenClass.Keyword,name:"new"},RETURN:{klass:TokenClass.Keyword,name:"return"},SUPER:{klass:TokenClass.Keyword,name:"super"},SWITCH:{klass:TokenClass.Keyword,name:"switch"},THIS:{klass:TokenClass.Keyword,name:"this"},THROW:{klass:TokenClass.Keyword,name:"throw"},TRY:{klass:TokenClass.Keyword,name:"try"},VAR:{klass:TokenClass.Keyword,name:"var"},WHILE:{klass:TokenClass.Keyword,name:"while"},WITH:{klass:TokenClass.Keyword,name:"with"},NULL:{klass:TokenClass.Keyword,name:"null"},TRUE:{klass:TokenClass.Keyword,name:"true"},FALSE:{klass:TokenClass.Keyword,name:"false"},YIELD:{klass:TokenClass.Keyword,name:"yield"},NUMBER:{klass:TokenClass.NumericLiteral,name:""},STRING:{klass:TokenClass.StringLiteral,name:""},REGEXP:{klass:TokenClass.RegularExpression,name:""},IDENTIFIER:{klass:TokenClass.Ident,name:""},CONST:{klass:TokenClass.Keyword,name:"const"},TEMPLATE:{klass:TokenClass.TemplateElement,name:""},ESCAPED_KEYWORD:{klass:TokenClass.Keyword,name:""},ILLEGAL:{klass:TokenClass.Illegal,name:""}},TT=TokenType,I=TT.ILLEGAL,F=!1,T=!0,ONE_CHAR_PUNCTUATOR=[I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.NOT,I,I,I,TT.MOD,TT.BIT_AND,I,TT.LPAREN,TT.RPAREN,TT.MUL,TT.ADD,TT.COMMA,TT.SUB,TT.PERIOD,TT.DIV,I,I,I,I,I,I,I,I,I,I,TT.COLON,TT.SEMICOLON,TT.LT,TT.ASSIGN,TT.GT,TT.CONDITIONAL,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACK,I,TT.RBRACK,TT.BIT_XOR,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,I,TT.LBRACE,TT.BIT_OR,TT.RBRACE,TT.BIT_NOT],PUNCTUATOR_START=[F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,F,F,T,T,F,T,T,T,T,T,T,F,T,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,F,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,F],JsError=tokenizer.JsError=function(o){_inherits$8(e,o);function e(s,a,c,h){_classCallCheck$i(this,e);var d=_possibleConstructorReturn$8(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,h));d.index=s;try{d.line=a,d.column=c}catch{}return d.parseErrorLine=a,d.parseErrorColumn=c,d.description=h,d.message="["+a+":"+c+"]: "+h,d}return e}(Error);function fromCodePoint$1(o){if(o<=65535)return String.fromCharCode(o);var e=String.fromCharCode(Math.floor((o-65536)/1024)+55296),s=String.fromCharCode((o-65536)%1024+56320);return e+s}function decodeUtf16(o,e){return(o-55296)*1024+(e-56320)+65536}var Tokenizer=function(){function o(e){_classCallCheck$i(this,o),this.source=e,this.index=0,this.line=0,this.lineStart=0,this.startIndex=0,this.startLine=0,this.startLineStart=0,this.lastIndex=0,this.lastLine=0,this.lastLineStart=0,this.hasLineTerminatorBeforeNext=!1,this.tokenIndex=0}return _createClass$e(o,[{key:"saveLexerState",value:function(){return{source:this.source,index:this.index,line:this.line,lineStart:this.lineStart,startIndex:this.startIndex,startLine:this.startLine,startLineStart:this.startLineStart,lastIndex:this.lastIndex,lastLine:this.lastLine,lastLineStart:this.lastLineStart,lookahead:this.lookahead,hasLineTerminatorBeforeNext:this.hasLineTerminatorBeforeNext,tokenIndex:this.tokenIndex}}},{key:"restoreLexerState",value:function(s){this.source=s.source,this.index=s.index,this.line=s.line,this.lineStart=s.lineStart,this.startIndex=s.startIndex,this.startLine=s.startLine,this.startLineStart=s.startLineStart,this.lastIndex=s.lastIndex,this.lastLine=s.lastLine,this.lastLineStart=s.lastLineStart,this.lookahead=s.lookahead,this.hasLineTerminatorBeforeNext=s.hasLineTerminatorBeforeNext,this.tokenIndex=s.tokenIndex}},{key:"createILLEGAL",value:function(){return this.startIndex=this.index,this.startLine=this.line,this.startLineStart=this.lineStart,this.index1?c-1:0),d=1;d10)return TokenType.IDENTIFIER;switch(s.length){case 2:switch(s.charAt(0)){case"i":switch(s.charAt(1)){case"f":return TokenType.IF;case"n":return TokenType.IN}break;case"d":if(s.charAt(1)==="o")return TokenType.DO;break}break;case 3:switch(s.charAt(0)){case"v":if(o.cse2(s,"a","r"))return TokenType.VAR;break;case"f":if(o.cse2(s,"o","r"))return TokenType.FOR;break;case"n":if(o.cse2(s,"e","w"))return TokenType.NEW;break;case"t":if(o.cse2(s,"r","y"))return TokenType.TRY;break;case"l":if(o.cse2(s,"e","t"))return TokenType.LET;break}break;case 4:switch(s.charAt(0)){case"t":if(o.cse3(s,"h","i","s"))return TokenType.THIS;if(o.cse3(s,"r","u","e"))return TokenType.TRUE;break;case"n":if(o.cse3(s,"u","l","l"))return TokenType.NULL;break;case"e":if(o.cse3(s,"l","s","e"))return TokenType.ELSE;if(o.cse3(s,"n","u","m"))return TokenType.ENUM;break;case"c":if(o.cse3(s,"a","s","e"))return TokenType.CASE;break;case"v":if(o.cse3(s,"o","i","d"))return TokenType.VOID;break;case"w":if(o.cse3(s,"i","t","h"))return TokenType.WITH;break}break;case 5:switch(s.charAt(0)){case"a":if(o.cse4(s,"s","y","n","c"))return TokenType.ASYNC;if(o.cse4(s,"w","a","i","t"))return TokenType.AWAIT;break;case"w":if(o.cse4(s,"h","i","l","e"))return TokenType.WHILE;break;case"b":if(o.cse4(s,"r","e","a","k"))return TokenType.BREAK;break;case"f":if(o.cse4(s,"a","l","s","e"))return TokenType.FALSE;break;case"c":if(o.cse4(s,"a","t","c","h"))return TokenType.CATCH;if(o.cse4(s,"o","n","s","t"))return TokenType.CONST;if(o.cse4(s,"l","a","s","s"))return TokenType.CLASS;break;case"t":if(o.cse4(s,"h","r","o","w"))return TokenType.THROW;break;case"y":if(o.cse4(s,"i","e","l","d"))return TokenType.YIELD;break;case"s":if(o.cse4(s,"u","p","e","r"))return TokenType.SUPER;break}break;case 6:switch(s.charAt(0)){case"r":if(o.cse5(s,"e","t","u","r","n"))return TokenType.RETURN;break;case"t":if(o.cse5(s,"y","p","e","o","f"))return TokenType.TYPEOF;break;case"d":if(o.cse5(s,"e","l","e","t","e"))return TokenType.DELETE;break;case"s":if(o.cse5(s,"w","i","t","c","h"))return TokenType.SWITCH;break;case"e":if(o.cse5(s,"x","p","o","r","t"))return TokenType.EXPORT;break;case"i":if(o.cse5(s,"m","p","o","r","t"))return TokenType.IMPORT;break}break;case 7:switch(s.charAt(0)){case"d":if(o.cse6(s,"e","f","a","u","l","t"))return TokenType.DEFAULT;break;case"f":if(o.cse6(s,"i","n","a","l","l","y"))return TokenType.FINALLY;break;case"e":if(o.cse6(s,"x","t","e","n","d","s"))return TokenType.EXTENDS;break}break;case 8:switch(s.charAt(0)){case"f":if(o.cse7(s,"u","n","c","t","i","o","n"))return TokenType.FUNCTION;break;case"c":if(o.cse7(s,"o","n","t","i","n","u","e"))return TokenType.CONTINUE;break;case"d":if(o.cse7(s,"e","b","u","g","g","e","r"))return TokenType.DEBUGGER;break}break;case 10:if(s==="instanceof")return TokenType.INSTANCEOF;break}return TokenType.IDENTIFIER}},{key:"skipSingleLineComment",value:function(s){for(this.index+=s;this.index=a)break;if(c=this.source.charCodeAt(this.index+1),c===47)this.skipSingleLineComment(2),s=!0;else if(c===42)s=this.skipMultiLineComment()||s;else break}else if(!this.moduleIsTheGoalSymbol&&s&&c===45){if(this.index+2>=a)break;if(this.source.charAt(this.index+1)==="-"&&this.source.charAt(this.index+2)===">")this.skipSingleLineComment(3);else break}else if(!this.moduleIsTheGoalSymbol&&c===60)if(this.source.slice(this.index+1,this.index+4)==="!--")this.skipSingleLineComment(4),s=!0;else break;else break}}},{key:"scanHexEscape2",value:function(){if(this.index+2>this.source.length)return-1;var s=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(s===-1)return-1;var a=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));return a===-1?-1:(this.index+=2,s<<4|a)}},{key:"scanUnicode",value:function(){if(this.source.charAt(this.index)==="{"){for(var s=this.index+1,a=0,c=void 0;s1114111)throw this.createILLEGAL();s++}if(c!=="}")throw this.createILLEGAL();if(s===this.index+1)throw++this.index,this.createILLEGAL();return this.index=s+1,a}if(this.index+4>this.source.length)return-1;var d=(0,_utils$1.getHexValue)(this.source.charAt(this.index));if(d===-1)return-1;var g=(0,_utils$1.getHexValue)(this.source.charAt(this.index+1));if(g===-1)return-1;var _=(0,_utils$1.getHexValue)(this.source.charAt(this.index+2));if(_===-1)return-1;var b=(0,_utils$1.getHexValue)(this.source.charAt(this.index+3));return b===-1?-1:(this.index+=4,d<<12|g<<8|_<<4|b)}},{key:"getEscapedIdentifier",value:function(){for(var s="",a=_utils$1.isIdentifierStart;this.index=this.source.length)throw this.createILLEGAL();if(this.source.charAt(this.index)!=="u")throw this.createILLEGAL();if(++this.index,h=this.scanUnicode(),h<0)throw this.createILLEGAL();c=fromCodePoint$1(h)}else if(h>=55296&&h<=56319){if(this.index>=this.source.length)throw this.createILLEGAL();var g=this.source.charCodeAt(this.index);if(++this.index,!(g>=56320&&g<=57343))throw this.createILLEGAL();h=decodeUtf16(h,g),c=fromCodePoint$1(h)}if(!a(h)){if(s.length<1)throw this.createILLEGAL();return this.index=d,s}a=_utils$1.isIdentifierPart,s+=c}return s}},{key:"getIdentifier",value:function(){for(var s=this.index,a=this.source.length,c=this.index,h=_utils$1.isIdentifierStart;c=55296&&g<=56319)return this.index=s,this.getEscapedIdentifier();if(!h(g))return this.index=c,this.source.slice(s,c);++c,h=_utils$1.isIdentifierPart}return this.index=c,this.source.slice(s,c)}},{key:"scanIdentifier",value:function(){var s=this.getLocation(),a=this.index,c=this.source.charAt(this.index)==="\\"?this.getEscapedIdentifier():this.getIdentifier(),h=this.getSlice(a,s);h.text=c;var d=this.index-a!==c.length,g=this.getKeyword(c);return d&&g!==TokenType.IDENTIFIER&&(g=TokenType.ESCAPED_KEYWORD),{type:g,value:c,slice:h,escaped:d}}},{key:"getLocation",value:function(){return{line:this.startLine+1,column:this.startIndex-this.startLineStart,offset:this.startIndex}}},{key:"getLastTokenEndLocation",value:function(){return{line:this.lastLine+1,column:this.lastIndex-this.lastLineStart,offset:this.lastIndex}}},{key:"getSlice",value:function(s,a){return{text:this.source.slice(s,this.index),start:s,startLocation:a,end:this.index}}},{key:"scanPunctuatorHelper",value:function(){var s=this.source.charAt(this.index);switch(s){case".":{var a=this.source.charAt(this.index+1);if(a!==".")return TokenType.PERIOD;var c=this.source.charAt(this.index+2);return c!=="."?TokenType.PERIOD:TokenType.ELLIPSIS}case"(":return TokenType.LPAREN;case")":case";":case",":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];case"{":return TokenType.LBRACE;case"}":case"[":case"]":case":":case"?":case"~":return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)];default:if(this.index+1":return TokenType.GTE;case"/":return TokenType.ASSIGN_DIV;case"%":return TokenType.ASSIGN_MOD;case"^":return TokenType.ASSIGN_BIT_XOR;case"&":return TokenType.ASSIGN_BIT_AND}}if(this.index+1"&&d===">")return this.index+3"&&d==="=")return TokenType.ASSIGN_SHR;if(s==="*"&&d==="=")return TokenType.ASSIGN_EXP}switch(s){case"*":return TokenType.EXP;case"+":return TokenType.INC;case"-":return TokenType.DEC;case"<":return TokenType.SHL;case">":return TokenType.SHR;case"&":return TokenType.AND;case"|":return TokenType.OR}}else if(s==="="&&h===">")return TokenType.ARROW}return ONE_CHAR_PUNCTUATOR[s.charCodeAt(0)]}},{key:"scanPunctuator",value:function(){var s=this.getLocation(),a=this.index,c=this.scanPunctuatorHelper();return this.index+=c.name.length,{type:c,value:c.name,slice:this.getSlice(a,s)}}},{key:"scanHexLiteral",value:function(s,a){for(var c=this.index;c="0"&&c<="7")this.index++;else{if((0,_utils$1.isIdentifierPart)(c.charCodeAt(0)))throw this.createILLEGAL();break}}if(this.index-s===2)throw this.createILLEGAL();return{type:TokenType.NUMBER,value:parseInt(this.getSlice(s,a).text.substr(2),8),slice:this.getSlice(s,a),octal:!1,noctal:!1}}},{key:"scanLegacyOctalLiteral",value:function(s,a){for(var c=!0;this.index="0"&&h<="7")this.index++;else if(h==="8"||h==="9")c=!1,this.index++;else{if((0,_utils$1.isIdentifierPart)(h.charCodeAt(0)))throw this.createILLEGAL();break}}var d=this.getSlice(s,a);return c?{type:TokenType.NUMBER,slice:d,value:parseInt(d.text.substr(1),8),octal:!0,noctal:!c}:(this.eatDecimalLiteralSuffix(),{type:TokenType.NUMBER,slice:d,value:+d.text,octal:!0,noctal:!c})}},{key:"scanNumericLiteral",value:function(){var s=this.source.charAt(this.index),a=this.getLocation(),c=this.index;if(s==="0")if(this.index++,this.index="0"&&s<="9")return this.scanLegacyOctalLiteral(c,a)}else{var h=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+h.text,slice:h,octal:!1,noctal:!1}}else if(s!==".")for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length){var d=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+d.text,slice:d,octal:!1,noctal:!1}}s=this.source.charAt(this.index)}if(this.eatDecimalLiteralSuffix(),this.index!==this.source.length&&(0,_utils$1.isIdentifierStart)(this.source.charCodeAt(this.index)))throw this.createILLEGAL();var g=this.getSlice(c,a);return{type:TokenType.NUMBER,value:+g.text,slice:g,octal:!1,noctal:!1}}},{key:"eatDecimalLiteralSuffix",value:function(){var s=this.source.charAt(this.index);if(s==="."){if(this.index++,this.index===this.source.length)return;for(s=this.source.charAt(this.index);s>="0"&&s<="9";){if(this.index++,this.index===this.source.length)return;s=this.source.charAt(this.index)}}if(s==="e"||s==="E"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();if(s=this.source.charAt(this.index),s==="+"||s==="-"){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();s=this.source.charAt(this.index)}if(s>="0"&&s<="9")for(;s>="0"&&s<="9"&&(this.index++,this.index!==this.source.length);)s=this.source.charAt(this.index);else throw this.createILLEGAL()}}},{key:"scanStringEscape",value:function(s,a){if(this.index++,this.index===this.source.length)throw this.createILLEGAL();var c=this.source.charAt(this.index);if((0,_utils$1.isLineTerminator)(c.charCodeAt(0)))this.index++,c==="\r"&&this.source.charAt(this.index)===` -`&&this.index++,this.lineStart=this.index,this.line++;else switch(c){case"n":s+=` -`,this.index++;break;case"r":s+="\r",this.index++;break;case"t":s+=" ",this.index++;break;case"u":case"x":{var h=void 0;if(this.index++,this.index>=this.source.length)throw this.createILLEGAL();if(h=c==="u"?this.scanUnicode():this.scanHexEscape2(),h<0)throw this.createILLEGAL();s+=fromCodePoint$1(h);break}case"b":s+="\b",this.index++;break;case"f":s+="\f",this.index++;break;case"v":s+="\v",this.index++;break;default:if(c>="0"&&c<="7"){var d=this.index,g=1;c>="0"&&c<="3"&&(g=0);for(var _=0;g<3&&c>="0"&&c<="7";){if(this.index++,(g>0||c!=="0")&&(a=this.source.slice(d,this.index)),_*=8,_+=c-"0",g++,this.index===this.source.length)throw this.createILLEGAL();c=this.source.charAt(this.index)}_===0&&g===1&&(c==="8"||c==="9")&&(a=this.source.slice(d,this.index+1)),s+=String.fromCharCode(_)}else{if(c==="8"||c==="9")throw this.createILLEGAL();s+=c,this.index++}}return[s,a]}},{key:"scanStringLiteral",value:function(){var s="",a=this.source.charAt(this.index),c=this.getLocation(),h=this.index;this.index++;for(var d=null;this.index=this.source.length)return{type:TokenType.EOS,slice:this.getSlice(this.index,s)};var a=this.source.charCodeAt(this.index);if(a<128){if(PUNCTUATOR_START[a])return this.scanPunctuator();if((0,_utils$1.isIdentifierStart)(a)||a===92)return this.scanIdentifier();if(a===46)return this.index+1=48&&a<=57)return this.scanNumericLiteral();throw this.createILLEGAL()}else{if((0,_utils$1.isIdentifierStart)(a)||a>=55296&&a<=56319)return this.scanIdentifier();throw this.createILLEGAL()}}},{key:"eof",value:function(){return this.lookahead.type===TokenType.EOS}},{key:"lex",value:function(){var s=this.lookahead;return this.lookahead=this.advance(),this.tokenIndex++,s}}],[{key:"cse2",value:function(s,a,c){return s.charAt(1)===a&&s.charAt(2)===c}},{key:"cse3",value:function(s,a,c,h){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===h}},{key:"cse4",value:function(s,a,c,h,d){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===h&&s.charAt(4)===d}},{key:"cse5",value:function(s,a,c,h,d,g){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===h&&s.charAt(4)===d&&s.charAt(5)===g}},{key:"cse6",value:function(s,a,c,h,d,g,_){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===h&&s.charAt(4)===d&&s.charAt(5)===g&&s.charAt(6)===_}},{key:"cse7",value:function(s,a,c,h,d,g,_,b){return s.charAt(1)===a&&s.charAt(2)===c&&s.charAt(3)===h&&s.charAt(4)===d&&s.charAt(5)===g&&s.charAt(6)===_&&s.charAt(7)===b}}]),o}();tokenizer.default=Tokenizer;var parser$1={},dist$6={},mappings=new Map([["General_Category",new Map([["C","Other"],["Cc","Control"],["cntrl","Control"],["Cf","Format"],["Cn","Unassigned"],["Co","Private_Use"],["Cs","Surrogate"],["L","Letter"],["LC","Cased_Letter"],["Ll","Lowercase_Letter"],["Lm","Modifier_Letter"],["Lo","Other_Letter"],["Lt","Titlecase_Letter"],["Lu","Uppercase_Letter"],["M","Mark"],["Combining_Mark","Mark"],["Mc","Spacing_Mark"],["Me","Enclosing_Mark"],["Mn","Nonspacing_Mark"],["N","Number"],["Nd","Decimal_Number"],["digit","Decimal_Number"],["Nl","Letter_Number"],["No","Other_Number"],["P","Punctuation"],["punct","Punctuation"],["Pc","Connector_Punctuation"],["Pd","Dash_Punctuation"],["Pe","Close_Punctuation"],["Pf","Final_Punctuation"],["Pi","Initial_Punctuation"],["Po","Other_Punctuation"],["Ps","Open_Punctuation"],["S","Symbol"],["Sc","Currency_Symbol"],["Sk","Modifier_Symbol"],["Sm","Math_Symbol"],["So","Other_Symbol"],["Z","Separator"],["Zl","Line_Separator"],["Zp","Paragraph_Separator"],["Zs","Space_Separator"],["Other","Other"],["Control","Control"],["Format","Format"],["Unassigned","Unassigned"],["Private_Use","Private_Use"],["Surrogate","Surrogate"],["Letter","Letter"],["Cased_Letter","Cased_Letter"],["Lowercase_Letter","Lowercase_Letter"],["Modifier_Letter","Modifier_Letter"],["Other_Letter","Other_Letter"],["Titlecase_Letter","Titlecase_Letter"],["Uppercase_Letter","Uppercase_Letter"],["Mark","Mark"],["Spacing_Mark","Spacing_Mark"],["Enclosing_Mark","Enclosing_Mark"],["Nonspacing_Mark","Nonspacing_Mark"],["Number","Number"],["Decimal_Number","Decimal_Number"],["Letter_Number","Letter_Number"],["Other_Number","Other_Number"],["Punctuation","Punctuation"],["Connector_Punctuation","Connector_Punctuation"],["Dash_Punctuation","Dash_Punctuation"],["Close_Punctuation","Close_Punctuation"],["Final_Punctuation","Final_Punctuation"],["Initial_Punctuation","Initial_Punctuation"],["Other_Punctuation","Other_Punctuation"],["Open_Punctuation","Open_Punctuation"],["Symbol","Symbol"],["Currency_Symbol","Currency_Symbol"],["Modifier_Symbol","Modifier_Symbol"],["Math_Symbol","Math_Symbol"],["Other_Symbol","Other_Symbol"],["Separator","Separator"],["Line_Separator","Line_Separator"],["Paragraph_Separator","Paragraph_Separator"],["Space_Separator","Space_Separator"]])],["Script",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])],["Script_Extensions",new Map([["Adlm","Adlam"],["Aghb","Caucasian_Albanian"],["Ahom","Ahom"],["Arab","Arabic"],["Armi","Imperial_Aramaic"],["Armn","Armenian"],["Avst","Avestan"],["Bali","Balinese"],["Bamu","Bamum"],["Bass","Bassa_Vah"],["Batk","Batak"],["Beng","Bengali"],["Bhks","Bhaiksuki"],["Bopo","Bopomofo"],["Brah","Brahmi"],["Brai","Braille"],["Bugi","Buginese"],["Buhd","Buhid"],["Cakm","Chakma"],["Cans","Canadian_Aboriginal"],["Cari","Carian"],["Cham","Cham"],["Cher","Cherokee"],["Copt","Coptic"],["Qaac","Coptic"],["Cprt","Cypriot"],["Cyrl","Cyrillic"],["Deva","Devanagari"],["Dogr","Dogra"],["Dsrt","Deseret"],["Dupl","Duployan"],["Egyp","Egyptian_Hieroglyphs"],["Elba","Elbasan"],["Ethi","Ethiopic"],["Geor","Georgian"],["Glag","Glagolitic"],["Gong","Gunjala_Gondi"],["Gonm","Masaram_Gondi"],["Goth","Gothic"],["Gran","Grantha"],["Grek","Greek"],["Gujr","Gujarati"],["Guru","Gurmukhi"],["Hang","Hangul"],["Hani","Han"],["Hano","Hanunoo"],["Hatr","Hatran"],["Hebr","Hebrew"],["Hira","Hiragana"],["Hluw","Anatolian_Hieroglyphs"],["Hmng","Pahawh_Hmong"],["Hrkt","Katakana_Or_Hiragana"],["Hung","Old_Hungarian"],["Ital","Old_Italic"],["Java","Javanese"],["Kali","Kayah_Li"],["Kana","Katakana"],["Khar","Kharoshthi"],["Khmr","Khmer"],["Khoj","Khojki"],["Knda","Kannada"],["Kthi","Kaithi"],["Lana","Tai_Tham"],["Laoo","Lao"],["Latn","Latin"],["Lepc","Lepcha"],["Limb","Limbu"],["Lina","Linear_A"],["Linb","Linear_B"],["Lisu","Lisu"],["Lyci","Lycian"],["Lydi","Lydian"],["Mahj","Mahajani"],["Maka","Makasar"],["Mand","Mandaic"],["Mani","Manichaean"],["Marc","Marchen"],["Medf","Medefaidrin"],["Mend","Mende_Kikakui"],["Merc","Meroitic_Cursive"],["Mero","Meroitic_Hieroglyphs"],["Mlym","Malayalam"],["Modi","Modi"],["Mong","Mongolian"],["Mroo","Mro"],["Mtei","Meetei_Mayek"],["Mult","Multani"],["Mymr","Myanmar"],["Narb","Old_North_Arabian"],["Nbat","Nabataean"],["Newa","Newa"],["Nkoo","Nko"],["Nshu","Nushu"],["Ogam","Ogham"],["Olck","Ol_Chiki"],["Orkh","Old_Turkic"],["Orya","Oriya"],["Osge","Osage"],["Osma","Osmanya"],["Palm","Palmyrene"],["Pauc","Pau_Cin_Hau"],["Perm","Old_Permic"],["Phag","Phags_Pa"],["Phli","Inscriptional_Pahlavi"],["Phlp","Psalter_Pahlavi"],["Phnx","Phoenician"],["Plrd","Miao"],["Prti","Inscriptional_Parthian"],["Rjng","Rejang"],["Rohg","Hanifi_Rohingya"],["Runr","Runic"],["Samr","Samaritan"],["Sarb","Old_South_Arabian"],["Saur","Saurashtra"],["Sgnw","SignWriting"],["Shaw","Shavian"],["Shrd","Sharada"],["Sidd","Siddham"],["Sind","Khudawadi"],["Sinh","Sinhala"],["Sogd","Sogdian"],["Sogo","Old_Sogdian"],["Sora","Sora_Sompeng"],["Soyo","Soyombo"],["Sund","Sundanese"],["Sylo","Syloti_Nagri"],["Syrc","Syriac"],["Tagb","Tagbanwa"],["Takr","Takri"],["Tale","Tai_Le"],["Talu","New_Tai_Lue"],["Taml","Tamil"],["Tang","Tangut"],["Tavt","Tai_Viet"],["Telu","Telugu"],["Tfng","Tifinagh"],["Tglg","Tagalog"],["Thaa","Thaana"],["Thai","Thai"],["Tibt","Tibetan"],["Tirh","Tirhuta"],["Ugar","Ugaritic"],["Vaii","Vai"],["Wara","Warang_Citi"],["Xpeo","Old_Persian"],["Xsux","Cuneiform"],["Yiii","Yi"],["Zanb","Zanabazar_Square"],["Zinh","Inherited"],["Qaai","Inherited"],["Zyyy","Common"],["Zzzz","Unknown"],["Adlam","Adlam"],["Caucasian_Albanian","Caucasian_Albanian"],["Arabic","Arabic"],["Imperial_Aramaic","Imperial_Aramaic"],["Armenian","Armenian"],["Avestan","Avestan"],["Balinese","Balinese"],["Bamum","Bamum"],["Bassa_Vah","Bassa_Vah"],["Batak","Batak"],["Bengali","Bengali"],["Bhaiksuki","Bhaiksuki"],["Bopomofo","Bopomofo"],["Brahmi","Brahmi"],["Braille","Braille"],["Buginese","Buginese"],["Buhid","Buhid"],["Chakma","Chakma"],["Canadian_Aboriginal","Canadian_Aboriginal"],["Carian","Carian"],["Cherokee","Cherokee"],["Coptic","Coptic"],["Cypriot","Cypriot"],["Cyrillic","Cyrillic"],["Devanagari","Devanagari"],["Dogra","Dogra"],["Deseret","Deseret"],["Duployan","Duployan"],["Egyptian_Hieroglyphs","Egyptian_Hieroglyphs"],["Elbasan","Elbasan"],["Ethiopic","Ethiopic"],["Georgian","Georgian"],["Glagolitic","Glagolitic"],["Gunjala_Gondi","Gunjala_Gondi"],["Masaram_Gondi","Masaram_Gondi"],["Gothic","Gothic"],["Grantha","Grantha"],["Greek","Greek"],["Gujarati","Gujarati"],["Gurmukhi","Gurmukhi"],["Hangul","Hangul"],["Han","Han"],["Hanunoo","Hanunoo"],["Hatran","Hatran"],["Hebrew","Hebrew"],["Hiragana","Hiragana"],["Anatolian_Hieroglyphs","Anatolian_Hieroglyphs"],["Pahawh_Hmong","Pahawh_Hmong"],["Katakana_Or_Hiragana","Katakana_Or_Hiragana"],["Old_Hungarian","Old_Hungarian"],["Old_Italic","Old_Italic"],["Javanese","Javanese"],["Kayah_Li","Kayah_Li"],["Katakana","Katakana"],["Kharoshthi","Kharoshthi"],["Khmer","Khmer"],["Khojki","Khojki"],["Kannada","Kannada"],["Kaithi","Kaithi"],["Tai_Tham","Tai_Tham"],["Lao","Lao"],["Latin","Latin"],["Lepcha","Lepcha"],["Limbu","Limbu"],["Linear_A","Linear_A"],["Linear_B","Linear_B"],["Lycian","Lycian"],["Lydian","Lydian"],["Mahajani","Mahajani"],["Makasar","Makasar"],["Mandaic","Mandaic"],["Manichaean","Manichaean"],["Marchen","Marchen"],["Medefaidrin","Medefaidrin"],["Mende_Kikakui","Mende_Kikakui"],["Meroitic_Cursive","Meroitic_Cursive"],["Meroitic_Hieroglyphs","Meroitic_Hieroglyphs"],["Malayalam","Malayalam"],["Mongolian","Mongolian"],["Mro","Mro"],["Meetei_Mayek","Meetei_Mayek"],["Multani","Multani"],["Myanmar","Myanmar"],["Old_North_Arabian","Old_North_Arabian"],["Nabataean","Nabataean"],["Nko","Nko"],["Nushu","Nushu"],["Ogham","Ogham"],["Ol_Chiki","Ol_Chiki"],["Old_Turkic","Old_Turkic"],["Oriya","Oriya"],["Osage","Osage"],["Osmanya","Osmanya"],["Palmyrene","Palmyrene"],["Pau_Cin_Hau","Pau_Cin_Hau"],["Old_Permic","Old_Permic"],["Phags_Pa","Phags_Pa"],["Inscriptional_Pahlavi","Inscriptional_Pahlavi"],["Psalter_Pahlavi","Psalter_Pahlavi"],["Phoenician","Phoenician"],["Miao","Miao"],["Inscriptional_Parthian","Inscriptional_Parthian"],["Rejang","Rejang"],["Hanifi_Rohingya","Hanifi_Rohingya"],["Runic","Runic"],["Samaritan","Samaritan"],["Old_South_Arabian","Old_South_Arabian"],["Saurashtra","Saurashtra"],["SignWriting","SignWriting"],["Shavian","Shavian"],["Sharada","Sharada"],["Siddham","Siddham"],["Khudawadi","Khudawadi"],["Sinhala","Sinhala"],["Sogdian","Sogdian"],["Old_Sogdian","Old_Sogdian"],["Sora_Sompeng","Sora_Sompeng"],["Soyombo","Soyombo"],["Sundanese","Sundanese"],["Syloti_Nagri","Syloti_Nagri"],["Syriac","Syriac"],["Tagbanwa","Tagbanwa"],["Takri","Takri"],["Tai_Le","Tai_Le"],["New_Tai_Lue","New_Tai_Lue"],["Tamil","Tamil"],["Tangut","Tangut"],["Tai_Viet","Tai_Viet"],["Telugu","Telugu"],["Tifinagh","Tifinagh"],["Tagalog","Tagalog"],["Thaana","Thaana"],["Tibetan","Tibetan"],["Tirhuta","Tirhuta"],["Ugaritic","Ugaritic"],["Vai","Vai"],["Warang_Citi","Warang_Citi"],["Old_Persian","Old_Persian"],["Cuneiform","Cuneiform"],["Yi","Yi"],["Zanabazar_Square","Zanabazar_Square"],["Inherited","Inherited"],["Common","Common"],["Unknown","Unknown"]])]]);const propertyToValueAliases=mappings,matchPropertyValue=function(o,e){const s=propertyToValueAliases.get(o);if(!s)throw new Error(`Unknown property \`${o}\`.`);const a=s.get(e);if(a)return a;throw new Error(`Unknown value \`${e}\` for property \`${o}\`.`)};var unicodeMatchPropertyValueEcmascript=matchPropertyValue,unicodeCanonicalPropertyNamesEcmascript=new Set(["General_Category","Script","Script_Extensions","Alphabetic","Any","ASCII","ASCII_Hex_Digit","Assigned","Bidi_Control","Bidi_Mirrored","Case_Ignorable","Cased","Changes_When_Casefolded","Changes_When_Casemapped","Changes_When_Lowercased","Changes_When_NFKC_Casefolded","Changes_When_Titlecased","Changes_When_Uppercased","Dash","Default_Ignorable_Code_Point","Deprecated","Diacritic","Emoji","Emoji_Component","Emoji_Modifier","Emoji_Modifier_Base","Emoji_Presentation","Extended_Pictographic","Extender","Grapheme_Base","Grapheme_Extend","Hex_Digit","ID_Continue","ID_Start","Ideographic","IDS_Binary_Operator","IDS_Trinary_Operator","Join_Control","Logical_Order_Exception","Lowercase","Math","Noncharacter_Code_Point","Pattern_Syntax","Pattern_White_Space","Quotation_Mark","Radical","Regional_Indicator","Sentence_Terminal","Soft_Dotted","Terminal_Punctuation","Unified_Ideograph","Uppercase","Variation_Selector","White_Space","XID_Continue","XID_Start"]),unicodePropertyAliasesEcmascript=new Map([["scx","Script_Extensions"],["sc","Script"],["gc","General_Category"],["AHex","ASCII_Hex_Digit"],["Alpha","Alphabetic"],["Bidi_C","Bidi_Control"],["Bidi_M","Bidi_Mirrored"],["Cased","Cased"],["CI","Case_Ignorable"],["CWCF","Changes_When_Casefolded"],["CWCM","Changes_When_Casemapped"],["CWKCF","Changes_When_NFKC_Casefolded"],["CWL","Changes_When_Lowercased"],["CWT","Changes_When_Titlecased"],["CWU","Changes_When_Uppercased"],["Dash","Dash"],["Dep","Deprecated"],["DI","Default_Ignorable_Code_Point"],["Dia","Diacritic"],["Ext","Extender"],["Gr_Base","Grapheme_Base"],["Gr_Ext","Grapheme_Extend"],["Hex","Hex_Digit"],["IDC","ID_Continue"],["Ideo","Ideographic"],["IDS","ID_Start"],["IDSB","IDS_Binary_Operator"],["IDST","IDS_Trinary_Operator"],["Join_C","Join_Control"],["LOE","Logical_Order_Exception"],["Lower","Lowercase"],["Math","Math"],["NChar","Noncharacter_Code_Point"],["Pat_Syn","Pattern_Syntax"],["Pat_WS","Pattern_White_Space"],["QMark","Quotation_Mark"],["Radical","Radical"],["RI","Regional_Indicator"],["SD","Soft_Dotted"],["STerm","Sentence_Terminal"],["Term","Terminal_Punctuation"],["UIdeo","Unified_Ideograph"],["Upper","Uppercase"],["VS","Variation_Selector"],["WSpace","White_Space"],["space","White_Space"],["XIDC","XID_Continue"],["XIDS","XID_Start"]]);const canonicalProperties=unicodeCanonicalPropertyNamesEcmascript,propertyAliases=unicodePropertyAliasesEcmascript,matchProperty=function(o){if(canonicalProperties.has(o))return o;if(propertyAliases.has(o))return propertyAliases.get(o);throw new Error(`Unknown property: ${o}`)};var unicodeMatchPropertyEcmascript=matchProperty,unicode$1={};Object.defineProperty(unicode$1,"__esModule",{value:!0});unicode$1.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode$1.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode$1.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode$1.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode$1.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode$1.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(dist$6,"__esModule",{value:!0});var _createClass$d=function(){function o(e,s){for(var a=0;a=this.pattern.length}},{key:"backreference",value:function(s){s>this.largestBackreference&&(this.largestBackreference=s)}},{key:"nextCodePoint",value:function(){return this.empty()?null:this.unicode?String.fromCodePoint(this.pattern.codePointAt(this.index)):this.pattern.charAt(this.index)}},{key:"skipCodePoint",value:function(){this.index+=this.nextCodePoint().length}},{key:"eat",value:function(s){return this.index+s.length>this.pattern.length||this.pattern.slice(this.index,this.index+s.length)!==s?!1:(this.index+=s.length,!0)}},{key:"eatIdentifierCodePoint",value:function(){var s=void 0,a=this.index,c=void 0;if(this.match("\\u")){if(this.skipCodePoint(),s=acceptUnicodeEscape(this),!s.matched)return this.index=a,null;s=s.value,c=String.fromCodePoint(s)}else{if(c=this.nextCodePoint(),c==null)return this.index=a,null;this.index+=c.length,s=c.codePointAt(0)}return{character:c,characterValue:s}}},{key:"eatIdentifierStart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="_"||a.character==="$"||isIdentifierStart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatIdentifierPart",value:function(){var s=this.index,a=this.eatIdentifierCodePoint();return a===null?(this.index=s,null):a.character==="\u200C"||a.character==="\u200D"||a.character==="$"||isIdentifierPart(a.characterValue)?a.character:(this.index=s,null)}},{key:"eatAny",value:function(){for(var s=arguments.length,a=Array(s),c=0;c1&&arguments[1]!==void 0?arguments[1]:{},s=e.unicode,a=s===void 0?!1:s,c=new PatternAcceptorState(o,a),h=acceptDisjunction(c);if(h.matched){if(c.unicode&&c.largestBackreference>c.capturingGroups)return!1;if(c.groupingNames.length>0||c.unicode){var d=!0,g=!1,_=void 0;try{for(var b=c.backreferenceNames[Symbol.iterator](),$;!(d=($=b.next()).done);d=!0){var j=$.value;if(c.groupingNames.indexOf(j)===-1)return!1}}catch(_e){g=!0,_=_e}finally{try{!d&&b.return&&b.return()}finally{if(g)throw _}}}}return h.matched};var backtrackOnFailure=function(e){return function(s){var a=s.index,c=s.largestBackreference,h=s.capturingGroups,d=e(s);return d.matched||(s.index=a,s.largestBackreference=c,s.capturingGroups=h),d}},acceptUnicodeEscape=backtrackOnFailure(function(o){if(!o.eat("u"))return{matched:!1};if(o.unicode&&o.eat("{")){for(var e=[];!o.eat("}");){var s=o.eatAny.apply(o,_toConsumableArray$6(hexDigits));if(s===null)return{matched:!1};e.push(s)}var a=parseInt(e.join(""),16);return a>1114111?{matched:!1}:{matched:!0,value:a}}var c=[0,0,0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});if(c.some(function(g){return g===null}))return{matched:!1};var h=parseInt(c.join(""),16);if(o.unicode&&h>=55296&&h<=56319){var d=backtrackOnFailure(function(g){if(!g.eat("\\u"))return{matched:!1};var _=[0,0,0,0].map(function(){return g.eatAny.apply(g,_toConsumableArray$6(hexDigits))});if(_.some(function($){return $===null}))return{matched:!1};var b=parseInt(_.join(""),16);return b<56320||b>=57344?{matched:!1}:{matched:!0,value:65536+((h&1023)<<10)+(b&1023)}})(o);if(d.matched)return d}return{matched:!0,value:h}}),acceptDisjunction=function(e,s){do{if(s!==void 0&&e.eat(s))return{matched:!0};if(e.match("|"))continue;if(!acceptAlternative(e,s).matched)return{matched:!1}}while(e.eat("|"));return{matched:s===void 0||!!e.eat(s)}},acceptAlternative=function(e,s){for(;!e.match("|")&&!e.empty()&&(s===void 0||!e.match(s));)if(!acceptTerm(e).matched)return{matched:!1};return{matched:!0}},anyOf=function(){for(var e=arguments.length,s=Array(e),a=0;aparseInt(d))return{matched:!1}}return c.eat("}")?(c.eat("?"),{matched:!0}):{matched:!1}})(s);return a.matched?a:{matched:!s.unicode}}else s.eatAny("*","+","?")&&s.eat("?");return{matched:!0}})},acceptCharacterExcept=function(e){return function(s){var a=s.nextCodePoint();return a===null||e.indexOf(a)!==-1?{matched:!1}:(s.skipCodePoint(),{matched:!0})}},acceptPatternCharacter=acceptCharacterExcept(syntaxCharacters),acceptExtendedPatternCharacter=acceptCharacterExcept(extendedSyntaxCharacters),acceptInvalidBracedQuantifier=function(e){return backtrackOnFailure(function(s){return{matched:!!(s.eat("{")&&acceptDecimal(s).matched&&(!s.eat(",")||s.match("}")||acceptDecimal(s).matched)&&s.eat("}"))}})(e)},acceptAtom=function(e){if(e.unicode)return anyOf(acceptPatternCharacter,function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);var s=anyOf(function(a){return{matched:!!a.eat(".")}},backtrackOnFailure(function(a){return a.eat("\\")?acceptAtomEscape(a):{matched:!1}}),backtrackOnFailure(function(a){return{matched:a.eat("\\")&&a.match("c")}}),acceptCharacterClass,acceptLabeledGroup(function(a){return a.eat("?:")}),acceptGrouping)(e);return!s.matched&&acceptInvalidBracedQuantifier(e).matched?{matched:!1}:s.matched?s:acceptExtendedPatternCharacter(e)},acceptGrouping=backtrackOnFailure(function(o){if(!o.eat("("))return{matched:!1};var e=backtrackOnFailure(function(s){return o.eat("?")?acceptGroupName(s):{matched:!1}})(o);if(!acceptDisjunction(o,")").matched)return{matched:!1};if(e.matched){if(o.groupingNames.indexOf(e.data)!==-1)return{matched:!1};o.groupingNames.push(e.data)}return o.capturingGroups++,{matched:!0}}),acceptDecimalEscape=backtrackOnFailure(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(decimalDigits));return e===null?{matched:!1}:e==="0"?{matched:!0}:(o.backreference(parseInt(e+(o.eatNaturalNumber()||""))),{matched:!0})}),acceptCharacterClassEscape=function(e){return e.eatAny("d","D","s","S","w","W")?{matched:!0}:e.unicode?backtrackOnFailure(function(s){return!s.eat("p{")&&!s.eat("P{")?{matched:!1}:acceptUnicodePropertyValueExpression(s).matched?{matched:!!s.eat("}")}:{matched:!1}})(e):{matched:!1}},acceptUnicodePropertyName=function(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},acceptUnicodePropertyValue=function(e){for(var s=[],a=void 0;a=e.eatAny.apply(e,_toConsumableArray$6(controlCharacters).concat(_toConsumableArray$6(decimalDigits),["_"]));)s.push(a);return{matched:s.length>0,data:s.join("")}},illegalLoneUnicodePropertyNames=["General_Category","Script","Script_Extensions","scx","sc","gc"],generalCategoryValues=_mappings2.default.get("General_Category"),acceptLoneUnicodePropertyNameOrValue=function(e){var s=acceptUnicodePropertyValue(e);return!s.matched||illegalLoneUnicodePropertyNames.includes(s.data)?{matched:!1}:{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyEcmascript2.default)(s.data)})||generalCategoryValues.get(s.data)!=null}},acceptUnicodePropertyValueExpression=function(e){return anyOf(backtrackOnFailure(function(s){var a=acceptUnicodePropertyName(s);if(!a.matched||!s.eat("="))return{matched:!1};var c=acceptUnicodePropertyValue(s);return c.matched?{matched:catchIsFalse(function(){return(0,_unicodeMatchPropertyValueEcmascript2.default)(_unicodePropertyAliasesEcmascript2.default.get(a.data)||a.data,c.data)})}:{matched:!1}}),backtrackOnFailure(acceptLoneUnicodePropertyNameOrValue))(e)},acceptCharacterEscape=anyOf(function(o){var e=o.eatAny.apply(o,_toConsumableArray$6(controlEscapeCharacters));return e===null?{matched:!1}:{matched:!0,value:controlEscapeCharacterValues[e]}},backtrackOnFailure(function(o){if(!o.eat("c"))return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(controlCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)%32}}),backtrackOnFailure(function(o){return!o.eat("0")||o.eatAny.apply(o,_toConsumableArray$6(decimalDigits))?{matched:!1}:{matched:!0,value:0}}),backtrackOnFailure(function(o){if(!o.eat("x"))return{matched:!1};var e=[0,0].map(function(){return o.eatAny.apply(o,_toConsumableArray$6(hexDigits))});return e.some(function(s){return s===null})?{matched:!1}:{matched:!0,value:parseInt(e.join(""),16)}}),acceptUnicodeEscape,backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(octalDigits));if(e===null)return{matched:!1};var s=parseInt(e,8);if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s};var a=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),c=parseInt(a,8);if(s<4){if(octalDigits.indexOf(o.nextCodePoint())===-1)return{matched:!0,value:s<<3|c};var h=o.eatAny.apply(o,_toConsumableArray$6(octalDigits)),d=parseInt(h,8);return{matched:!0,value:s<<6|c<<3|d}}return{matched:!0,value:s<<3|c}}),backtrackOnFailure(function(o){if(!o.unicode)return{matched:!1};var e=o.eatAny.apply(o,_toConsumableArray$6(syntaxCharacters));return e===null?{matched:!1}:{matched:!0,value:e.charCodeAt(0)}}),function(o){return!o.unicode||!o.eat("/")?{matched:!1}:{matched:!0,value:"/".charCodeAt(0)}},backtrackOnFailure(function(o){if(o.unicode)return{matched:!1};var e=o.nextCodePoint();return e!==null&&e!=="c"&&e!=="k"?(o.skipCodePoint(),{matched:!0,value:e.codePointAt(0)}):{matched:!1}})),acceptGroupNameBackreference=backtrackOnFailure(function(o){if(!o.eat("k"))return{matched:!1};var e=acceptGroupName(o);return e.matched?(o.backreferenceNames.push(e.data),{matched:!0}):(o.backreferenceNames.push(INVALID_NAMED_BACKREFERENCE_SENTINEL),{matched:!0})}),acceptGroupName=backtrackOnFailure(function(o){if(!o.eat("<"))return{matched:!1};var e=[],s=o.eatIdentifierStart();if(!s)return{matched:!1};e.push(s);for(var a=void 0;a=o.eatIdentifierPart();)e.push(a);return o.eat(">")?{matched:e.length>0,data:e.join("")}:{matched:!1}}),acceptAtomEscape=anyOf(acceptDecimalEscape,acceptCharacterClassEscape,acceptCharacterEscape,acceptGroupNameBackreference),acceptCharacterClass=backtrackOnFailure(function(o){if(!o.eat("["))return{matched:!1};o.eat("^");var e=anyOf(function(_){return{matched:!!_.eat("b"),value:8}},function(_){return{matched:_.unicode&&!!_.eat("-"),value:"-".charCodeAt(0)}},backtrackOnFailure(function(_){if(_.unicode||!_.eat("c"))return{matched:!1};var b=_.eatAny.apply(_,_toConsumableArray$6(decimalDigits).concat(["_"]));return b===null?{matched:!1}:{matched:!0,value:b.charCodeAt(0)%32}}),acceptCharacterClassEscape,acceptCharacterEscape,function(_){return{matched:!_.unicode&&!!_.eat("k"),value:107}}),s=function(b){var $=b.nextCodePoint();if($==="]"||$==="-"||$===null)return{matched:!1};if($!=="\\")return b.skipCodePoint(),{matched:!0,value:$.codePointAt(0)};b.eat("\\");var j=e(b);return!j.matched&&b.nextCodePoint()==="c"&&!b.unicode?{matched:!0,value:"\\".charCodeAt(0)}:j},a=function(b){return b.eat("-")?{matched:!0,value:"-".charCodeAt(0)}:s(b)},c=function(b,$){var j=function(tt){return tt.value===void 0&&tt.matched};if(b.eat("-")){if(b.match("]"))return{matched:!0};var _e=a(b);return _e.matched?b.unicode&&(j($)||j(_e))?{matched:!1}:!(!b.unicode&&(j($)||j(_e)))&&$.value>_e.value?{matched:!1}:b.match("]")?{matched:!0}:h(b):{matched:!1}}return b.match("]")?{matched:!0}:d(b)},h=function(b){var $=a(b);return $.matched?c(b,$):{matched:!1}},d=function(b){var $=s(b);return $.matched?c(b,$):{matched:!1}};if(o.eat("]"))return{matched:!0};var g=h(o);return g.matched&&o.eat("]"),g}),dist$5={};Object.defineProperty(dist$5,"__esModule",{value:!0});function _classCallCheck$g(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$5.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$5.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$g(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};dist$5.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$g(this,o),this.type="ArrayExpression",this.elements=s};dist$5.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$g(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$5.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$g(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$5.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$5.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$5.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$5.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$5.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="AwaitExpression",this.expression=s};dist$5.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$g(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$5.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="BindingIdentifier",this.name=s};dist$5.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$5.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$5.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$5.Block=function o(e){var s=e.statements;_classCallCheck$g(this,o),this.type="Block",this.statements=s};dist$5.BlockStatement=function o(e){var s=e.block;_classCallCheck$g(this,o),this.type="BlockStatement",this.block=s};dist$5.BreakStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="BreakStatement",this.label=s};dist$5.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$5.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$g(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$5.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$5.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$g(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$5.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$g(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$5.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$g(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$5.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$5.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$g(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$5.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ComputedPropertyName",this.expression=s};dist$5.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$5.ContinueStatement=function o(e){var s=e.label;_classCallCheck$g(this,o),this.type="ContinueStatement",this.label=s};dist$5.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$g(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$5.DebuggerStatement=function o(){_classCallCheck$g(this,o),this.type="DebuggerStatement"};dist$5.Directive=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="Directive",this.rawValue=s};dist$5.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$g(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$5.EmptyStatement=function o(){_classCallCheck$g(this,o),this.type="EmptyStatement"};dist$5.Export=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="Export",this.declaration=s};dist$5.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$5.ExportDefault=function o(e){var s=e.body;_classCallCheck$g(this,o),this.type="ExportDefault",this.body=s};dist$5.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$5.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$g(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$5.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$g(this,o),this.type="ExportLocals",this.namedExports=s};dist$5.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ExpressionStatement",this.expression=s};dist$5.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$5.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$5.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$g(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$5.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,h=e.body;_classCallCheck$g(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=h};dist$5.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$g(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$5.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$5.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,h=e.params,d=e.body;_classCallCheck$g(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=h,this.body=d};dist$5.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,h=e.params,d=e.body;_classCallCheck$g(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=h,this.body=d};dist$5.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$g(this,o),this.type="Getter",this.name=s,this.body=a};dist$5.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="IdentifierExpression",this.name=s};dist$5.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$g(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$5.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$5.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$g(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$5.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$g(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$5.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$g(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$5.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$5.LiteralInfinityExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralInfinityExpression"};dist$5.LiteralNullExpression=function o(){_classCallCheck$g(this,o),this.type="LiteralNullExpression"};dist$5.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralNumericExpression",this.value=s};dist$5.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,h=e.multiLine,d=e.dotAll,g=e.unicode,_=e.sticky;_classCallCheck$g(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=h,this.dotAll=d,this.unicode=g,this.sticky=_};dist$5.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="LiteralStringExpression",this.value=s};dist$5.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,h=e.params,d=e.body;_classCallCheck$g(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=h,this.body=d};dist$5.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$g(this,o),this.type="Module",this.directives=s,this.items=a};dist$5.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$g(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$5.NewTargetExpression=function o(){_classCallCheck$g(this,o),this.type="NewTargetExpression"};dist$5.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$5.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$g(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$5.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$g(this,o),this.type="ObjectExpression",this.properties=s};dist$5.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ReturnStatement",this.expression=s};dist$5.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$g(this,o),this.type="Script",this.directives=s,this.statements=a};dist$5.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$g(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$5.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$g(this,o),this.type="ShorthandProperty",this.name=s};dist$5.SpreadElement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadElement",this.expression=s};dist$5.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="SpreadProperty",this.expression=s};dist$5.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};dist$5.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$g(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$5.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$g(this,o),this.type="StaticPropertyName",this.value=s};dist$5.Super=function o(){_classCallCheck$g(this,o),this.type="Super"};dist$5.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$g(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$5.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$g(this,o),this.type="SwitchDefault",this.consequent=s};dist$5.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$g(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$5.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,h=e.postDefaultCases;_classCallCheck$g(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=h};dist$5.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$g(this,o),this.type="TemplateElement",this.rawValue=s};dist$5.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$g(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$5.ThisExpression=function o(){_classCallCheck$g(this,o),this.type="ThisExpression"};dist$5.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="ThrowStatement",this.expression=s};dist$5.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$g(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$5.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$g(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$5.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$g(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$5.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$g(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$5.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$g(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$5.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$g(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$5.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$g(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$5.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$g(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$5.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$g(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$5.YieldExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldExpression",this.expression=s};dist$5.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$g(this,o),this.type="YieldGeneratorExpression",this.expression=s};Object.defineProperty(parser$1,"__esModule",{value:!0});parser$1.GenericParser=void 0;var _createClass$c=function(){function o(e,s){for(var a=0;a":Precedence$1.Relational,"<=":Precedence$1.Relational,">=":Precedence$1.Relational,in:Precedence$1.Relational,instanceof:Precedence$1.Relational,"<<":Precedence$1.BitwiseSHIFT,">>":Precedence$1.BitwiseSHIFT,">>>":Precedence$1.BitwiseSHIFT,"+":Precedence$1.Additive,"-":Precedence$1.Additive,"*":Precedence$1.Multiplicative,"%":Precedence$1.Multiplicative,"/":Precedence$1.Multiplicative};function isValidSimpleAssignmentTarget(o){if(o==null)return!1;switch(o.type){case"IdentifierExpression":case"ComputedMemberExpression":case"StaticMemberExpression":return!0}return!1}function isPrefixOperator(o){switch(o.type){case _tokenizer.TokenType.INC:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TYPEOF:return!0}return!1}function isUpdateOperator(o){return o.type===_tokenizer.TokenType.INC||o.type===_tokenizer.TokenType.DEC}parser$1.GenericParser=function(o){_inherits$7(e,o);function e(s){_classCallCheck$f(this,e);var a=_possibleConstructorReturn$7(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,s));return a.allowIn=!0,a.inFunctionBody=!1,a.inParameter=!1,a.allowYieldExpression=!1,a.allowAwaitExpression=!1,a.firstAwaitLocation=null,a.module=!1,a.moduleIsTheGoalSymbol=!1,a.strict=!1,a.isBindingElement=!0,a.isAssignmentTarget=!0,a.firstExprError=null,a}return _createClass$c(e,[{key:"match",value:function(a){return this.lookahead.type===a}},{key:"matchIdentifier",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IDENTIFIER:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.YIELD:case _tokenizer.TokenType.ASYNC:return!0;case _tokenizer.TokenType.AWAIT:return this.moduleIsTheGoalSymbol?!1:(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0);case _tokenizer.TokenType.ESCAPED_KEYWORD:return this.lookahead.value==="await"&&!this.moduleIsTheGoalSymbol?(this.firstAwaitLocation===null&&(this.firstAwaitLocation=this.getLocation()),!0):this.lookahead.value==="let"||this.lookahead.value==="yield"||this.lookahead.value==="async"}return!1}},{key:"eat",value:function(a){return this.lookahead.type===a?this.lex():null}},{key:"expect",value:function(a){if(this.lookahead.type===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"matchContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a}},{key:"expectContextualKeyword",value:function(a){if(this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a)return this.lex();throw this.createUnexpected(this.lookahead)}},{key:"eatContextualKeyword",value:function(a){return this.lookahead.type===_tokenizer.TokenType.IDENTIFIER&&!this.lookahead.escaped&&this.lookahead.value===a?this.lex():null}},{key:"consumeSemicolon",value:function(){if(!this.eat(_tokenizer.TokenType.SEMICOLON)&&!this.hasLineTerminatorBeforeNext&&!this.eof()&&!this.match(_tokenizer.TokenType.RBRACE))throw this.createUnexpected(this.lookahead)}},{key:"startNode",value:function(a){return a}},{key:"copyNode",value:function(a,c){return c}},{key:"finishNode",value:function(a){return a}},{key:"parseModule",value:function(){this.moduleIsTheGoalSymbol=this.module=this.strict=!0,this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),h=c.directives,d=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Module({directives:h,items:d}),a)}},{key:"parseScript",value:function(){this.lookahead=this.advance();var a=this.startNode(),c=this.parseBody(),h=c.directives,d=c.statements;if(!this.match(_tokenizer.TokenType.EOS))throw this.createUnexpected(this.lookahead);return this.finishNode(new AST.Script({directives:h,statements:d}),a)}},{key:"parseFunctionBody",value:function(){var a=this.inFunctionBody,c=this.module,h=this.strict;this.inFunctionBody=!0,this.module=!1;var d=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);var g=new AST.FunctionBody(this.parseBody());return this.expect(_tokenizer.TokenType.RBRACE),g=this.finishNode(g,d),this.inFunctionBody=a,this.module=c,this.strict=h,g}},{key:"parseBody",value:function(){for(var a=[],c=[],h=!0,d=null;!(this.eof()||this.match(_tokenizer.TokenType.RBRACE));){var g=this.lookahead,_=g.slice.text,b=g.type===_tokenizer.TokenType.STRING,$=this.module,j=this.getLocation(),_e=this.startNode(),et=$?this.parseModuleItem():this.parseStatementListItem();if(h)if(b&&et.type==="ExpressionStatement"&&et.expression.type==="LiteralStringExpression"){!d&&g.octal&&(d=this.createErrorWithLocation(j,"Unexpected legacy octal escape sequence: \\"+g.octal));var tt=_.slice(1,-1);tt==="use strict"&&(this.strict=!0),a.push(this.finishNode(new AST.Directive({rawValue:tt}),_e))}else{if(h=!1,d&&this.strict)throw d;c.push(et)}else c.push(et)}if(d&&this.strict)throw d;return{directives:a,statements:c}}},{key:"parseImportSpecifier",value:function(){var a=this.startNode(),c=void 0;if(this.matchIdentifier()){if(c=this.parseIdentifier(),!this.eatContextualKeyword("as"))return this.finishNode(new AST.ImportSpecifier({name:null,binding:this.finishNode(new AST.BindingIdentifier({name:c}),a)}),a)}else this.lookahead.type.klass.isIdentifierName&&(c=this.parseIdentifierName(),this.expectContextualKeyword("as"));return this.finishNode(new AST.ImportSpecifier({name:c,binding:this.parseBindingIdentifier()}),a)}},{key:"parseNameSpaceBinding",value:function(){return this.expect(_tokenizer.TokenType.MUL),this.expectContextualKeyword("as"),this.parseBindingIdentifier()}},{key:"parseNamedImports",value:function(){var a=[];for(this.expect(_tokenizer.TokenType.LBRACE);!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseImportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseFromClause",value:function(){this.expectContextualKeyword("from");var a=this.expect(_tokenizer.TokenType.STRING).str;return a}},{key:"parseImportDeclaration",value:function(){var a=this.startNode(),c=null,h=void 0;if(this.expect(_tokenizer.TokenType.IMPORT),this.match(_tokenizer.TokenType.STRING))return h=this.lex().str,this.consumeSemicolon(),this.finishNode(new AST.Import({defaultBinding:null,namedImports:[],moduleSpecifier:h}),a);if(this.matchIdentifier()&&(c=this.parseBindingIdentifier(),!this.eat(_tokenizer.TokenType.COMMA))){var d=new AST.Import({defaultBinding:c,namedImports:[],moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(d,a)}if(this.match(_tokenizer.TokenType.MUL)){var g=new AST.ImportNamespace({defaultBinding:c,namespaceBinding:this.parseNameSpaceBinding(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(g,a)}else if(this.match(_tokenizer.TokenType.LBRACE)){var _=new AST.Import({defaultBinding:c,namedImports:this.parseNamedImports(),moduleSpecifier:this.parseFromClause()});return this.consumeSemicolon(),this.finishNode(_,a)}throw this.createUnexpected(this.lookahead)}},{key:"parseExportSpecifier",value:function(){var a=this.startNode(),c=this.finishNode({type:EXPORT_UNKNOWN_SPECIFIER,isIdentifier:this.matchIdentifier(),value:this.parseIdentifierName()},a);if(this.eatContextualKeyword("as")){var h=this.parseIdentifierName();return this.finishNode({name:c,exportedName:h},a)}return this.finishNode({name:c,exportedName:null},a)}},{key:"parseExportClause",value:function(){this.expect(_tokenizer.TokenType.LBRACE);for(var a=[];!this.eat(_tokenizer.TokenType.RBRACE);)if(a.push(this.parseExportSpecifier()),!this.eat(_tokenizer.TokenType.COMMA)){this.expect(_tokenizer.TokenType.RBRACE);break}return a}},{key:"parseExportDeclaration",value:function(){var a=this,c=this.startNode(),h=void 0;switch(this.expect(_tokenizer.TokenType.EXPORT),this.lookahead.type){case _tokenizer.TokenType.MUL:this.lex(),h=new AST.ExportAllFrom({moduleSpecifier:this.parseFromClause()}),this.consumeSemicolon();break;case _tokenizer.TokenType.LBRACE:{var d=this.parseExportClause(),g=null;this.matchContextualKeyword("from")?(g=this.parseFromClause(),h=new AST.ExportFrom({namedExports:d.map(function(j){return a.copyNode(j,new AST.ExportFromSpecifier({name:j.name.value,exportedName:j.exportedName}))}),moduleSpecifier:g})):(d.forEach(function(j){var _e=j.name;if(!_e.isIdentifier)throw a.createError(_errors$1.ErrorMessages.ILLEGAL_EXPORTED_NAME)}),h=new AST.ExportLocals({namedExports:d.map(function(j){return a.copyNode(j,new AST.ExportLocalSpecifier({name:a.copyNode(j.name,new AST.IdentifierExpression({name:j.name.value})),exportedName:j.exportedName}))})})),this.consumeSemicolon();break}case _tokenizer.TokenType.CLASS:h=new AST.Export({declaration:this.parseClass({isExpr:!1,inDefault:!1})});break;case _tokenizer.TokenType.FUNCTION:h=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.ASYNC:{var _=this.startNode();this.lex(),h=new AST.Export({declaration:this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:_})});break}case _tokenizer.TokenType.DEFAULT:switch(this.lex(),this.lookahead.type){case _tokenizer.TokenType.FUNCTION:h=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!0,isAsync:!1})});break;case _tokenizer.TokenType.CLASS:h=new AST.ExportDefault({body:this.parseClass({isExpr:!1,inDefault:!0})});break;case _tokenizer.TokenType.ASYNC:{var b=this.startNode(),$=this.saveLexerState();if(this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)){h=new AST.ExportDefault({body:this.parseFunction({isExpr:!1,inDefault:!0,allowGenerator:!1,isAsync:!0,startState:b})});break}this.restoreLexerState($)}default:h=new AST.ExportDefault({body:this.parseAssignmentExpression()}),this.consumeSemicolon();break}break;case _tokenizer.TokenType.VAR:case _tokenizer.TokenType.LET:case _tokenizer.TokenType.CONST:h=new AST.Export({declaration:this.parseVariableDeclaration(!0)}),this.consumeSemicolon();break;default:throw this.createUnexpected(this.lookahead)}return this.finishNode(h,c)}},{key:"parseModuleItem",value:function(){switch(this.lookahead.type){case _tokenizer.TokenType.IMPORT:return this.parseImportDeclaration();case _tokenizer.TokenType.EXPORT:return this.parseExportDeclaration();default:return this.parseStatementListItem()}}},{key:"lookaheadLexicalDeclaration",value:function(){if(this.match(_tokenizer.TokenType.LET)||this.match(_tokenizer.TokenType.CONST)){var a=this.saveLexerState();if(this.lex(),this.matchIdentifier()||this.match(_tokenizer.TokenType.LBRACE)||this.match(_tokenizer.TokenType.LBRACK))return this.restoreLexerState(a),!0;this.restoreLexerState(a)}return!1}},{key:"parseStatementListItem",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.FUNCTION:return this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!1});case _tokenizer.TokenType.CLASS:return this.parseClass({isExpr:!1,inDefault:!1});case _tokenizer.TokenType.ASYNC:{var a=this.getLocation(),c=this.saveLexerState();return this.lex(),!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!0,isAsync:!0,startState:a}):(this.restoreLexerState(c),this.parseStatement())}default:if(this.lookaheadLexicalDeclaration()){var h=this.startNode();return this.finishNode(this.parseVariableDeclarationStatement(),h)}return this.parseStatement()}}},{key:"parseStatement",value:function(){var a=this.startNode(),c=this.isolateCoverGrammar(this.parseStatementHelper);return this.finishNode(c,a)}},{key:"parseStatementHelper",value:function(){if(this.eof())throw this.createUnexpected(this.lookahead);switch(this.lookahead.type){case _tokenizer.TokenType.SEMICOLON:return this.parseEmptyStatement();case _tokenizer.TokenType.LBRACE:return this.parseBlockStatement();case _tokenizer.TokenType.LPAREN:return this.parseExpressionStatement();case _tokenizer.TokenType.BREAK:return this.parseBreakStatement();case _tokenizer.TokenType.CONTINUE:return this.parseContinueStatement();case _tokenizer.TokenType.DEBUGGER:return this.parseDebuggerStatement();case _tokenizer.TokenType.DO:return this.parseDoWhileStatement();case _tokenizer.TokenType.FOR:return this.parseForStatement();case _tokenizer.TokenType.IF:return this.parseIfStatement();case _tokenizer.TokenType.RETURN:return this.parseReturnStatement();case _tokenizer.TokenType.SWITCH:return this.parseSwitchStatement();case _tokenizer.TokenType.THROW:return this.parseThrowStatement();case _tokenizer.TokenType.TRY:return this.parseTryStatement();case _tokenizer.TokenType.VAR:return this.parseVariableDeclarationStatement();case _tokenizer.TokenType.WHILE:return this.parseWhileStatement();case _tokenizer.TokenType.WITH:return this.parseWithStatement();case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.CLASS:throw this.createUnexpected(this.lookahead);default:{var a=this.saveLexerState();if(this.eat(_tokenizer.TokenType.LET)){if(this.match(_tokenizer.TokenType.LBRACK))throw this.restoreLexerState(a),this.createUnexpected(this.lookahead);this.restoreLexerState(a)}else if(this.eat(_tokenizer.TokenType.ASYNC)){if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.FUNCTION))throw this.createUnexpected(this.lookahead);this.restoreLexerState(a)}var c=this.parseExpression();if(c.type==="IdentifierExpression"&&this.eat(_tokenizer.TokenType.COLON)){var h=this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement();return new AST.LabeledStatement({label:c.name,body:h})}return this.consumeSemicolon(),new AST.ExpressionStatement({expression:c})}}}},{key:"parseEmptyStatement",value:function(){return this.lex(),new AST.EmptyStatement}},{key:"parseBlockStatement",value:function(){return new AST.BlockStatement({block:this.parseBlock()})}},{key:"parseExpressionStatement",value:function(){var a=this.parseExpression();return this.consumeSemicolon(),new AST.ExpressionStatement({expression:a})}},{key:"parseBreakStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.BreakStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.BreakStatement({label:a})}},{key:"parseContinueStatement",value:function(){if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ContinueStatement({label:null});var a=null;return this.matchIdentifier()&&(a=this.parseIdentifier()),this.consumeSemicolon(),new AST.ContinueStatement({label:a})}},{key:"parseDebuggerStatement",value:function(){return this.lex(),this.consumeSemicolon(),new AST.DebuggerStatement}},{key:"parseDoWhileStatement",value:function(){this.lex();var a=this.parseStatement();this.expect(_tokenizer.TokenType.WHILE),this.expect(_tokenizer.TokenType.LPAREN);var c=this.parseExpression();return this.expect(_tokenizer.TokenType.RPAREN),this.eat(_tokenizer.TokenType.SEMICOLON),new AST.DoWhileStatement({body:a,test:c})}},{key:"parseForStatement",value:function(){this.lex();var a=this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT);this.expect(_tokenizer.TokenType.LPAREN);var c=null,h=null;if(a&&this.match(_tokenizer.TokenType.SEMICOLON))throw this.createUnexpected(this.lookahead);if(this.eat(_tokenizer.TokenType.SEMICOLON))return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(h=this.parseExpression()),new AST.ForStatement({init:null,test:c,update:h,body:this.getIteratorStatementEpilogue()});var d=this.match(_tokenizer.TokenType.LET),g=this.lookaheadLexicalDeclaration(),_=this.startNode();if(this.match(_tokenizer.TokenType.VAR)||g){var b=this.allowIn;this.allowIn=!1;var $=this.parseVariableDeclaration(!1);if(this.allowIn=b,$.declarators.length===1&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){var j=void 0,_e=$.declarators[0];if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);if(_e.init!==null&&(this.strict||$.kind!=="var"||_e.binding.type!=="BindingIdentifier"))throw this.createError(_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_IN);j=AST.ForInStatement,this.lex(),h=this.parseExpression()}else{if(_e.init!==null)throw this.createError(a?_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_VAR_INIT_FOR_OF);a?j=AST.ForAwaitStatement:j=AST.ForOfStatement,this.lex(),h=this.parseAssignmentExpression()}var et=this.getIteratorStatementEpilogue();return new j({left:$,right:h,body:et})}else if(a)throw this.createUnexpected(this.lookahead);if(this.expect(_tokenizer.TokenType.SEMICOLON),$.declarators.some(function(it){return it.binding.type!=="BindingIdentifier"&&it.init===null}))throw this.createError(_errors$1.ErrorMessages.UNINITIALIZED_BINDINGPATTERN_IN_FOR_INIT);return this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(h=this.parseExpression()),new AST.ForStatement({init:$,test:c,update:h,body:this.getIteratorStatementEpilogue()})}var tt=this.allowIn;this.allowIn=!1;var nt=this.inheritCoverGrammar(this.parseAssignmentExpressionOrTarget);if(this.allowIn=tt,this.isAssignmentTarget&&nt.type!=="AssignmentExpression"&&(this.match(_tokenizer.TokenType.IN)||this.matchContextualKeyword("of"))){if((nt.type==="ObjectAssignmentTarget"||nt.type==="ArrayAssignmentTarget")&&(this.firstExprError=null),d&&this.matchContextualKeyword("of"))throw this.createError(a?_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT:_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);var st=void 0;if(this.match(_tokenizer.TokenType.IN)){if(a)throw this.createUnexpected(this.lookahead);st=AST.ForInStatement,this.lex(),h=this.parseExpression()}else a?st=AST.ForAwaitStatement:st=AST.ForOfStatement,this.lex(),h=this.parseAssignmentExpression();return new st({left:this.transformDestructuring(nt),right:h,body:this.getIteratorStatementEpilogue()})}else if(a)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_AWAIT);if(this.firstExprError)throw this.firstExprError;for(;this.eat(_tokenizer.TokenType.COMMA);){var rt=this.parseAssignmentExpression();nt=this.finishNode(new AST.BinaryExpression({left:nt,operator:",",right:rt}),_)}if(this.match(_tokenizer.TokenType.IN))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_IN);if(this.matchContextualKeyword("of"))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_FOR_OF);return this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.SEMICOLON)||(c=this.parseExpression()),this.expect(_tokenizer.TokenType.SEMICOLON),this.match(_tokenizer.TokenType.RPAREN)||(h=this.parseExpression()),new AST.ForStatement({init:nt,test:c,update:h,body:this.getIteratorStatementEpilogue()})}},{key:"getIteratorStatementEpilogue",value:function(){this.expect(_tokenizer.TokenType.RPAREN);var a=this.parseStatement();return a}},{key:"parseIfStatementChild",value:function(){return this.match(_tokenizer.TokenType.FUNCTION)?this.parseFunction({isExpr:!1,inDefault:!1,allowGenerator:!1,isAsync:!1}):this.parseStatement()}},{key:"parseIfStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseIfStatementChild(),h=null;return this.eat(_tokenizer.TokenType.ELSE)&&(h=this.parseIfStatementChild()),new AST.IfStatement({test:a,consequent:c,alternate:h})}},{key:"parseReturnStatement",value:function(){if(!this.inFunctionBody)throw this.createError(_errors$1.ErrorMessages.ILLEGAL_RETURN);if(this.lex(),this.eat(_tokenizer.TokenType.SEMICOLON)||this.hasLineTerminatorBeforeNext)return new AST.ReturnStatement({expression:null});var a=null;return!this.match(_tokenizer.TokenType.RBRACE)&&!this.eof()&&(a=this.parseExpression()),this.consumeSemicolon(),new AST.ReturnStatement({expression:a})}},{key:"parseSwitchStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();if(this.expect(_tokenizer.TokenType.RPAREN),this.expect(_tokenizer.TokenType.LBRACE),this.eat(_tokenizer.TokenType.RBRACE))return new AST.SwitchStatement({discriminant:a,cases:[]});var c=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT)){var h=this.parseSwitchDefault(),d=this.parseSwitchCases();if(this.match(_tokenizer.TokenType.DEFAULT))throw this.createError(_errors$1.ErrorMessages.MULTIPLE_DEFAULTS_IN_SWITCH);return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatementWithDefault({discriminant:a,preDefaultCases:c,defaultCase:h,postDefaultCases:d})}return this.expect(_tokenizer.TokenType.RBRACE),new AST.SwitchStatement({discriminant:a,cases:c})}},{key:"parseSwitchCases",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT));)a.push(this.parseSwitchCase());return a}},{key:"parseSwitchCase",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.CASE),this.finishNode(new AST.SwitchCase({test:this.parseExpression(),consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchDefault",value:function(){var a=this.startNode();return this.expect(_tokenizer.TokenType.DEFAULT),this.finishNode(new AST.SwitchDefault({consequent:this.parseSwitchCaseBody()}),a)}},{key:"parseSwitchCaseBody",value:function(){return this.expect(_tokenizer.TokenType.COLON),this.parseStatementListInSwitchCaseBody()}},{key:"parseStatementListInSwitchCaseBody",value:function(){for(var a=[];!(this.eof()||this.match(_tokenizer.TokenType.RBRACE)||this.match(_tokenizer.TokenType.DEFAULT)||this.match(_tokenizer.TokenType.CASE));)a.push(this.parseStatementListItem());return a}},{key:"parseThrowStatement",value:function(){var a=this.lex();if(this.hasLineTerminatorBeforeNext)throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.NEWLINE_AFTER_THROW);var c=this.parseExpression();return this.consumeSemicolon(),new AST.ThrowStatement({expression:c})}},{key:"parseTryStatement",value:function(){this.lex();var a=this.parseBlock();if(this.match(_tokenizer.TokenType.CATCH)){var c=this.parseCatchClause();if(this.eat(_tokenizer.TokenType.FINALLY)){var h=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:c,finalizer:h})}return new AST.TryCatchStatement({body:a,catchClause:c})}if(this.eat(_tokenizer.TokenType.FINALLY)){var d=this.parseBlock();return new AST.TryFinallyStatement({body:a,catchClause:null,finalizer:d})}throw this.createError(_errors$1.ErrorMessages.NO_CATCH_OR_FINALLY)}},{key:"parseVariableDeclarationStatement",value:function(){var a=this.parseVariableDeclaration(!0);return this.consumeSemicolon(),new AST.VariableDeclarationStatement({declaration:a})}},{key:"parseWhileStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression(),c=this.getIteratorStatementEpilogue();return new AST.WhileStatement({test:a,body:c})}},{key:"parseWithStatement",value:function(){this.lex(),this.expect(_tokenizer.TokenType.LPAREN);var a=this.parseExpression();this.expect(_tokenizer.TokenType.RPAREN);var c=this.parseStatement();return new AST.WithStatement({object:a,body:c})}},{key:"parseCatchClause",value:function(){var a=this.startNode();if(this.lex(),this.expect(_tokenizer.TokenType.LPAREN),this.match(_tokenizer.TokenType.RPAREN)||this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var c=this.parseBindingTarget();this.expect(_tokenizer.TokenType.RPAREN);var h=this.parseBlock();return this.finishNode(new AST.CatchClause({binding:c,body:h}),a)}},{key:"parseBlock",value:function(){var a=this.startNode();this.expect(_tokenizer.TokenType.LBRACE);for(var c=[];!this.match(_tokenizer.TokenType.RBRACE);)c.push(this.parseStatementListItem());return this.expect(_tokenizer.TokenType.RBRACE),this.finishNode(new AST.Block({statements:c}),a)}},{key:"parseVariableDeclaration",value:function(a){var c=this.startNode(),h=this.lex(),d=h.type===_tokenizer.TokenType.VAR?"var":h.type===_tokenizer.TokenType.CONST?"const":"let",g=this.parseVariableDeclaratorList(a);return this.finishNode(new AST.VariableDeclaration({kind:d,declarators:g}),c)}},{key:"parseVariableDeclaratorList",value:function(a){var c=[];do c.push(this.parseVariableDeclarator(a));while(this.eat(_tokenizer.TokenType.COMMA));return c}},{key:"parseVariableDeclarator",value:function(a){var c=this.startNode();if(this.match(_tokenizer.TokenType.LPAREN))throw this.createUnexpected(this.lookahead);var h=this.allowIn;this.allowIn=!0;var d=this.parseBindingTarget();this.allowIn=h,a&&d.type!=="BindingIdentifier"&&!this.match(_tokenizer.TokenType.ASSIGN)&&this.expect(_tokenizer.TokenType.ASSIGN);var g=null;return this.eat(_tokenizer.TokenType.ASSIGN)&&(g=this.parseAssignmentExpression()),this.finishNode(new AST.VariableDeclarator({binding:d,init:g}),c)}},{key:"isolateCoverGrammar",value:function(a){var c=this.isBindingElement,h=this.isAssignmentTarget,d=this.firstExprError,g=void 0;if(this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,g=a.call(this),this.firstExprError!==null)throw this.firstExprError;return this.isBindingElement=c,this.isAssignmentTarget=h,this.firstExprError=d,g}},{key:"inheritCoverGrammar",value:function(a){var c=this.isBindingElement,h=this.isAssignmentTarget,d=this.firstExprError,g=void 0;return this.isBindingElement=this.isAssignmentTarget=!0,this.firstExprError=null,g=a.call(this),this.isBindingElement=this.isBindingElement&&c,this.isAssignmentTarget=this.isAssignmentTarget&&h,this.firstExprError=d||this.firstExprError,g}},{key:"parseExpression",value:function(){var a=this.startNode(),c=this.parseAssignmentExpression();if(this.match(_tokenizer.TokenType.COMMA))for(;!this.eof()&&this.match(_tokenizer.TokenType.COMMA);){this.lex();var h=this.parseAssignmentExpression();c=this.finishNode(new AST.BinaryExpression({left:c,operator:",",right:h}),a)}return c}},{key:"finishArrowParams",value:function(a){var c=a.params,h=c===void 0?null:c,d=a.rest,g=d===void 0?null:d;if(a.type!==ARROW_EXPRESSION_PARAMS)if(a.type==="IdentifierExpression")h=[this.targetToBinding(this.transformDestructuring(a))];else throw this.createUnexpected(this.lookahead);return this.copyNode(a,new AST.FormalParameters({items:h,rest:g}))}},{key:"parseArrowExpressionTail",value:function(a,c,h){this.expect(_tokenizer.TokenType.ARROW);var d=this.allowYieldExpression,g=this.allowAwaitExpression,_=this.firstAwaitLocation;this.allowYieldExpression=!1,this.allowAwaitExpression=c,this.firstAwaitLocation=null;var b=void 0;if(this.match(_tokenizer.TokenType.LBRACE)){var $=this.allowIn;this.allowIn=!0,b=this.parseFunctionBody(),this.allowIn=$}else b=this.parseAssignmentExpression();return this.allowYieldExpression=d,this.allowAwaitExpression=g,this.firstAwaitLocation=_,this.finishNode(new AST.ArrowExpression({isAsync:c,params:a,body:b}),h)}},{key:"parseAssignmentExpression",value:function(){return this.isolateCoverGrammar(this.parseAssignmentExpressionOrTarget)}},{key:"parseAssignmentExpressionOrTarget",value:function(){var a=this.startNode();if(this.allowYieldExpression&&this.match(_tokenizer.TokenType.YIELD))return this.isBindingElement=this.isAssignmentTarget=!1,this.parseYieldExpression();var c=this.parseConditionalExpression();if(!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){this.isBindingElement=this.isAssignmentTarget=!1,this.firstExprError=null;var h=c.type===ARROW_EXPRESSION_PARAMS&&c.isAsync;return this.parseArrowExpressionTail(this.finishArrowParams(c),h,a)}var d=!1,g=this.lookahead;switch(g.type){case _tokenizer.TokenType.ASSIGN_BIT_OR:case _tokenizer.TokenType.ASSIGN_BIT_XOR:case _tokenizer.TokenType.ASSIGN_BIT_AND:case _tokenizer.TokenType.ASSIGN_SHL:case _tokenizer.TokenType.ASSIGN_SHR:case _tokenizer.TokenType.ASSIGN_SHR_UNSIGNED:case _tokenizer.TokenType.ASSIGN_ADD:case _tokenizer.TokenType.ASSIGN_SUB:case _tokenizer.TokenType.ASSIGN_MUL:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.ASSIGN_MOD:case _tokenizer.TokenType.ASSIGN_EXP:d=!0;break}if(d){if(!this.isAssignmentTarget||!isValidSimpleAssignmentTarget(c))throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else if(g.type===_tokenizer.TokenType.ASSIGN){if(!this.isAssignmentTarget)throw this.createError(_errors$1.ErrorMessages.INVALID_LHS_IN_ASSIGNMENT);c=this.transformDestructuring(c)}else return c;this.lex();var _=this.parseAssignmentExpression();this.firstExprError=null;var b=void 0;return g.type===_tokenizer.TokenType.ASSIGN?b=new AST.AssignmentExpression({binding:c,expression:_}):(b=new AST.CompoundAssignmentExpression({binding:c,operator:g.type.name,expression:_}),this.isBindingElement=this.isAssignmentTarget=!1),this.finishNode(b,a)}},{key:"targetToBinding",value:function(a){var c=this;if(a===null)return null;switch(a.type){case"AssignmentTargetIdentifier":return this.copyNode(a,new AST.BindingIdentifier({name:a.name}));case"ArrayAssignmentTarget":return this.copyNode(a,new AST.ArrayBinding({elements:a.elements.map(function(h){return c.targetToBinding(h)}),rest:this.targetToBinding(a.rest)}));case"ObjectAssignmentTarget":return this.copyNode(a,new AST.ObjectBinding({properties:a.properties.map(function(h){return c.targetToBinding(h)}),rest:this.targetToBinding(a.rest)}));case"AssignmentTargetPropertyIdentifier":return this.copyNode(a,new AST.BindingPropertyIdentifier({binding:this.targetToBinding(a.binding),init:a.init}));case"AssignmentTargetPropertyProperty":return this.copyNode(a,new AST.BindingPropertyProperty({name:a.name,binding:this.targetToBinding(a.binding)}));case"AssignmentTargetWithDefault":return this.copyNode(a,new AST.BindingWithDefault({binding:this.targetToBinding(a.binding),init:a.init}))}throw new Error("Not reached")}},{key:"transformDestructuring",value:function(a){var c=this;switch(a.type){case"DataProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyProperty({name:a.name,binding:this.transformDestructuringWithDefault(a.expression)}));case"ShorthandProperty":return this.copyNode(a,new AST.AssignmentTargetPropertyIdentifier({binding:this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name.name})),init:null}));case"ObjectExpression":{var h=a.properties.length>0?a.properties[a.properties.length-1]:void 0;return h!=null&&h.type==="SpreadProperty"?this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.slice(0,-1).map(function(g){return g&&c.transformDestructuringWithDefault(g)}),rest:this.transformDestructuring(h.expression)})):this.copyNode(a,new AST.ObjectAssignmentTarget({properties:a.properties.map(function(g){return g&&c.transformDestructuringWithDefault(g)}),rest:null}))}case"ArrayExpression":{var d=a.elements[a.elements.length-1];return d!=null&&d.type==="SpreadElement"?this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.slice(0,-1).map(function(g){return g&&c.transformDestructuringWithDefault(g)}),rest:this.copyNode(d.expression,this.transformDestructuring(d.expression))})):this.copyNode(a,new AST.ArrayAssignmentTarget({elements:a.elements.map(function(g){return g&&c.transformDestructuringWithDefault(g)}),rest:null}))}case"IdentifierExpression":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.name}));case"StaticPropertyName":return this.copyNode(a,new AST.AssignmentTargetIdentifier({name:a.value}));case"ComputedMemberExpression":return this.copyNode(a,new AST.ComputedMemberAssignmentTarget({object:a.object,expression:a.expression}));case"StaticMemberExpression":return this.copyNode(a,new AST.StaticMemberAssignmentTarget({object:a.object,property:a.property}));case"ArrayAssignmentTarget":case"ObjectAssignmentTarget":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":case"AssignmentTargetIdentifier":case"AssignmentTargetPropertyIdentifier":case"AssignmentTargetPropertyProperty":case"AssignmentTargetWithDefault":return a}throw new Error("Not reached")}},{key:"transformDestructuringWithDefault",value:function(a){switch(a.type){case"AssignmentExpression":return this.copyNode(a,new AST.AssignmentTargetWithDefault({binding:this.transformDestructuring(a.binding),init:a.expression}))}return this.transformDestructuring(a)}},{key:"lookaheadAssignmentExpression",value:function(){if(this.matchIdentifier())return!0;switch(this.lookahead.type){case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.ASSIGN_DIV:case _tokenizer.TokenType.BIT_NOT:case _tokenizer.TokenType.CLASS:case _tokenizer.TokenType.DEC:case _tokenizer.TokenType.DELETE:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.FALSE:case _tokenizer.TokenType.FUNCTION:case _tokenizer.TokenType.INC:case _tokenizer.TokenType.LBRACE:case _tokenizer.TokenType.LBRACK:case _tokenizer.TokenType.LPAREN:case _tokenizer.TokenType.NEW:case _tokenizer.TokenType.NOT:case _tokenizer.TokenType.NULL:case _tokenizer.TokenType.NUMBER:case _tokenizer.TokenType.STRING:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.SUPER:case _tokenizer.TokenType.THIS:case _tokenizer.TokenType.TRUE:case _tokenizer.TokenType.TYPEOF:case _tokenizer.TokenType.VOID:case _tokenizer.TokenType.TEMPLATE:return!0}return!1}},{key:"parseYieldExpression",value:function(){var a=this.startNode();if(this.lex(),this.hasLineTerminatorBeforeNext)return this.finishNode(new AST.YieldExpression({expression:null}),a);var c=!!this.eat(_tokenizer.TokenType.MUL),h=null;(c||this.lookaheadAssignmentExpression())&&(h=this.parseAssignmentExpression());var d=c?AST.YieldGeneratorExpression:AST.YieldExpression;return this.finishNode(new d({expression:h}),a)}},{key:"parseConditionalExpression",value:function(){var a=this.startNode(),c=this.parseBinaryExpression();if(this.firstExprError)return c;if(this.eat(_tokenizer.TokenType.CONDITIONAL)){this.isBindingElement=this.isAssignmentTarget=!1;var h=this.allowIn;this.allowIn=!0;var d=this.isolateCoverGrammar(this.parseAssignmentExpression);this.allowIn=h,this.expect(_tokenizer.TokenType.COLON);var g=this.isolateCoverGrammar(this.parseAssignmentExpression);return this.finishNode(new AST.ConditionalExpression({test:c,consequent:d,alternate:g}),a)}return c}},{key:"isBinaryOperator",value:function(a){switch(a){case _tokenizer.TokenType.OR:case _tokenizer.TokenType.AND:case _tokenizer.TokenType.BIT_OR:case _tokenizer.TokenType.BIT_XOR:case _tokenizer.TokenType.BIT_AND:case _tokenizer.TokenType.EQ:case _tokenizer.TokenType.NE:case _tokenizer.TokenType.EQ_STRICT:case _tokenizer.TokenType.NE_STRICT:case _tokenizer.TokenType.LT:case _tokenizer.TokenType.GT:case _tokenizer.TokenType.LTE:case _tokenizer.TokenType.GTE:case _tokenizer.TokenType.INSTANCEOF:case _tokenizer.TokenType.SHL:case _tokenizer.TokenType.SHR:case _tokenizer.TokenType.SHR_UNSIGNED:case _tokenizer.TokenType.ADD:case _tokenizer.TokenType.SUB:case _tokenizer.TokenType.MUL:case _tokenizer.TokenType.DIV:case _tokenizer.TokenType.MOD:return!0;case _tokenizer.TokenType.IN:return this.allowIn;default:return!1}}},{key:"parseBinaryExpression",value:function(){var a=this,c=this.startNode(),h=this.parseExponentiationExpression();if(this.firstExprError)return h;var d=this.lookahead.type;if(!this.isBinaryOperator(d))return h;this.isBindingElement=this.isAssignmentTarget=!1,this.lex();var g=[];g.push({startState:c,left:h,operator:d,precedence:BinaryPrecedence$1[d.name]}),c=this.startNode();var _=this.isolateCoverGrammar(this.parseExponentiationExpression);for(d=this.lookahead.type;this.isBinaryOperator(d);){for(var b=BinaryPrecedence$1[d.name];g.length&&b<=g[g.length-1].precedence;){var $=g[g.length-1],j=$.operator;h=$.left,g.pop(),c=$.startState,_=this.finishNode(new AST.BinaryExpression({left:h,operator:j.name,right:_}),c)}this.lex(),g.push({startState:c,left:_,operator:d,precedence:b}),c=this.startNode(),_=this.isolateCoverGrammar(this.parseExponentiationExpression),d=this.lookahead.type}return g.reduceRight(function(_e,et){return a.finishNode(new AST.BinaryExpression({left:et.left,operator:et.operator.name,right:_e}),et.startState)},_)}},{key:"parseExponentiationExpression",value:function(){var a=this.startNode(),c=this.lookahead.type===_tokenizer.TokenType.LPAREN,h=this.parseUnaryExpression();if(this.lookahead.type!==_tokenizer.TokenType.EXP)return h;if(h.type==="UnaryExpression"&&!c)throw this.createError(_errors$1.ErrorMessages.INVALID_EXPONENTIATION_LHS);this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var d=this.isolateCoverGrammar(this.parseExponentiationExpression);return this.finishNode(new AST.BinaryExpression({left:h,operator:"**",right:d}),a)}},{key:"parseUnaryExpression",value:function(){if(this.lookahead.type.klass!==_tokenizer.TokenClass.Punctuator&&this.lookahead.type.klass!==_tokenizer.TokenClass.Keyword)return this.parseUpdateExpression();var a=this.startNode();if(this.allowAwaitExpression&&this.eat(_tokenizer.TokenType.AWAIT)){this.isBindingElement=this.isAssignmentTarget=!1;var c=this.isolateCoverGrammar(this.parseUnaryExpression);return this.finishNode(new AST.AwaitExpression({expression:c}),a)}var h=this.lookahead;if(!isPrefixOperator(h))return this.parseUpdateExpression();this.lex(),this.isBindingElement=this.isAssignmentTarget=!1;var d=void 0;if(isUpdateOperator(h)){var g=this.getLocation(),_=this.isolateCoverGrammar(this.parseUnaryExpression);if(!isValidSimpleAssignmentTarget(_))throw this.createErrorWithLocation(g,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);_=this.transformDestructuring(_),d=new AST.UpdateExpression({isPrefix:!0,operator:h.value,operand:_})}else{var b=this.isolateCoverGrammar(this.parseUnaryExpression);d=new AST.UnaryExpression({operator:h.value,operand:b})}return this.finishNode(d,a)}},{key:"parseUpdateExpression",value:function(){var a=this.getLocation(),c=this.startNode(),h=this.parseLeftHandSideExpression({allowCall:!0});if(this.firstExprError||this.hasLineTerminatorBeforeNext)return h;var d=this.lookahead;if(!isUpdateOperator(d))return h;if(this.lex(),this.isBindingElement=this.isAssignmentTarget=!1,!isValidSimpleAssignmentTarget(h))throw this.createErrorWithLocation(a,_errors$1.ErrorMessages.INVALID_UPDATE_OPERAND);return h=this.transformDestructuring(h),this.finishNode(new AST.UpdateExpression({isPrefix:!1,operator:d.value,operand:h}),c)}},{key:"parseLeftHandSideExpression",value:function(a){var c=this,h=a.allowCall,d=this.startNode(),g=this.allowIn;this.allowIn=!0;var _=void 0,b=this.lookahead;if(this.eat(_tokenizer.TokenType.SUPER))if(this.isBindingElement=!1,this.isAssignmentTarget=!1,_=this.finishNode(new AST.Super,d),this.match(_tokenizer.TokenType.LPAREN))if(h)_=this.finishNode(new AST.CallExpression({callee:_,arguments:this.parseArgumentList().args}),d);else throw this.createUnexpected(b);else if(this.match(_tokenizer.TokenType.LBRACK))_=this.finishNode(new AST.ComputedMemberExpression({object:_,expression:this.parseComputedMember()}),d),this.isAssignmentTarget=!0;else if(this.match(_tokenizer.TokenType.PERIOD))_=this.finishNode(new AST.StaticMemberExpression({object:_,property:this.parseStaticMember()}),d),this.isAssignmentTarget=!0;else throw this.createUnexpected(b);else if(this.match(_tokenizer.TokenType.NEW))this.isBindingElement=this.isAssignmentTarget=!1,_=this.parseNewExpression();else if(this.match(_tokenizer.TokenType.ASYNC)){if(_=this.parsePrimaryExpression(),_.type==="IdentifierExpression"&&h&&!this.hasLineTerminatorBeforeNext){if(this.matchIdentifier()){var $=this.startNode(),j=this.allowAwaitExpression;this.allowAwaitExpression=!0;var _e=this.parseBindingIdentifier();return this.allowAwaitExpression=j,this.ensureArrow(),this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:[_e],rest:null,isAsync:!0},$)}if(this.match(_tokenizer.TokenType.LPAREN)){var et=this.startNode(),tt=this.firstAwaitLocation;this.firstAwaitLocation=null;var nt=this.parseArgumentList(),st=nt.args,rt=nt.locationFollowingFirstSpread;if(this.isBindingElement&&!this.hasLineTerminatorBeforeNext&&this.match(_tokenizer.TokenType.ARROW)){if(rt!==null)throw this.createErrorWithLocation(rt,_errors$1.ErrorMessages.UNEXPECTED_TOKEN(","));if(this.firstAwaitLocation!==null)throw this.createErrorWithLocation(this.firstAwaitLocation,_errors$1.ErrorMessages.NO_AWAIT_IN_ASYNC_PARAMS);var it=null;if(st.length>0&&st[st.length-1].type==="SpreadElement"){if(it=this.targetToBinding(this.transformDestructuringWithDefault(st[st.length-1].expression)),it.init!=null)throw this.createError(_errors$1.ErrorMessages.UNEXPECTED_REST_PARAMETERS_INITIALIZATION);st=st.slice(0,-1)}var at=st.map(function(ot){return c.targetToBinding(c.transformDestructuringWithDefault(ot))});return this.finishNode({type:ARROW_EXPRESSION_PARAMS,params:at,rest:it,isAsync:!0},et)}this.firstAwaitLocation=tt||this.firstAwaitLocation,this.isBindingElement=this.isAssignmentTarget=!1,_=this.finishNode(new AST.CallExpression({callee:_,arguments:st}),d)}}}else if(_=this.parsePrimaryExpression(),this.firstExprError)return _;for(;;)if(h&&this.match(_tokenizer.TokenType.LPAREN))this.isBindingElement=this.isAssignmentTarget=!1,_=this.finishNode(new AST.CallExpression({callee:_,arguments:this.parseArgumentList().args}),d);else if(this.match(_tokenizer.TokenType.LBRACK))this.isBindingElement=!1,this.isAssignmentTarget=!0,_=this.finishNode(new AST.ComputedMemberExpression({object:_,expression:this.parseComputedMember()}),d);else if(this.match(_tokenizer.TokenType.PERIOD))this.isBindingElement=!1,this.isAssignmentTarget=!0,_=this.finishNode(new AST.StaticMemberExpression({object:_,property:this.parseStaticMember()}),d);else if(this.match(_tokenizer.TokenType.TEMPLATE))this.isBindingElement=this.isAssignmentTarget=!1,_=this.finishNode(new AST.TemplateExpression({tag:_,elements:this.parseTemplateElements()}),d);else break;return this.allowIn=g,_}},{key:"parseTemplateElements",value:function(){var a=this.startNode(),c=this.lookahead;if(c.tail)return this.lex(),[this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)];for(var h=[this.finishNode(new AST.TemplateElement({rawValue:this.lex().slice.text.slice(1,-2)}),a)];;){if(h.push(this.parseExpression()),!this.match(_tokenizer.TokenType.RBRACE))throw this.createILLEGAL();if(this.index=this.startIndex,this.line=this.startLine,this.lineStart=this.startLineStart,this.lookahead=this.scanTemplateElement(),a=this.startNode(),c=this.lex(),c.tail)return h.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-1)}),a)),h;h.push(this.finishNode(new AST.TemplateElement({rawValue:c.slice.text.slice(1,-2)}),a))}}},{key:"parseStaticMember",value:function(){if(this.lex(),this.lookahead.type.klass.isIdentifierName)return this.lex().value;throw this.createUnexpected(this.lookahead)}},{key:"parseComputedMember",value:function(){this.lex();var a=this.parseExpression();return this.expect(_tokenizer.TokenType.RBRACK),a}},{key:"parseNewExpression",value:function(){var a=this,c=this.startNode();if(this.lex(),this.eat(_tokenizer.TokenType.PERIOD))return this.expectContextualKeyword("target"),this.finishNode(new AST.NewTargetExpression,c);var h=this.isolateCoverGrammar(function(){return a.parseLeftHandSideExpression({allowCall:!1})});return this.finishNode(new AST.NewExpression({callee:h,arguments:this.match(_tokenizer.TokenType.LPAREN)?this.parseArgumentList().args:[]}),c)}},{key:"parseRegexFlags",value:function(a){for(var c=!1,h=!1,d=!1,g=!1,_=!1,b=!1,$=0;$1?e-1:0),a=1;a1&&c.slice(1).forEach(function(h){a.addError(s(h))})}),this}},{key:"enforceConflictingLexicallyDeclaredNames",value:function(s,a){var c=this;return this.lexicallyDeclaredNames.forEachEntry(function(h,d){s.has(d)&&h.forEach(function(g){c.addError(a(g))})}),this}},{key:"observeFunctionDeclaration",value:function(){return this.observeVarBoundary(),addEach(this.functionDeclarationNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"functionDeclarationNamesAreLexical",value:function(){return addEach(this.lexicallyDeclaredNames,this.functionDeclarationNames),this.functionDeclarationNames=new _multimap2.default,this}},{key:"observeVarDeclaration",value:function(){return addEach(this.varDeclaredNames,this.boundNames),this.boundNames=new _multimap2.default,this}},{key:"recordForOfVars",value:function(){var s=this;return this.varDeclaredNames.forEach(function(a){s.forOfVarDeclaredNames.push(a)}),this}},{key:"observeVarBoundary",value:function(){return this.lexicallyDeclaredNames=new _multimap2.default,this.functionDeclarationNames=new _multimap2.default,this.varDeclaredNames=new _multimap2.default,this.forOfVarDeclaredNames=[],this}},{key:"exportName",value:function(s,a){return this.exportedNames.set(s,a),this}},{key:"exportDeclaredNames",value:function(){return addEach(this.exportedNames,this.lexicallyDeclaredNames,this.varDeclaredNames),addEach(this.exportedBindings,this.lexicallyDeclaredNames,this.varDeclaredNames),this}},{key:"exportBinding",value:function(s,a){return this.exportedBindings.set(s,a),this}},{key:"clearExportedBindings",value:function(){return this.exportedBindings=new _multimap2.default,this}},{key:"observeYieldExpression",value:function(s){return this.yieldExpressions.push(s),this}},{key:"clearYieldExpressions",value:function(){return this.yieldExpressions=[],this}},{key:"observeAwaitExpression",value:function(s){return this.awaitExpressions.push(s),this}},{key:"clearAwaitExpressions",value:function(){return this.awaitExpressions=[],this}},{key:"addError",value:function(s){return this.errors.push(s),this}},{key:"addStrictError",value:function(s){return this.strictErrors.push(s),this}},{key:"enforceStrictErrors",value:function(){return[].push.apply(this.errors,this.strictErrors),this.strictErrors=[],this}},{key:"concat",value:function(s){return this===identity?s:s===identity?this:([].push.apply(this.errors,s.errors),[].push.apply(this.strictErrors,s.strictErrors),[].push.apply(this.usedLabelNames,s.usedLabelNames),[].push.apply(this.freeBreakStatements,s.freeBreakStatements),[].push.apply(this.freeContinueStatements,s.freeContinueStatements),[].push.apply(this.freeLabeledBreakStatements,s.freeLabeledBreakStatements),[].push.apply(this.freeLabeledContinueStatements,s.freeLabeledContinueStatements),[].push.apply(this.newTargetExpressions,s.newTargetExpressions),addEach(this.boundNames,s.boundNames),addEach(this.lexicallyDeclaredNames,s.lexicallyDeclaredNames),addEach(this.functionDeclarationNames,s.functionDeclarationNames),addEach(this.varDeclaredNames,s.varDeclaredNames),[].push.apply(this.forOfVarDeclaredNames,s.forOfVarDeclaredNames),addEach(this.exportedNames,s.exportedNames),addEach(this.exportedBindings,s.exportedBindings),[].push.apply(this.superCallExpressions,s.superCallExpressions),[].push.apply(this.superCallExpressionsInConstructorMethod,s.superCallExpressionsInConstructorMethod),[].push.apply(this.superPropertyExpressions,s.superPropertyExpressions),[].push.apply(this.yieldExpressions,s.yieldExpressions),[].push.apply(this.awaitExpressions,s.awaitExpressions),this)}}],[{key:"empty",value:function(){return identity}}]),o}();identity=new EarlyErrorState;Object.getOwnPropertyNames(EarlyErrorState.prototype).forEach(function(o){o!=="constructor"&&Object.defineProperty(identity,o,{value:function(){return EarlyErrorState.prototype[o].apply(new EarlyErrorState,arguments)},enumerable:!1,writable:!0,configurable:!0})});earlyErrorState.EarlyError=function(o){_inherits$4(e,o);function e(s,a){_classCallCheck$7(this,e);var c=_possibleConstructorReturn$4(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,a));return c.node=s,c.message=a,c}return e}(Error);Object.defineProperty(earlyErrors,"__esModule",{value:!0});earlyErrors.EarlyErrorChecker=void 0;var _createClass$5=function(){function o(e,s){for(var a=0;a1&&s.slice(1).forEach(function(a){e=e.addError(new _earlyErrorState.EarlyError(a,"Duplicate constructor method in class"))}),e}var SUPERCALL_ERROR=function(e){return new _earlyErrorState.EarlyError(e,_errors.ErrorMessages.ILLEGAL_SUPER_CALL)},SUPERPROPERTY_ERROR=function(e){return new _earlyErrorState.EarlyError(e,"Member access on super must be in a method")},DUPLICATE_BINDING=function(e){return new _earlyErrorState.EarlyError(e,"Duplicate binding "+JSON.stringify(e.name))},FREE_CONTINUE=function(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement")},UNBOUND_CONTINUE=function(e){return new _earlyErrorState.EarlyError(e,"Continue statement must be nested within an iteration statement with label "+JSON.stringify(e.label))},FREE_BREAK=function(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within an iteration statement or a switch statement")},UNBOUND_BREAK=function(e){return new _earlyErrorState.EarlyError(e,"Break statement must be nested within a statement with label "+JSON.stringify(e.label))};earlyErrors.EarlyErrorChecker=function(o){_inherits$3(e,o);function e(){return _classCallCheck$6(this,e),_possibleConstructorReturn$3(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,_earlyErrorState.EarlyErrorState))}return _createClass$5(e,[{key:"reduceAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceAssignmentTargetIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c}},{key:"reduceArrowExpression",value:function(a,c){var h=c.params,d=c.body,g=a.params.rest==null&&a.params.items.every(function(b){return b.type==="BindingIdentifier"});h=h.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a.body.type==="FunctionBody"&&(d=d.enforceConflictingLexicallyDeclaredNames(h.lexicallyDeclaredNames,DUPLICATE_BINDING),isStrictFunctionBody(a.body)&&(h=h.enforceStrictErrors(),d=d.enforceStrictErrors())),h.yieldExpressions.forEach(function(b){h=h.addError(new _earlyErrorState.EarlyError(b,"Arrow parameters must not contain yield expressions"))}),h.awaitExpressions.forEach(function(b){h=h.addError(new _earlyErrorState.EarlyError(b,"Arrow parameters must not contain await expressions"))});var _=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceArrowExpression",this).call(this,a,{params:h,body:d});return!g&&a.body.type==="FunctionBody"&&isStrictFunctionBody(a.body)&&(_=_.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),_=_.clearYieldExpressions(),_=_.clearAwaitExpressions(),_=_.observeVarBoundary(),_}},{key:"reduceAwaitExpression",value:function(a,c){var h=c.expression;return h.observeAwaitExpression(a)}},{key:"reduceBindingIdentifier",value:function(a){var c=this.identity;return(a.name==="eval"||a.name==="arguments"||(0,_utils.isStrictModeReservedWord)(a.name))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in binding position in strict mode"))),c=c.bindName(a.name,a),c}},{key:"reduceBlock",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBlock",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a=a.observeLexicalBoundary(),a}},{key:"reduceBreakStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceBreakStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeBreakStatement(a):c.addFreeLabeledBreakStatement(a),c}},{key:"reduceCallExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCallExpression",this).apply(this,arguments);return a.callee.type==="Super"&&(c=c.observeSuperCallExpression(a)),c}},{key:"reduceCatchClause",value:function(a,c){var h=c.binding,d=c.body;h=h.observeLexicalDeclaration(),h=h.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),h=h.enforceConflictingLexicallyDeclaredNames(d.previousLexicallyDeclaredNames,DUPLICATE_BINDING),h.lexicallyDeclaredNames.forEachEntry(function(_,b){d.varDeclaredNames.has(b)&&d.varDeclaredNames.get(b).forEach(function($){d.forOfVarDeclaredNames.indexOf($)>=0&&(h=h.addError(DUPLICATE_BINDING($)))})});var g=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCatchClause",this).call(this,a,{binding:h,body:d});return g=g.observeLexicalBoundary(),g}},{key:"reduceClassDeclaration",value:function(a,c){var h=c.name,d=c.super,g=c.elements,_=h.enforceStrictErrors(),b=this.append.apply(this,_toConsumableArray$3(g));return b=b.enforceStrictErrors(),a.super!=null&&(d=d.enforceStrictErrors(),_=this.append(_,d),b=b.clearSuperCallExpressionsInConstructorMethod()),_=this.append(_,b),_=enforceDuplicateConstructorMethods(a,_),_=_.observeLexicalDeclaration(),_}},{key:"reduceClassElement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceClassElement",this).apply(this,arguments);return!a.isStatic&&isSpecialMethod(a.method)&&(c=c.addError(new _earlyErrorState.EarlyError(a,_errors.ErrorMessages.ILLEGAL_CONSTRUCTORS))),a.isStatic&&a.method.name.type==="StaticPropertyName"&&a.method.name.value==="prototype"&&(c=c.addError(new _earlyErrorState.EarlyError(a,'Static class methods cannot be named "prototype"'))),c}},{key:"reduceClassExpression",value:function(a,c){var h=c.name,d=c.super,g=c.elements,_=a.name==null?this.identity:h.enforceStrictErrors(),b=this.append.apply(this,_toConsumableArray$3(g));return b=b.enforceStrictErrors(),a.super!=null&&(d=d.enforceStrictErrors(),_=this.append(_,d),b=b.clearSuperCallExpressionsInConstructorMethod()),_=this.append(_,b),_=enforceDuplicateConstructorMethods(a,_),_=_.clearBoundNames(),_}},{key:"reduceCompoundAssignmentExpression",value:function(){return _get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceCompoundAssignmentExpression",this).apply(this,arguments).clearBoundNames()}},{key:"reduceComputedMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceComputedMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceContinueStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceContinueStatement",this).apply(this,arguments);return c=a.label==null?c.addFreeContinueStatement(a):c.addFreeLabeledContinueStatement(a),c}},{key:"reduceDoWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceDoWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a do-while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements(),c=c.clearFreeBreakStatements(),c}},{key:"reduceExport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExport",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.exportDeclaredNames(),a}},{key:"reduceExportFrom",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFrom",this).apply(this,arguments);return a=a.clearExportedBindings(),a}},{key:"reduceExportFromSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportFromSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name,a),c=c.exportBinding(a.name,a),c}},{key:"reduceExportLocalSpecifier",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportLocalSpecifier",this).apply(this,arguments);return c=c.exportName(a.exportedName||a.name.name,a),c=c.exportBinding(a.name.name,a),c}},{key:"reduceExportDefault",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceExportDefault",this).apply(this,arguments);return c=c.functionDeclarationNamesAreLexical(),c=c.exportName("default",a),c}},{key:"reduceFormalParameters",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFormalParameters",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceForStatement",value:function(a,c){var h=c.init,d=c.test,g=c.update,_=c.body;h!=null&&(h=h.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),h=h.enforceConflictingLexicallyDeclaredNames(_.varDeclaredNames,DUPLICATE_BINDING));var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForStatement",this).call(this,a,{init:h,test:d,update:g,body:_});return a.init!=null&&a.init.type==="VariableDeclaration"&&a.init.kind==="const"&&a.init.declarators.forEach(function($){$.init==null&&(b=b.addError(new _earlyErrorState.EarlyError($,"Constant lexical declarations must have an initialiser")))}),isLabelledFunction(a.body)&&(b=b.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for statement must not be a labeled function declaration"))),b=b.clearFreeContinueStatements(),b=b.clearFreeBreakStatements(),b=b.observeLexicalBoundary(),b}},{key:"reduceForInStatement",value:function(a,c){var h=c.left,d=c.right,g=c.body;h=h.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),h=h.enforceConflictingLexicallyDeclaredNames(g.varDeclaredNames,DUPLICATE_BINDING);var _=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForInStatement",this).call(this,a,{left:h,right:d,body:g});return isLabelledFunction(a.body)&&(_=_.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-in statement must not be a labeled function declaration"))),_=_.clearFreeContinueStatements(),_=_.clearFreeBreakStatements(),_=_.observeLexicalBoundary(),_}},{key:"reduceForOfStatement",value:function(a,c){var h=c.left,d=c.right,g=c.body;h=h.recordForOfVars(),h=h.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),h=h.enforceConflictingLexicallyDeclaredNames(g.varDeclaredNames,DUPLICATE_BINDING);var _=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:h,right:d,body:g});return isLabelledFunction(a.body)&&(_=_.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-of statement must not be a labeled function declaration"))),_=_.clearFreeContinueStatements(),_=_.clearFreeBreakStatements(),_=_.observeLexicalBoundary(),_}},{key:"reduceForAwaitStatement",value:function(a,c){var h=c.left,d=c.right,g=c.body;h=h.recordForOfVars(),h=h.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),h=h.enforceConflictingLexicallyDeclaredNames(g.varDeclaredNames,DUPLICATE_BINDING);var _=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceForOfStatement",this).call(this,a,{left:h,right:d,body:g});return isLabelledFunction(a.body)&&(_=_.addError(new _earlyErrorState.EarlyError(a.body,"The body of a for-await statement must not be a labeled function declaration"))),_=_.clearFreeContinueStatements(),_=_.clearFreeBreakStatements(),_=_.observeLexicalBoundary(),_}},{key:"reduceFunctionBody",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionBody",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.clearUsedLabelNames(),c=c.clearYieldExpressions(),c=c.clearAwaitExpressions(),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceFunctionDeclaration",value:function(a,c){var h=c.name,d=c.params,g=c.body,_=a.params.rest==null&&a.params.items.every(function(j){return j.type==="BindingIdentifier"}),b=!_||a.isGenerator?"addError":"addStrictError";d.lexicallyDeclaredNames.forEachEntry(function(j){j.length>1&&j.slice(1).forEach(function(_e){d=d[b](DUPLICATE_BINDING(_e))})}),g=g.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),g=g.enforceSuperCallExpressions(SUPERCALL_ERROR),g=g.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),d=d.enforceSuperCallExpressions(SUPERCALL_ERROR),d=d.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&d.yieldExpressions.forEach(function(j){d=d.addError(new _earlyErrorState.EarlyError(j,"Generator parameters must not contain yield expressions"))}),a.isAsync&&d.awaitExpressions.forEach(function(j){d=d.addError(new _earlyErrorState.EarlyError(j,"Async function parameters must not contain await expressions"))}),d=d.clearNewTargetExpressions(),g=g.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),g=g.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionDeclaration",this).call(this,a,{name:h,params:d,body:g});return!_&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.clearYieldExpressions(),$=$.clearAwaitExpressions(),$=$.observeFunctionDeclaration(),$}},{key:"reduceFunctionExpression",value:function(a,c){var h=c.name,d=c.params,g=c.body,_=a.params.rest==null&&a.params.items.every(function(j){return j.type==="BindingIdentifier"}),b=!_||a.isGenerator?"addError":"addStrictError";d.lexicallyDeclaredNames.forEachEntry(function(j,_e){j.length>1&&j.slice(1).forEach(function(et){d=d[b](new _earlyErrorState.EarlyError(et,"Duplicate binding "+JSON.stringify(_e)))})}),g=g.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),g=g.enforceSuperCallExpressions(SUPERCALL_ERROR),g=g.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),d=d.enforceSuperCallExpressions(SUPERCALL_ERROR),d=d.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a.isGenerator&&d.yieldExpressions.forEach(function(j){d=d.addError(new _earlyErrorState.EarlyError(j,"Generator parameters must not contain yield expressions"))}),a.isAsync&&d.awaitExpressions.forEach(function(j){d=d.addError(new _earlyErrorState.EarlyError(j,"Async function parameters must not contain await expressions"))}),d=d.clearNewTargetExpressions(),g=g.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),g=g.enforceStrictErrors());var $=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceFunctionExpression",this).call(this,a,{name:h,params:d,body:g});return!_&&isStrictFunctionBody(a.body)&&($=$.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),$=$.clearBoundNames(),$=$.clearYieldExpressions(),$=$.clearAwaitExpressions(),$=$.observeVarBoundary(),$}},{key:"reduceGetter",value:function(a,c){var h=c.name,d=c.body;d=d.enforceSuperCallExpressions(SUPERCALL_ERROR),d=d.clearSuperPropertyExpressions(),d=d.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors());var g=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceGetter",this).call(this,a,{name:h,body:d});return g=g.observeVarBoundary(),g}},{key:"reduceIdentifierExpression",value:function(a){var c=this.identity;return(0,_utils.isStrictModeReservedWord)(a.name)&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.name)+" must not be in expression position in strict mode"))),c}},{key:"reduceIfStatement",value:function(a,c){var h=c.test,d=c.consequent,g=c.alternate;return isLabelledFunction(a.consequent)&&(d=d.addError(new _earlyErrorState.EarlyError(a.consequent,"The consequent of an if statement must not be a labeled function declaration"))),a.alternate!=null&&isLabelledFunction(a.alternate)&&(g=g.addError(new _earlyErrorState.EarlyError(a.alternate,"The alternate of an if statement must not be a labeled function declaration"))),a.consequent.type==="FunctionDeclaration"&&(d=d.addStrictError(new _earlyErrorState.EarlyError(a.consequent,"FunctionDeclarations in IfStatements are disallowed in strict mode")),d=d.observeLexicalBoundary()),a.alternate!=null&&a.alternate.type==="FunctionDeclaration"&&(g=g.addStrictError(new _earlyErrorState.EarlyError(a.alternate,"FunctionDeclarations in IfStatements are disallowed in strict mode")),g=g.observeLexicalBoundary()),_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceIfStatement",this).call(this,a,{test:h,consequent:d,alternate:g})}},{key:"reduceImport",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImport",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceImportNamespace",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceImportNamespace",this).apply(this,arguments);return a=a.observeLexicalDeclaration(),a}},{key:"reduceLabeledStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceLabeledStatement",this).apply(this,arguments);return(a.label==="yield"||(0,_utils.isStrictModeReservedWord)(a.label))&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"The identifier "+JSON.stringify(a.label)+" must not be in label position in strict mode"))),c.usedLabelNames.indexOf(a.label)>=0&&(c=c.addError(new _earlyErrorState.EarlyError(a,"Label "+JSON.stringify(a.label)+" has already been declared"))),a.body.type==="FunctionDeclaration"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Labeled FunctionDeclarations are disallowed in strict mode"))),c=isIterationStatement(a.body)?c.observeIterationLabel(a.label):c.observeNonIterationLabel(a.label),c}},{key:"reduceLiteralRegExpExpression",value:function(){var a=this.identity;return a}},{key:"reduceMethod",value:function(a,c){var h=c.name,d=c.params,g=c.body,_=a.params.rest==null&&a.params.items.every(function($){return $.type==="BindingIdentifier"});d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),g=g.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),a.name.type==="StaticPropertyName"&&a.name.value==="constructor"?(g=g.observeConstructorMethod(),d=d.observeConstructorMethod()):(g=g.enforceSuperCallExpressions(SUPERCALL_ERROR),d=d.enforceSuperCallExpressions(SUPERCALL_ERROR)),a.isGenerator&&d.yieldExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Generator parameters must not contain yield expressions"))}),a.isAsync&&d.awaitExpressions.forEach(function($){d=d.addError(new _earlyErrorState.EarlyError($,"Async function parameters must not contain await expressions"))}),g=g.clearSuperPropertyExpressions(),d=d.clearSuperPropertyExpressions(),d=d.clearNewTargetExpressions(),g=g.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),g=g.enforceStrictErrors());var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceMethod",this).call(this,a,{name:h,params:d,body:g});return!_&&isStrictFunctionBody(a.body)&&(b=b.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),b=b.clearYieldExpressions(),b=b.clearAwaitExpressions(),b=b.observeVarBoundary(),b}},{key:"reduceModule",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceModule",this).apply(this,arguments);return a=a.functionDeclarationNamesAreLexical(),a=a.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),a=a.enforceConflictingLexicallyDeclaredNames(a.varDeclaredNames,DUPLICATE_BINDING),a.exportedNames.forEachEntry(function(c,h){c.length>1&&c.slice(1).forEach(function(d){a=a.addError(new _earlyErrorState.EarlyError(d,"Duplicate export "+JSON.stringify(h)))})}),a.exportedBindings.forEachEntry(function(c,h){!a.lexicallyDeclaredNames.has(h)&&!a.varDeclaredNames.has(h)&&c.forEach(function(d){a=a.addError(new _earlyErrorState.EarlyError(d,"Exported binding "+JSON.stringify(h)+" is not declared"))})}),a.newTargetExpressions.forEach(function(c){a=a.addError(new _earlyErrorState.EarlyError(c,"new.target must be within function (but not arrow expression) code"))}),a=a.enforceFreeContinueStatementErrors(FREE_CONTINUE),a=a.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),a=a.enforceFreeBreakStatementErrors(FREE_BREAK),a=a.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),a=a.enforceSuperCallExpressions(SUPERCALL_ERROR),a=a.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),a=a.enforceStrictErrors(),a}},{key:"reduceNewTargetExpression",value:function(a){return this.identity.observeNewTargetExpression(a)}},{key:"reduceObjectExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceObjectExpression",this).apply(this,arguments);c=c.enforceSuperCallExpressionsInConstructorMethod(SUPERCALL_ERROR);var h=a.properties.filter(function(d){return d.type==="DataProperty"&&d.name.type==="StaticPropertyName"&&d.name.value==="__proto__"});return h.slice(1).forEach(function(d){c=c.addError(new _earlyErrorState.EarlyError(d,"Duplicate __proto__ property in object literal not allowed"))}),c}},{key:"reduceUpdateExpression",value:function(){var a=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUpdateExpression",this).apply(this,arguments);return a=a.clearBoundNames(),a}},{key:"reduceUnaryExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceUnaryExpression",this).apply(this,arguments);return a.operator==="delete"&&a.operand.type==="IdentifierExpression"&&(c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Identifier expressions must not be deleted in strict mode"))),c}},{key:"reduceScript",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceScript",this).apply(this,arguments);return c=c.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),c=c.enforceConflictingLexicallyDeclaredNames(c.varDeclaredNames,DUPLICATE_BINDING),c.newTargetExpressions.forEach(function(h){c=c.addError(new _earlyErrorState.EarlyError(h,"new.target must be within function (but not arrow expression) code"))}),c=c.enforceFreeContinueStatementErrors(FREE_CONTINUE),c=c.enforceFreeLabeledContinueStatementErrors(UNBOUND_CONTINUE),c=c.enforceFreeBreakStatementErrors(FREE_BREAK),c=c.enforceFreeLabeledBreakStatementErrors(UNBOUND_BREAK),c=c.enforceSuperCallExpressions(SUPERCALL_ERROR),c=c.enforceSuperPropertyExpressions(SUPERPROPERTY_ERROR),isStrictFunctionBody(a)&&(c=c.enforceStrictErrors()),c}},{key:"reduceSetter",value:function(a,c){var h=c.name,d=c.param,g=c.body,_=a.param.type==="BindingIdentifier";d=d.observeLexicalDeclaration(),d=d.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),g=g.enforceConflictingLexicallyDeclaredNames(d.lexicallyDeclaredNames,DUPLICATE_BINDING),d=d.enforceSuperCallExpressions(SUPERCALL_ERROR),g=g.enforceSuperCallExpressions(SUPERCALL_ERROR),d=d.clearSuperPropertyExpressions(),g=g.clearSuperPropertyExpressions(),d=d.clearNewTargetExpressions(),g=g.clearNewTargetExpressions(),isStrictFunctionBody(a.body)&&(d=d.enforceStrictErrors(),g=g.enforceStrictErrors());var b=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceSetter",this).call(this,a,{name:h,param:d,body:g});return!_&&isStrictFunctionBody(a.body)&&(b=b.addError(new _earlyErrorState.EarlyError(a,'Functions with non-simple parameter lists may not contain a "use strict" directive'))),b=b.observeVarBoundary(),b}},{key:"reduceStaticMemberExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceStaticMemberExpression",this).apply(this,arguments);return a.object.type==="Super"&&(c=c.observeSuperPropertyExpression(a)),c}},{key:"reduceSwitchStatement",value:function(a,c){var h=c.discriminant,d=c.cases,g=this.append.apply(this,_toConsumableArray$3(d));g=g.functionDeclarationNamesAreLexical(),g=g.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),g=g.enforceConflictingLexicallyDeclaredNames(g.varDeclaredNames,DUPLICATE_BINDING),g=g.observeLexicalBoundary();var _=this.append(h,g);return _=_.clearFreeBreakStatements(),_}},{key:"reduceSwitchStatementWithDefault",value:function(a,c){var h=c.discriminant,d=c.preDefaultCases,g=c.defaultCase,_=c.postDefaultCases,b=this.append.apply(this,[g].concat(_toConsumableArray$3(d),_toConsumableArray$3(_)));b=b.functionDeclarationNamesAreLexical(),b=b.enforceDuplicateLexicallyDeclaredNames(DUPLICATE_BINDING),b=b.enforceConflictingLexicallyDeclaredNames(b.varDeclaredNames,DUPLICATE_BINDING),b=b.observeLexicalBoundary();var $=this.append(h,b);return $=$.clearFreeBreakStatements(),$}},{key:"reduceVariableDeclaration",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclaration",this).apply(this,arguments);switch(a.kind){case"const":case"let":{c=c.observeLexicalDeclaration(),c.lexicallyDeclaredNames.has("let")&&c.lexicallyDeclaredNames.get("let").forEach(function(h){c=c.addError(new _earlyErrorState.EarlyError(h,'Lexical declarations must not have a binding named "let"'))});break}case"var":c=c.observeVarDeclaration();break}return c}},{key:"reduceVariableDeclarationStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceVariableDeclarationStatement",this).apply(this,arguments);return a.declaration.kind==="const"&&a.declaration.declarators.forEach(function(h){h.init==null&&(c=c.addError(new _earlyErrorState.EarlyError(h,"Constant lexical declarations must have an initialiser")))}),c}},{key:"reduceWhileStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWhileStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a while statement must not be a labeled function declaration"))),c=c.clearFreeContinueStatements().clearFreeBreakStatements(),c}},{key:"reduceWithStatement",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceWithStatement",this).apply(this,arguments);return isLabelledFunction(a.body)&&(c=c.addError(new _earlyErrorState.EarlyError(a.body,"The body of a with statement must not be a labeled function declaration"))),c=c.addStrictError(new _earlyErrorState.EarlyError(a,"Strict mode code must not include a with statement")),c}},{key:"reduceYieldExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}},{key:"reduceYieldGeneratorExpression",value:function(a){var c=_get$1(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"reduceYieldGeneratorExpression",this).apply(this,arguments);return c=c.observeYieldExpression(a),c}}],[{key:"check",value:function(a){return(0,_shiftReducer2.default)(new e,a).errors}}]),e}(_shiftReducer$1.MonoidalReducer);(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.TokenType=o.TokenClass=o.Tokenizer=o.ParserWithLocation=o.GenericParser=o.EarlyErrorChecker=o.parseScriptWithLocation=o.parseModuleWithLocation=o.parseScript=o.parseModule=void 0;var e=function(){function nt(st,rt){for(var it=0;it1&&arguments[1]!==void 0?arguments[1]:{},at=it.earlyErrors,ot=at===void 0?!0:at,ut=new c.GenericParser(rt),ct=ut[nt]();if(ot){var ht=h.EarlyErrorChecker.check(ct);if(ht.length>0)throw new a.JsError(0,1,0,ht[0].message)}return ct}}function et(nt){return function(rt){var it=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},at=it.earlyErrors,ot=at===void 0?!0:at,ut=new j(rt),ct=ut[nt]();if(ot){var ht=h.EarlyErrorChecker.check(ct);if(ht.length>0){var lt=ht[0],pt=lt.node,ft=lt.message,gt=ut.locations.get(pt).start,yt=gt.offset,mt=gt.line,Et=gt.column;throw new a.JsError(yt,mt,Et,ft)}}return{tree:ct,locations:ut.locations,comments:ut.comments}}}o.parseModule=_e("parseModule");var tt=o.parseScript=_e("parseScript");o.parseModuleWithLocation=et("parseModule"),o.parseScriptWithLocation=et("parseScript"),o.default=tt,o.EarlyErrorChecker=h.EarlyErrorChecker,o.GenericParser=c.GenericParser,o.ParserWithLocation=j})(dist$7);var dist$2={};Object.defineProperty(dist$2,"__esModule",{value:!0});var _default=dist$2.default=function(){var o={},e={typeName:"Boolean"},s={typeName:"Number"},a={typeName:"String"};function c(Ut){return{typeName:"Maybe",argument:Ut}}function h(Ut){return{typeName:"List",argument:Ut}}function d(Ut){return{typeName:"Const",argument:Ut}}function g(){return{typeName:"Union",arguments:[].slice.call(arguments,0)}}var _={typeName:"Enum",values:["ArrayAssignmentTarget","ArrayBinding","ArrayExpression","ArrowExpression","AssignmentExpression","AssignmentTargetIdentifier","AssignmentTargetPropertyIdentifier","AssignmentTargetPropertyProperty","AssignmentTargetWithDefault","AwaitExpression","BinaryExpression","BindingIdentifier","BindingPropertyIdentifier","BindingPropertyProperty","BindingWithDefault","Block","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassDeclaration","ClassElement","ClassExpression","CompoundAssignmentExpression","ComputedMemberAssignmentTarget","ComputedMemberExpression","ComputedPropertyName","ConditionalExpression","ContinueStatement","DataProperty","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","Export","ExportAllFrom","ExportDefault","ExportFrom","ExportFromSpecifier","ExportLocalSpecifier","ExportLocals","ExpressionStatement","ForAwaitStatement","ForInStatement","ForOfStatement","ForStatement","FormalParameters","FunctionBody","FunctionDeclaration","FunctionExpression","Getter","IdentifierExpression","IfStatement","Import","ImportNamespace","ImportSpecifier","LabeledStatement","LiteralBooleanExpression","LiteralInfinityExpression","LiteralNullExpression","LiteralNumericExpression","LiteralRegExpExpression","LiteralStringExpression","Method","Module","NewExpression","NewTargetExpression","ObjectAssignmentTarget","ObjectBinding","ObjectExpression","ReturnStatement","Script","Setter","ShorthandProperty","SpreadElement","SpreadProperty","StaticMemberAssignmentTarget","StaticMemberExpression","StaticPropertyName","Super","SwitchCase","SwitchDefault","SwitchStatement","SwitchStatementWithDefault","TemplateElement","TemplateExpression","ThisExpression","ThrowStatement","TryCatchStatement","TryFinallyStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarationStatement","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","YieldGeneratorExpression"]},b={typeName:"Enum",values:["==","!=","===","!==","<","<=",">",">=","in","instanceof","<<",">>",">>>","+","-","*","/","%","**",",","||","&&","|","^","&"]},$={typeName:"Enum",values:["+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","|=","^=","&="]},j={typeName:"Enum",values:["+","-","!","~","typeof","void","delete"]},_e={typeName:"Enum",values:["++","--"]},et={typeName:"Enum",values:["var","let","const"]},tt=o.ArrayAssignmentTarget={},nt=o.ArrayBinding={},st=o.ArrayExpression={},rt=o.ArrowExpression={},it=o.AssignmentExpression={},at=o.AssignmentTargetIdentifier={},ot=o.AssignmentTargetPropertyIdentifier={},ut=o.AssignmentTargetPropertyProperty={},ct=o.AssignmentTargetWithDefault={},ht=o.AwaitExpression={},lt=o.BinaryExpression={},pt=o.BindingIdentifier={},ft=o.BindingPropertyIdentifier={},gt=o.BindingPropertyProperty={},yt=o.BindingWithDefault={},mt=o.Block={},Et=o.BlockStatement={},Ot=o.BreakStatement={},St=o.CallExpression={},At=o.CatchClause={},dt=o.ClassDeclaration={},Dt=o.ClassElement={},Ct=o.ClassExpression={},xt=o.CompoundAssignmentExpression={},Tt=o.ComputedMemberAssignmentTarget={},kt=o.ComputedMemberExpression={},_t=o.ComputedPropertyName={},Bt=o.ConditionalExpression={},Ft=o.ContinueStatement={},Lt=o.DataProperty={},tr=o.DebuggerStatement={},Wt=o.Directive={},rr=o.DoWhileStatement={},nr=o.EmptyStatement={},ir=o.Export={},sr=o.ExportAllFrom={},ar=o.ExportDefault={},or=o.ExportFrom={},Xt=o.ExportFromSpecifier={},Ht=o.ExportLocalSpecifier={},ur=o.ExportLocals={},lr=o.ExpressionStatement={},cr=o.ForAwaitStatement={},hr=o.ForInStatement={},fr=o.ForOfStatement={},dr=o.ForStatement={},Qt=o.FormalParameters={},It=o.FunctionBody={},zt=o.FunctionDeclaration={},Zt=o.FunctionExpression={},mr=o.Getter={},Gt=o.IdentifierExpression={},gr=o.IfStatement={},yr=o.Import={},Er=o.ImportNamespace={},Yt=o.ImportSpecifier={},Dr=o.LabeledStatement={},Or=o.LiteralBooleanExpression={},Cr=o.LiteralInfinityExpression={},Sr=o.LiteralNullExpression={},Ar=o.LiteralNumericExpression={},vr=o.LiteralRegExpExpression={},xr=o.LiteralStringExpression={},Tr=o.Method={},kr=o.Module={},_r=o.NewExpression={},br=o.NewTargetExpression={},Pt=o.ObjectAssignmentTarget={},wt=o.ObjectBinding={},Fr=o.ObjectExpression={},Br=o.ReturnStatement={},wr=o.Script={},Pr=o.Setter={},$r=o.ShorthandProperty={},Vt=o.SpreadElement={},Rr=o.SpreadProperty={},Ir=o.StaticMemberAssignmentTarget={},Nr=o.StaticMemberExpression={},Lr=o.StaticPropertyName={},Mt=o.Super={},qt=o.SwitchCase={},Kt=o.SwitchDefault={},Mr=o.SwitchStatement={},Qr=o.SwitchStatementWithDefault={},Jt=o.TemplateElement={},jr=o.TemplateExpression={},Wr=o.ThisExpression={},zr=o.ThrowStatement={},Gr=o.TryCatchStatement={},Vr=o.TryFinallyStatement={},qr=o.UnaryExpression={},Ur=o.UpdateExpression={},Nt=o.VariableDeclaration={},Xr=o.VariableDeclarationStatement={},er=o.VariableDeclarator={},Hr=o.WhileStatement={},Zr=o.WithStatement={},Yr=o.YieldExpression={},Kr=o.YieldGeneratorExpression={},an=g(kt,Nr),Jr=g(ot,ut);g(dt,Ct);var en=g(ir,sr,ar,or,ur),jt=g(_t,Lr);g(zt,Zt);var tn=g(yr,Er),un=g(rr,cr,hr,fr,dr,Hr),$t=g(Tt,Ir),rn=g(ft,gt),nn=g(mr,Tr,Pr),ln=g(kr,wr),cn=g(at,pt,Gt),hn=g(Lt,nn),vt=g(st,rt,it,ht,lt,St,Ct,xt,Bt,Zt,Gt,Or,Cr,Sr,Ar,vr,xr,an,_r,br,Fr,jr,Wr,qr,Ur,Yr,Kr),bt=g(Et,Ot,dt,Ft,tr,nr,lr,zt,gr,un,Dr,Br,Mr,Qr,zr,Gr,Vr,Xr,Zr),sn=g(hn,$r,Rr);return g(tt,nt,Jr,ct,rn,yt,mt,At,Dt,Wt,en,Xt,Ht,vt,Qt,It,tn,Yt,$t,Pt,wt,sn,ln,jt,Vt,bt,Mt,qt,Kt,Jt,Nt,er,cn),tt.typeName="ArrayAssignmentTarget",tt.fields=[{name:"type",type:d(_),value:"ArrayAssignmentTarget"},{name:"elements",type:h(c(g(ct,g(g(tt,Pt),g(at,$t)))))},{name:"rest",type:c(g(g(tt,Pt),g(at,$t)))}],nt.typeName="ArrayBinding",nt.fields=[{name:"type",type:d(_),value:"ArrayBinding"},{name:"elements",type:h(c(g(yt,g(pt,g(nt,wt)))))},{name:"rest",type:c(g(pt,g(nt,wt)))}],st.typeName="ArrayExpression",st.fields=[{name:"type",type:d(_),value:"ArrayExpression"},{name:"elements",type:h(c(g(vt,Vt)))}],rt.typeName="ArrowExpression",rt.fields=[{name:"type",type:d(_),value:"ArrowExpression"},{name:"isAsync",type:e},{name:"params",type:Qt},{name:"body",type:g(vt,It)}],it.typeName="AssignmentExpression",it.fields=[{name:"type",type:d(_),value:"AssignmentExpression"},{name:"binding",type:g(g(tt,Pt),g(at,$t))},{name:"expression",type:vt}],at.typeName="AssignmentTargetIdentifier",at.fields=[{name:"type",type:d(_),value:"AssignmentTargetIdentifier"},{name:"name",type:a}],ot.typeName="AssignmentTargetPropertyIdentifier",ot.fields=[{name:"type",type:d(_),value:"AssignmentTargetPropertyIdentifier"},{name:"binding",type:at},{name:"init",type:c(vt)}],ut.typeName="AssignmentTargetPropertyProperty",ut.fields=[{name:"type",type:d(_),value:"AssignmentTargetPropertyProperty"},{name:"name",type:jt},{name:"binding",type:g(ct,g(g(tt,Pt),g(at,$t)))}],ct.typeName="AssignmentTargetWithDefault",ct.fields=[{name:"type",type:d(_),value:"AssignmentTargetWithDefault"},{name:"binding",type:g(g(tt,Pt),g(at,$t))},{name:"init",type:vt}],ht.typeName="AwaitExpression",ht.fields=[{name:"type",type:d(_),value:"AwaitExpression"},{name:"expression",type:vt}],lt.typeName="BinaryExpression",lt.fields=[{name:"type",type:d(_),value:"BinaryExpression"},{name:"left",type:vt},{name:"operator",type:b},{name:"right",type:vt}],pt.typeName="BindingIdentifier",pt.fields=[{name:"type",type:d(_),value:"BindingIdentifier"},{name:"name",type:a}],ft.typeName="BindingPropertyIdentifier",ft.fields=[{name:"type",type:d(_),value:"BindingPropertyIdentifier"},{name:"binding",type:pt},{name:"init",type:c(vt)}],gt.typeName="BindingPropertyProperty",gt.fields=[{name:"type",type:d(_),value:"BindingPropertyProperty"},{name:"name",type:jt},{name:"binding",type:g(yt,g(pt,g(nt,wt)))}],yt.typeName="BindingWithDefault",yt.fields=[{name:"type",type:d(_),value:"BindingWithDefault"},{name:"binding",type:g(pt,g(nt,wt))},{name:"init",type:vt}],mt.typeName="Block",mt.fields=[{name:"type",type:d(_),value:"Block"},{name:"statements",type:h(bt)}],Et.typeName="BlockStatement",Et.fields=[{name:"type",type:d(_),value:"BlockStatement"},{name:"block",type:mt}],Ot.typeName="BreakStatement",Ot.fields=[{name:"type",type:d(_),value:"BreakStatement"},{name:"label",type:c(a)}],St.typeName="CallExpression",St.fields=[{name:"type",type:d(_),value:"CallExpression"},{name:"callee",type:g(vt,Mt)},{name:"arguments",type:h(g(vt,Vt))}],At.typeName="CatchClause",At.fields=[{name:"type",type:d(_),value:"CatchClause"},{name:"binding",type:g(pt,g(nt,wt))},{name:"body",type:mt}],dt.typeName="ClassDeclaration",dt.fields=[{name:"type",type:d(_),value:"ClassDeclaration"},{name:"name",type:pt},{name:"super",type:c(vt)},{name:"elements",type:h(Dt)}],Dt.typeName="ClassElement",Dt.fields=[{name:"type",type:d(_),value:"ClassElement"},{name:"isStatic",type:e},{name:"method",type:nn}],Ct.typeName="ClassExpression",Ct.fields=[{name:"type",type:d(_),value:"ClassExpression"},{name:"name",type:c(pt)},{name:"super",type:c(vt)},{name:"elements",type:h(Dt)}],xt.typeName="CompoundAssignmentExpression",xt.fields=[{name:"type",type:d(_),value:"CompoundAssignmentExpression"},{name:"binding",type:g(at,$t)},{name:"operator",type:$},{name:"expression",type:vt}],Tt.typeName="ComputedMemberAssignmentTarget",Tt.fields=[{name:"type",type:d(_),value:"ComputedMemberAssignmentTarget"},{name:"object",type:g(vt,Mt)},{name:"expression",type:vt}],kt.typeName="ComputedMemberExpression",kt.fields=[{name:"type",type:d(_),value:"ComputedMemberExpression"},{name:"object",type:g(vt,Mt)},{name:"expression",type:vt}],_t.typeName="ComputedPropertyName",_t.fields=[{name:"type",type:d(_),value:"ComputedPropertyName"},{name:"expression",type:vt}],Bt.typeName="ConditionalExpression",Bt.fields=[{name:"type",type:d(_),value:"ConditionalExpression"},{name:"test",type:vt},{name:"consequent",type:vt},{name:"alternate",type:vt}],Ft.typeName="ContinueStatement",Ft.fields=[{name:"type",type:d(_),value:"ContinueStatement"},{name:"label",type:c(a)}],Lt.typeName="DataProperty",Lt.fields=[{name:"type",type:d(_),value:"DataProperty"},{name:"name",type:jt},{name:"expression",type:vt}],tr.typeName="DebuggerStatement",tr.fields=[{name:"type",type:d(_),value:"DebuggerStatement"}],Wt.typeName="Directive",Wt.fields=[{name:"type",type:d(_),value:"Directive"},{name:"rawValue",type:a}],rr.typeName="DoWhileStatement",rr.fields=[{name:"type",type:d(_),value:"DoWhileStatement"},{name:"body",type:bt},{name:"test",type:vt}],nr.typeName="EmptyStatement",nr.fields=[{name:"type",type:d(_),value:"EmptyStatement"}],ir.typeName="Export",ir.fields=[{name:"type",type:d(_),value:"Export"},{name:"declaration",type:g(dt,zt,Nt)}],sr.typeName="ExportAllFrom",sr.fields=[{name:"type",type:d(_),value:"ExportAllFrom"},{name:"moduleSpecifier",type:a}],ar.typeName="ExportDefault",ar.fields=[{name:"type",type:d(_),value:"ExportDefault"},{name:"body",type:g(dt,vt,zt)}],or.typeName="ExportFrom",or.fields=[{name:"type",type:d(_),value:"ExportFrom"},{name:"namedExports",type:h(Xt)},{name:"moduleSpecifier",type:a}],Xt.typeName="ExportFromSpecifier",Xt.fields=[{name:"type",type:d(_),value:"ExportFromSpecifier"},{name:"name",type:a},{name:"exportedName",type:c(a)}],Ht.typeName="ExportLocalSpecifier",Ht.fields=[{name:"type",type:d(_),value:"ExportLocalSpecifier"},{name:"name",type:Gt},{name:"exportedName",type:c(a)}],ur.typeName="ExportLocals",ur.fields=[{name:"type",type:d(_),value:"ExportLocals"},{name:"namedExports",type:h(Ht)}],lr.typeName="ExpressionStatement",lr.fields=[{name:"type",type:d(_),value:"ExpressionStatement"},{name:"expression",type:vt}],cr.typeName="ForAwaitStatement",cr.fields=[{name:"type",type:d(_),value:"ForAwaitStatement"},{name:"left",type:g(g(g(tt,Pt),g(at,$t)),Nt)},{name:"right",type:vt},{name:"body",type:bt}],hr.typeName="ForInStatement",hr.fields=[{name:"type",type:d(_),value:"ForInStatement"},{name:"left",type:g(g(g(tt,Pt),g(at,$t)),Nt)},{name:"right",type:vt},{name:"body",type:bt}],fr.typeName="ForOfStatement",fr.fields=[{name:"type",type:d(_),value:"ForOfStatement"},{name:"left",type:g(g(g(tt,Pt),g(at,$t)),Nt)},{name:"right",type:vt},{name:"body",type:bt}],dr.typeName="ForStatement",dr.fields=[{name:"type",type:d(_),value:"ForStatement"},{name:"init",type:c(g(vt,Nt))},{name:"test",type:c(vt)},{name:"update",type:c(vt)},{name:"body",type:bt}],Qt.typeName="FormalParameters",Qt.fields=[{name:"type",type:d(_),value:"FormalParameters"},{name:"items",type:h(g(yt,g(pt,g(nt,wt))))},{name:"rest",type:c(g(pt,g(nt,wt)))}],It.typeName="FunctionBody",It.fields=[{name:"type",type:d(_),value:"FunctionBody"},{name:"directives",type:h(Wt)},{name:"statements",type:h(bt)}],zt.typeName="FunctionDeclaration",zt.fields=[{name:"type",type:d(_),value:"FunctionDeclaration"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:pt},{name:"params",type:Qt},{name:"body",type:It}],Zt.typeName="FunctionExpression",Zt.fields=[{name:"type",type:d(_),value:"FunctionExpression"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:c(pt)},{name:"params",type:Qt},{name:"body",type:It}],mr.typeName="Getter",mr.fields=[{name:"type",type:d(_),value:"Getter"},{name:"name",type:jt},{name:"body",type:It}],Gt.typeName="IdentifierExpression",Gt.fields=[{name:"type",type:d(_),value:"IdentifierExpression"},{name:"name",type:a}],gr.typeName="IfStatement",gr.fields=[{name:"type",type:d(_),value:"IfStatement"},{name:"test",type:vt},{name:"consequent",type:bt},{name:"alternate",type:c(bt)}],yr.typeName="Import",yr.fields=[{name:"type",type:d(_),value:"Import"},{name:"defaultBinding",type:c(pt)},{name:"namedImports",type:h(Yt)},{name:"moduleSpecifier",type:a}],Er.typeName="ImportNamespace",Er.fields=[{name:"type",type:d(_),value:"ImportNamespace"},{name:"defaultBinding",type:c(pt)},{name:"namespaceBinding",type:pt},{name:"moduleSpecifier",type:a}],Yt.typeName="ImportSpecifier",Yt.fields=[{name:"type",type:d(_),value:"ImportSpecifier"},{name:"name",type:c(a)},{name:"binding",type:pt}],Dr.typeName="LabeledStatement",Dr.fields=[{name:"type",type:d(_),value:"LabeledStatement"},{name:"label",type:a},{name:"body",type:bt}],Or.typeName="LiteralBooleanExpression",Or.fields=[{name:"type",type:d(_),value:"LiteralBooleanExpression"},{name:"value",type:e}],Cr.typeName="LiteralInfinityExpression",Cr.fields=[{name:"type",type:d(_),value:"LiteralInfinityExpression"}],Sr.typeName="LiteralNullExpression",Sr.fields=[{name:"type",type:d(_),value:"LiteralNullExpression"}],Ar.typeName="LiteralNumericExpression",Ar.fields=[{name:"type",type:d(_),value:"LiteralNumericExpression"},{name:"value",type:s}],vr.typeName="LiteralRegExpExpression",vr.fields=[{name:"type",type:d(_),value:"LiteralRegExpExpression"},{name:"pattern",type:a},{name:"global",type:e},{name:"ignoreCase",type:e},{name:"multiLine",type:e},{name:"dotAll",type:e},{name:"unicode",type:e},{name:"sticky",type:e}],xr.typeName="LiteralStringExpression",xr.fields=[{name:"type",type:d(_),value:"LiteralStringExpression"},{name:"value",type:a}],Tr.typeName="Method",Tr.fields=[{name:"type",type:d(_),value:"Method"},{name:"isAsync",type:e},{name:"isGenerator",type:e},{name:"name",type:jt},{name:"params",type:Qt},{name:"body",type:It}],kr.typeName="Module",kr.fields=[{name:"type",type:d(_),value:"Module"},{name:"directives",type:h(Wt)},{name:"items",type:h(g(en,tn,bt))}],_r.typeName="NewExpression",_r.fields=[{name:"type",type:d(_),value:"NewExpression"},{name:"callee",type:vt},{name:"arguments",type:h(g(vt,Vt))}],br.typeName="NewTargetExpression",br.fields=[{name:"type",type:d(_),value:"NewTargetExpression"}],Pt.typeName="ObjectAssignmentTarget",Pt.fields=[{name:"type",type:d(_),value:"ObjectAssignmentTarget"},{name:"properties",type:h(Jr)},{name:"rest",type:c(g(g(tt,Pt),g(at,$t)))}],wt.typeName="ObjectBinding",wt.fields=[{name:"type",type:d(_),value:"ObjectBinding"},{name:"properties",type:h(rn)},{name:"rest",type:c(g(pt,g(nt,wt)))}],Fr.typeName="ObjectExpression",Fr.fields=[{name:"type",type:d(_),value:"ObjectExpression"},{name:"properties",type:h(sn)}],Br.typeName="ReturnStatement",Br.fields=[{name:"type",type:d(_),value:"ReturnStatement"},{name:"expression",type:c(vt)}],wr.typeName="Script",wr.fields=[{name:"type",type:d(_),value:"Script"},{name:"directives",type:h(Wt)},{name:"statements",type:h(bt)}],Pr.typeName="Setter",Pr.fields=[{name:"type",type:d(_),value:"Setter"},{name:"name",type:jt},{name:"param",type:g(yt,g(pt,g(nt,wt)))},{name:"body",type:It}],$r.typeName="ShorthandProperty",$r.fields=[{name:"type",type:d(_),value:"ShorthandProperty"},{name:"name",type:Gt}],Vt.typeName="SpreadElement",Vt.fields=[{name:"type",type:d(_),value:"SpreadElement"},{name:"expression",type:vt}],Rr.typeName="SpreadProperty",Rr.fields=[{name:"type",type:d(_),value:"SpreadProperty"},{name:"expression",type:vt}],Ir.typeName="StaticMemberAssignmentTarget",Ir.fields=[{name:"type",type:d(_),value:"StaticMemberAssignmentTarget"},{name:"object",type:g(vt,Mt)},{name:"property",type:a}],Nr.typeName="StaticMemberExpression",Nr.fields=[{name:"type",type:d(_),value:"StaticMemberExpression"},{name:"object",type:g(vt,Mt)},{name:"property",type:a}],Lr.typeName="StaticPropertyName",Lr.fields=[{name:"type",type:d(_),value:"StaticPropertyName"},{name:"value",type:a}],Mt.typeName="Super",Mt.fields=[{name:"type",type:d(_),value:"Super"}],qt.typeName="SwitchCase",qt.fields=[{name:"type",type:d(_),value:"SwitchCase"},{name:"test",type:vt},{name:"consequent",type:h(bt)}],Kt.typeName="SwitchDefault",Kt.fields=[{name:"type",type:d(_),value:"SwitchDefault"},{name:"consequent",type:h(bt)}],Mr.typeName="SwitchStatement",Mr.fields=[{name:"type",type:d(_),value:"SwitchStatement"},{name:"discriminant",type:vt},{name:"cases",type:h(qt)}],Qr.typeName="SwitchStatementWithDefault",Qr.fields=[{name:"type",type:d(_),value:"SwitchStatementWithDefault"},{name:"discriminant",type:vt},{name:"preDefaultCases",type:h(qt)},{name:"defaultCase",type:Kt},{name:"postDefaultCases",type:h(qt)}],Jt.typeName="TemplateElement",Jt.fields=[{name:"type",type:d(_),value:"TemplateElement"},{name:"rawValue",type:a}],jr.typeName="TemplateExpression",jr.fields=[{name:"type",type:d(_),value:"TemplateExpression"},{name:"tag",type:c(vt)},{name:"elements",type:h(g(vt,Jt))}],Wr.typeName="ThisExpression",Wr.fields=[{name:"type",type:d(_),value:"ThisExpression"}],zr.typeName="ThrowStatement",zr.fields=[{name:"type",type:d(_),value:"ThrowStatement"},{name:"expression",type:vt}],Gr.typeName="TryCatchStatement",Gr.fields=[{name:"type",type:d(_),value:"TryCatchStatement"},{name:"body",type:mt},{name:"catchClause",type:At}],Vr.typeName="TryFinallyStatement",Vr.fields=[{name:"type",type:d(_),value:"TryFinallyStatement"},{name:"body",type:mt},{name:"catchClause",type:c(At)},{name:"finalizer",type:mt}],qr.typeName="UnaryExpression",qr.fields=[{name:"type",type:d(_),value:"UnaryExpression"},{name:"operator",type:j},{name:"operand",type:vt}],Ur.typeName="UpdateExpression",Ur.fields=[{name:"type",type:d(_),value:"UpdateExpression"},{name:"isPrefix",type:e},{name:"operator",type:_e},{name:"operand",type:g(at,$t)}],Nt.typeName="VariableDeclaration",Nt.fields=[{name:"type",type:d(_),value:"VariableDeclaration"},{name:"kind",type:et},{name:"declarators",type:h(er)}],Xr.typeName="VariableDeclarationStatement",Xr.fields=[{name:"type",type:d(_),value:"VariableDeclarationStatement"},{name:"declaration",type:Nt}],er.typeName="VariableDeclarator",er.fields=[{name:"type",type:d(_),value:"VariableDeclarator"},{name:"binding",type:g(pt,g(nt,wt))},{name:"init",type:c(vt)}],Hr.typeName="WhileStatement",Hr.fields=[{name:"type",type:d(_),value:"WhileStatement"},{name:"test",type:vt},{name:"body",type:bt}],Zr.typeName="WithStatement",Zr.fields=[{name:"type",type:d(_),value:"WithStatement"},{name:"object",type:vt},{name:"body",type:bt}],Yr.typeName="YieldExpression",Yr.fields=[{name:"type",type:d(_),value:"YieldExpression"},{name:"expression",type:c(vt)}],Kr.typeName="YieldGeneratorExpression",Kr.fields=[{name:"type",type:d(_),value:"YieldGeneratorExpression"},{name:"expression",type:vt}],o}(),estraverse$1={};(function(o){(function e(s){var a,c,h,d,g,_;function b(ut){var ct={},ht,lt;for(ht in ut)ut.hasOwnProperty(ht)&&(lt=ut[ht],typeof lt=="object"&<!==null?ct[ht]=b(lt):ct[ht]=lt);return ct}function $(ut,ct){var ht,lt,pt,ft;for(lt=ut.length,pt=0;lt;)ht=lt>>>1,ft=pt+ht,ct(ut[ft])?lt=ht:(pt=ft+1,lt-=ht+1);return pt}a={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ChainExpression:"ChainExpression",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ComprehensionBlock:"ComprehensionBlock",ComprehensionExpression:"ComprehensionExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GeneratorExpression:"GeneratorExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportExpression:"ImportExpression",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",ModuleSpecifier:"ModuleSpecifier",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",PrivateIdentifier:"PrivateIdentifier",Program:"Program",Property:"Property",PropertyDefinition:"PropertyDefinition",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},h={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ComprehensionBlock:["left","right"],ComprehensionExpression:["blocks","filter","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],GeneratorExpression:["blocks","filter","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportExpression:["source"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],ModuleSpecifier:[],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},d={},g={},_={},c={Break:d,Skip:g,Remove:_};function j(ut,ct){this.parent=ut,this.key=ct}j.prototype.replace=function(ct){this.parent[this.key]=ct},j.prototype.remove=function(){return Array.isArray(this.parent)?(this.parent.splice(this.key,1),!0):(this.replace(null),!1)};function _e(ut,ct,ht,lt){this.node=ut,this.path=ct,this.wrap=ht,this.ref=lt}function et(){}et.prototype.path=function(){var ct,ht,lt,pt,ft,gt;function yt(mt,Et){if(Array.isArray(Et))for(lt=0,pt=Et.length;lt=0;--ht)if(ut[ht].node===ct)return!0;return!1}et.prototype.traverse=function(ct,ht){var lt,pt,ft,gt,yt,mt,Et,Ot,St,At,dt,Dt;for(this.__initialize(ct,ht),Dt={},lt=this.__worklist,pt=this.__leavelist,lt.push(new _e(ct,null,null,null)),pt.push(new _e(null,null,null,null));lt.length;){if(ft=lt.pop(),ft===Dt){if(ft=pt.pop(),mt=this.__execute(ht.leave,ft),this.__state===d||mt===d)return;continue}if(ft.node){if(mt=this.__execute(ht.enter,ft),this.__state===d||mt===d)return;if(lt.push(Dt),pt.push(ft),this.__state===g||mt===g)continue;if(gt=ft.node,yt=gt.type||ft.wrap,At=this.__keys[yt],!At)if(this.__fallback)At=this.__fallback(gt);else throw new Error("Unknown node type "+yt+".");for(Ot=At.length;(Ot-=1)>=0;)if(Et=At[Ot],dt=gt[Et],!!dt){if(Array.isArray(dt)){for(St=dt.length;(St-=1)>=0;)if(!!dt[St]&&!st(pt,dt[St])){if(nt(yt,At[Ot]))ft=new _e(dt[St],[Et,St],"Property",null);else if(tt(dt[St]))ft=new _e(dt[St],[Et,St],null,null);else continue;lt.push(ft)}}else if(tt(dt)){if(st(pt,dt))continue;lt.push(new _e(dt,Et,null,null))}}}}},et.prototype.replace=function(ct,ht){var lt,pt,ft,gt,yt,mt,Et,Ot,St,At,dt,Dt,Ct;function xt(Tt){var kt,_t,Bt,Ft;if(Tt.ref.remove()){for(_t=Tt.ref.key,Ft=Tt.ref.parent,kt=lt.length;kt--;)if(Bt=lt[kt],Bt.ref&&Bt.ref.parent===Ft){if(Bt.ref.key<_t)break;--Bt.ref.key}}}for(this.__initialize(ct,ht),dt={},lt=this.__worklist,pt=this.__leavelist,Dt={root:ct},mt=new _e(ct,null,null,new j(Dt,"root")),lt.push(mt),pt.push(mt);lt.length;){if(mt=lt.pop(),mt===dt){if(mt=pt.pop(),yt=this.__execute(ht.leave,mt),yt!==void 0&&yt!==d&&yt!==g&&yt!==_&&mt.ref.replace(yt),(this.__state===_||yt===_)&&xt(mt),this.__state===d||yt===d)return Dt.root;continue}if(yt=this.__execute(ht.enter,mt),yt!==void 0&&yt!==d&&yt!==g&&yt!==_&&(mt.ref.replace(yt),mt.node=yt),(this.__state===_||yt===_)&&(xt(mt),mt.node=null),this.__state===d||yt===d)return Dt.root;if(ft=mt.node,!!ft&&(lt.push(dt),pt.push(mt),!(this.__state===g||yt===g))){if(gt=ft.type||mt.wrap,St=this.__keys[gt],!St)if(this.__fallback)St=this.__fallback(ft);else throw new Error("Unknown node type "+gt+".");for(Et=St.length;(Et-=1)>=0;)if(Ct=St[Et],At=ft[Ct],!!At)if(Array.isArray(At)){for(Ot=At.length;(Ot-=1)>=0;)if(!!At[Ot]){if(nt(gt,St[Et]))mt=new _e(At[Ot],[Ct,Ot],"Property",new j(At,Ot));else if(tt(At[Ot]))mt=new _e(At[Ot],[Ct,Ot],null,new j(At,Ot));else continue;lt.push(mt)}}else tt(At)&<.push(new _e(At,Ct,null,new j(ft,Ct)))}}return Dt.root};function rt(ut,ct){var ht=new et;return ht.traverse(ut,ct)}function it(ut,ct){var ht=new et;return ht.replace(ut,ct)}function at(ut,ct){var ht;return ht=$(ct,function(pt){return pt.range[0]>ut.range[0]}),ut.extendedRange=[ut.range[0],ut.range[1]],ht!==ct.length&&(ut.extendedRange[1]=ct[ht].range[0]),ht-=1,ht>=0&&(ut.extendedRange[0]=ct[ht].range[1]),ut}function ot(ut,ct,ht){var lt=[],pt,ft,gt,yt;if(!ut.range)throw new Error("attachComments needs range information");if(!ht.length){if(ct.length){for(gt=0,ft=ct.length;gtmt.range[0]));)Et.extendedRange[1]===mt.range[0]?(mt.leadingComments||(mt.leadingComments=[]),mt.leadingComments.push(Et),lt.splice(yt,1)):yt+=1;if(yt===lt.length)return c.Break;if(lt[yt].extendedRange[0]>mt.range[1])return c.Skip}}),yt=0,rt(ut,{leave:function(mt){for(var Et;ytmt.range[1])return c.Skip}}),ut}return s.Syntax=a,s.traverse=rt,s.replace=it,s.attachComments=ot,s.VisitorKeys=h,s.VisitorOption=c,s.Controller=et,s.cloneEnvironment=function(){return e({})},s})(o)})(estraverse$1);const Spec=_default.default||_default,estraverse=estraverse$1.cloneEnvironment();Object.keys(estraverse.Syntax).filter(o=>o!=="Property").forEach(o=>{delete estraverse.Syntax[o],delete estraverse.VisitorKeys[o]});Object.assign(estraverse.Syntax,Object.keys(Spec).reduce((o,e)=>(o[e]=e,o),{}));Object.assign(estraverse.VisitorKeys,Object.keys(Spec).reduce((o,e)=>(o[e]=Spec[e].fields.map(s=>s.name),o),{}));var dist$1={},StaticMemberExpression_1,ReturnStatement_1,LiteralStringExpression_1,LiteralNumericExpression_1,IdentifierExpression_1,CallExpression_1,ArrayExpression_1;Object.defineProperty(dist$1,"__esModule",{value:!0});function _classCallCheck$5(o,e){if(!(o instanceof e))throw new TypeError("Cannot call a class as a function")}dist$1.ArrayAssignmentTarget=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayAssignmentTarget",this.elements=s,this.rest=a};dist$1.ArrayBinding=function o(e){var s=e.elements,a=e.rest;_classCallCheck$5(this,o),this.type="ArrayBinding",this.elements=s,this.rest=a};ArrayExpression_1=dist$1.ArrayExpression=function o(e){var s=e.elements;_classCallCheck$5(this,o),this.type="ArrayExpression",this.elements=s};dist$1.ArrowExpression=function o(e){var s=e.isAsync,a=e.params,c=e.body;_classCallCheck$5(this,o),this.type="ArrowExpression",this.isAsync=s,this.params=a,this.body=c};dist$1.AssignmentExpression=function o(e){var s=e.binding,a=e.expression;_classCallCheck$5(this,o),this.type="AssignmentExpression",this.binding=s,this.expression=a};dist$1.AssignmentTargetIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="AssignmentTargetIdentifier",this.name=s};dist$1.AssignmentTargetPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyIdentifier",this.binding=s,this.init=a};dist$1.AssignmentTargetPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="AssignmentTargetPropertyProperty",this.name=s,this.binding=a};dist$1.AssignmentTargetWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="AssignmentTargetWithDefault",this.binding=s,this.init=a};dist$1.AwaitExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="AwaitExpression",this.expression=s};dist$1.BinaryExpression=function o(e){var s=e.left,a=e.operator,c=e.right;_classCallCheck$5(this,o),this.type="BinaryExpression",this.left=s,this.operator=a,this.right=c};dist$1.BindingIdentifier=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="BindingIdentifier",this.name=s};dist$1.BindingPropertyIdentifier=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingPropertyIdentifier",this.binding=s,this.init=a};dist$1.BindingPropertyProperty=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="BindingPropertyProperty",this.name=s,this.binding=a};dist$1.BindingWithDefault=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="BindingWithDefault",this.binding=s,this.init=a};dist$1.Block=function o(e){var s=e.statements;_classCallCheck$5(this,o),this.type="Block",this.statements=s};dist$1.BlockStatement=function o(e){var s=e.block;_classCallCheck$5(this,o),this.type="BlockStatement",this.block=s};dist$1.BreakStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="BreakStatement",this.label=s};CallExpression_1=dist$1.CallExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="CallExpression",this.callee=s,this.arguments=a};dist$1.CatchClause=function o(e){var s=e.binding,a=e.body;_classCallCheck$5(this,o),this.type="CatchClause",this.binding=s,this.body=a};dist$1.ClassDeclaration=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassDeclaration",this.name=s,this.super=a,this.elements=c};dist$1.ClassElement=function o(e){var s=e.isStatic,a=e.method;_classCallCheck$5(this,o),this.type="ClassElement",this.isStatic=s,this.method=a};dist$1.ClassExpression=function o(e){var s=e.name,a=e.super,c=e.elements;_classCallCheck$5(this,o),this.type="ClassExpression",this.name=s,this.super=a,this.elements=c};dist$1.CompoundAssignmentExpression=function o(e){var s=e.binding,a=e.operator,c=e.expression;_classCallCheck$5(this,o),this.type="CompoundAssignmentExpression",this.binding=s,this.operator=a,this.expression=c};dist$1.ComputedMemberAssignmentTarget=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberAssignmentTarget",this.object=s,this.expression=a};dist$1.ComputedMemberExpression=function o(e){var s=e.object,a=e.expression;_classCallCheck$5(this,o),this.type="ComputedMemberExpression",this.object=s,this.expression=a};dist$1.ComputedPropertyName=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ComputedPropertyName",this.expression=s};dist$1.ConditionalExpression=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="ConditionalExpression",this.test=s,this.consequent=a,this.alternate=c};dist$1.ContinueStatement=function o(e){var s=e.label;_classCallCheck$5(this,o),this.type="ContinueStatement",this.label=s};dist$1.DataProperty=function o(e){var s=e.name,a=e.expression;_classCallCheck$5(this,o),this.type="DataProperty",this.name=s,this.expression=a};dist$1.DebuggerStatement=function o(){_classCallCheck$5(this,o),this.type="DebuggerStatement"};dist$1.Directive=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="Directive",this.rawValue=s};dist$1.DoWhileStatement=function o(e){var s=e.body,a=e.test;_classCallCheck$5(this,o),this.type="DoWhileStatement",this.body=s,this.test=a};dist$1.EmptyStatement=function o(){_classCallCheck$5(this,o),this.type="EmptyStatement"};dist$1.Export=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="Export",this.declaration=s};dist$1.ExportAllFrom=function o(e){var s=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportAllFrom",this.moduleSpecifier=s};dist$1.ExportDefault=function o(e){var s=e.body;_classCallCheck$5(this,o),this.type="ExportDefault",this.body=s};dist$1.ExportFrom=function o(e){var s=e.namedExports,a=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ExportFrom",this.namedExports=s,this.moduleSpecifier=a};dist$1.ExportFromSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportFromSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocalSpecifier=function o(e){var s=e.name,a=e.exportedName;_classCallCheck$5(this,o),this.type="ExportLocalSpecifier",this.name=s,this.exportedName=a};dist$1.ExportLocals=function o(e){var s=e.namedExports;_classCallCheck$5(this,o),this.type="ExportLocals",this.namedExports=s};dist$1.ExpressionStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ExpressionStatement",this.expression=s};dist$1.ForAwaitStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForAwaitStatement",this.left=s,this.right=a,this.body=c};dist$1.ForInStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForInStatement",this.left=s,this.right=a,this.body=c};dist$1.ForOfStatement=function o(e){var s=e.left,a=e.right,c=e.body;_classCallCheck$5(this,o),this.type="ForOfStatement",this.left=s,this.right=a,this.body=c};dist$1.ForStatement=function o(e){var s=e.init,a=e.test,c=e.update,h=e.body;_classCallCheck$5(this,o),this.type="ForStatement",this.init=s,this.test=a,this.update=c,this.body=h};dist$1.FormalParameters=function o(e){var s=e.items,a=e.rest;_classCallCheck$5(this,o),this.type="FormalParameters",this.items=s,this.rest=a};dist$1.FunctionBody=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="FunctionBody",this.directives=s,this.statements=a};dist$1.FunctionDeclaration=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,h=e.params,d=e.body;_classCallCheck$5(this,o),this.type="FunctionDeclaration",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=h,this.body=d};dist$1.FunctionExpression=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,h=e.params,d=e.body;_classCallCheck$5(this,o),this.type="FunctionExpression",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=h,this.body=d};dist$1.Getter=function o(e){var s=e.name,a=e.body;_classCallCheck$5(this,o),this.type="Getter",this.name=s,this.body=a};IdentifierExpression_1=dist$1.IdentifierExpression=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="IdentifierExpression",this.name=s};dist$1.IfStatement=function o(e){var s=e.test,a=e.consequent,c=e.alternate;_classCallCheck$5(this,o),this.type="IfStatement",this.test=s,this.consequent=a,this.alternate=c};dist$1.Import=function o(e){var s=e.defaultBinding,a=e.namedImports,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="Import",this.defaultBinding=s,this.namedImports=a,this.moduleSpecifier=c};dist$1.ImportNamespace=function o(e){var s=e.defaultBinding,a=e.namespaceBinding,c=e.moduleSpecifier;_classCallCheck$5(this,o),this.type="ImportNamespace",this.defaultBinding=s,this.namespaceBinding=a,this.moduleSpecifier=c};dist$1.ImportSpecifier=function o(e){var s=e.name,a=e.binding;_classCallCheck$5(this,o),this.type="ImportSpecifier",this.name=s,this.binding=a};dist$1.LabeledStatement=function o(e){var s=e.label,a=e.body;_classCallCheck$5(this,o),this.type="LabeledStatement",this.label=s,this.body=a};dist$1.LiteralBooleanExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralBooleanExpression",this.value=s};dist$1.LiteralInfinityExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralInfinityExpression"};dist$1.LiteralNullExpression=function o(){_classCallCheck$5(this,o),this.type="LiteralNullExpression"};LiteralNumericExpression_1=dist$1.LiteralNumericExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralNumericExpression",this.value=s};dist$1.LiteralRegExpExpression=function o(e){var s=e.pattern,a=e.global,c=e.ignoreCase,h=e.multiLine,d=e.dotAll,g=e.unicode,_=e.sticky;_classCallCheck$5(this,o),this.type="LiteralRegExpExpression",this.pattern=s,this.global=a,this.ignoreCase=c,this.multiLine=h,this.dotAll=d,this.unicode=g,this.sticky=_};LiteralStringExpression_1=dist$1.LiteralStringExpression=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="LiteralStringExpression",this.value=s};dist$1.Method=function o(e){var s=e.isAsync,a=e.isGenerator,c=e.name,h=e.params,d=e.body;_classCallCheck$5(this,o),this.type="Method",this.isAsync=s,this.isGenerator=a,this.name=c,this.params=h,this.body=d};dist$1.Module=function o(e){var s=e.directives,a=e.items;_classCallCheck$5(this,o),this.type="Module",this.directives=s,this.items=a};dist$1.NewExpression=function o(e){var s=e.callee,a=e.arguments;_classCallCheck$5(this,o),this.type="NewExpression",this.callee=s,this.arguments=a};dist$1.NewTargetExpression=function o(){_classCallCheck$5(this,o),this.type="NewTargetExpression"};dist$1.ObjectAssignmentTarget=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectAssignmentTarget",this.properties=s,this.rest=a};dist$1.ObjectBinding=function o(e){var s=e.properties,a=e.rest;_classCallCheck$5(this,o),this.type="ObjectBinding",this.properties=s,this.rest=a};dist$1.ObjectExpression=function o(e){var s=e.properties;_classCallCheck$5(this,o),this.type="ObjectExpression",this.properties=s};ReturnStatement_1=dist$1.ReturnStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ReturnStatement",this.expression=s};dist$1.Script=function o(e){var s=e.directives,a=e.statements;_classCallCheck$5(this,o),this.type="Script",this.directives=s,this.statements=a};dist$1.Setter=function o(e){var s=e.name,a=e.param,c=e.body;_classCallCheck$5(this,o),this.type="Setter",this.name=s,this.param=a,this.body=c};dist$1.ShorthandProperty=function o(e){var s=e.name;_classCallCheck$5(this,o),this.type="ShorthandProperty",this.name=s};dist$1.SpreadElement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadElement",this.expression=s};dist$1.SpreadProperty=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="SpreadProperty",this.expression=s};dist$1.StaticMemberAssignmentTarget=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberAssignmentTarget",this.object=s,this.property=a};StaticMemberExpression_1=dist$1.StaticMemberExpression=function o(e){var s=e.object,a=e.property;_classCallCheck$5(this,o),this.type="StaticMemberExpression",this.object=s,this.property=a};dist$1.StaticPropertyName=function o(e){var s=e.value;_classCallCheck$5(this,o),this.type="StaticPropertyName",this.value=s};dist$1.Super=function o(){_classCallCheck$5(this,o),this.type="Super"};dist$1.SwitchCase=function o(e){var s=e.test,a=e.consequent;_classCallCheck$5(this,o),this.type="SwitchCase",this.test=s,this.consequent=a};dist$1.SwitchDefault=function o(e){var s=e.consequent;_classCallCheck$5(this,o),this.type="SwitchDefault",this.consequent=s};dist$1.SwitchStatement=function o(e){var s=e.discriminant,a=e.cases;_classCallCheck$5(this,o),this.type="SwitchStatement",this.discriminant=s,this.cases=a};dist$1.SwitchStatementWithDefault=function o(e){var s=e.discriminant,a=e.preDefaultCases,c=e.defaultCase,h=e.postDefaultCases;_classCallCheck$5(this,o),this.type="SwitchStatementWithDefault",this.discriminant=s,this.preDefaultCases=a,this.defaultCase=c,this.postDefaultCases=h};dist$1.TemplateElement=function o(e){var s=e.rawValue;_classCallCheck$5(this,o),this.type="TemplateElement",this.rawValue=s};dist$1.TemplateExpression=function o(e){var s=e.tag,a=e.elements;_classCallCheck$5(this,o),this.type="TemplateExpression",this.tag=s,this.elements=a};dist$1.ThisExpression=function o(){_classCallCheck$5(this,o),this.type="ThisExpression"};dist$1.ThrowStatement=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="ThrowStatement",this.expression=s};dist$1.TryCatchStatement=function o(e){var s=e.body,a=e.catchClause;_classCallCheck$5(this,o),this.type="TryCatchStatement",this.body=s,this.catchClause=a};dist$1.TryFinallyStatement=function o(e){var s=e.body,a=e.catchClause,c=e.finalizer;_classCallCheck$5(this,o),this.type="TryFinallyStatement",this.body=s,this.catchClause=a,this.finalizer=c};dist$1.UnaryExpression=function o(e){var s=e.operator,a=e.operand;_classCallCheck$5(this,o),this.type="UnaryExpression",this.operator=s,this.operand=a};dist$1.UpdateExpression=function o(e){var s=e.isPrefix,a=e.operator,c=e.operand;_classCallCheck$5(this,o),this.type="UpdateExpression",this.isPrefix=s,this.operator=a,this.operand=c};dist$1.VariableDeclaration=function o(e){var s=e.kind,a=e.declarators;_classCallCheck$5(this,o),this.type="VariableDeclaration",this.kind=s,this.declarators=a};dist$1.VariableDeclarationStatement=function o(e){var s=e.declaration;_classCallCheck$5(this,o),this.type="VariableDeclarationStatement",this.declaration=s};dist$1.VariableDeclarator=function o(e){var s=e.binding,a=e.init;_classCallCheck$5(this,o),this.type="VariableDeclarator",this.binding=s,this.init=a};dist$1.WhileStatement=function o(e){var s=e.test,a=e.body;_classCallCheck$5(this,o),this.type="WhileStatement",this.test=s,this.body=a};dist$1.WithStatement=function o(e){var s=e.object,a=e.body;_classCallCheck$5(this,o),this.type="WithStatement",this.object=s,this.body=a};dist$1.YieldExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldExpression",this.expression=s};dist$1.YieldGeneratorExpression=function o(e){var s=e.expression;_classCallCheck$5(this,o),this.type="YieldGeneratorExpression",this.expression=s};var dist={},minimalCodegen={};/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty,propIsEnumerable=Object.prototype.propertyIsEnumerable;function toObject(o){if(o==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(o)}function shouldUseNative(){try{if(!Object.assign)return!1;var o=new String("abc");if(o[5]="de",Object.getOwnPropertyNames(o)[0]==="5")return!1;for(var e={},s=0;s<10;s++)e["_"+String.fromCharCode(s)]=s;var a=Object.getOwnPropertyNames(e).map(function(h){return e[h]});if(a.join("")!=="0123456789")return!1;var c={};return"abcdefghijklmnopqrst".split("").forEach(function(h){c[h]=h}),Object.keys(Object.assign({},c)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var objectAssign=shouldUseNative()?Object.assign:function(o,e){for(var s,a=toObject(o),c,h=1;h=48&&st<=55}s=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];function b(st){return st===32||st===9||st===11||st===12||st===160||st>=5760&&s.indexOf(st)>=0}function $(st){return st===10||st===13||st===8232||st===8233}function j(st){if(st<=65535)return String.fromCharCode(st);var rt=String.fromCharCode(Math.floor((st-65536)/1024)+55296),it=String.fromCharCode((st-65536)%1024+56320);return rt+it}for(a=new Array(128),h=0;h<128;++h)a[h]=h>=97&&h<=122||h>=65&&h<=90||h===36||h===95;for(c=new Array(128),h=0;h<128;++h)c[h]=h>=97&&h<=122||h>=65&&h<=90||h>=48&&h<=57||h===36||h===95;function _e(st){return st<128?a[st]:e.NonAsciiIdentifierStart.test(j(st))}function et(st){return st<128?c[st]:e.NonAsciiIdentifierPart.test(j(st))}function tt(st){return st<128?a[st]:o.NonAsciiIdentifierStart.test(j(st))}function nt(st){return st<128?c[st]:o.NonAsciiIdentifierPart.test(j(st))}code$1.exports={isDecimalDigit:d,isHexDigit:g,isOctalDigit:_,isWhiteSpace:b,isLineTerminator:$,isIdentifierStartES5:_e,isIdentifierPartES5:et,isIdentifierStartES6:tt,isIdentifierPartES6:nt}})();var keyword$1={exports:{}};(function(){var o=code$1.exports;function e(_e){switch(_e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function s(_e,et){return!et&&_e==="yield"?!1:a(_e,et)}function a(_e,et){if(et&&e(_e))return!0;switch(_e.length){case 2:return _e==="if"||_e==="in"||_e==="do";case 3:return _e==="var"||_e==="for"||_e==="new"||_e==="try";case 4:return _e==="this"||_e==="else"||_e==="case"||_e==="void"||_e==="with"||_e==="enum";case 5:return _e==="while"||_e==="break"||_e==="catch"||_e==="throw"||_e==="const"||_e==="yield"||_e==="class"||_e==="super";case 6:return _e==="return"||_e==="typeof"||_e==="delete"||_e==="switch"||_e==="export"||_e==="import";case 7:return _e==="default"||_e==="finally"||_e==="extends";case 8:return _e==="function"||_e==="continue"||_e==="debugger";case 10:return _e==="instanceof";default:return!1}}function c(_e,et){return _e==="null"||_e==="true"||_e==="false"||s(_e,et)}function h(_e,et){return _e==="null"||_e==="true"||_e==="false"||a(_e,et)}function d(_e){return _e==="eval"||_e==="arguments"}function g(_e){var et,tt,nt;if(_e.length===0||(nt=_e.charCodeAt(0),!o.isIdentifierStartES5(nt)))return!1;for(et=1,tt=_e.length;et=tt||(st=_e.charCodeAt(et),!(56320<=st&&st<=57343)))return!1;nt=_(nt,st)}if(!rt(nt))return!1;rt=o.isIdentifierPartES6}return!0}function $(_e,et){return g(_e)&&!c(_e,et)}function j(_e,et){return b(_e)&&!h(_e,et)}keyword$1.exports={isKeywordES5:s,isKeywordES6:a,isReservedWordES5:c,isReservedWordES6:h,isRestrictedWord:d,isIdentifierNameES5:g,isIdentifierNameES6:b,isIdentifierES5:$,isIdentifierES6:j}})();(function(){utils.ast=ast.exports,utils.code=code$1.exports,utils.keyword=keyword$1.exports})();var coderep={};Object.defineProperty(coderep,"__esModule",{value:!0});var _createClass$4=function(){function o(e,s){for(var a=0;a":Precedence.Relational,"<=":Precedence.Relational,">=":Precedence.Relational,in:Precedence.Relational,instanceof:Precedence.Relational,"<<":Precedence.BitwiseSHIFT,">>":Precedence.BitwiseSHIFT,">>>":Precedence.BitwiseSHIFT,"+":Precedence.Additive,"-":Precedence.Additive,"*":Precedence.Multiplicative,"%":Precedence.Multiplicative,"/":Precedence.Multiplicative,"**":Precedence.Exponential};function getPrecedence(o){switch(o.type){case"ArrayExpression":case"FunctionExpression":case"ClassExpression":case"IdentifierExpression":case"AssignmentTargetIdentifier":case"NewTargetExpression":case"Super":case"LiteralBooleanExpression":case"LiteralNullExpression":case"LiteralNumericExpression":case"LiteralInfinityExpression":case"LiteralRegExpExpression":case"LiteralStringExpression":case"ObjectExpression":case"ThisExpression":case"SpreadElement":case"FunctionBody":return Precedence.Primary;case"ArrowExpression":case"AssignmentExpression":case"CompoundAssignmentExpression":case"YieldExpression":case"YieldGeneratorExpression":return Precedence.Assignment;case"ConditionalExpression":return Precedence.Conditional;case"ComputedMemberExpression":case"StaticMemberExpression":case"ComputedMemberAssignmentTarget":case"StaticMemberAssignmentTarget":switch(o.object.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.object);default:return Precedence.Member}case"TemplateExpression":if(o.tag==null)return Precedence.Member;switch(o.tag.type){case"CallExpression":case"ComputedMemberExpression":case"StaticMemberExpression":case"TemplateExpression":return getPrecedence(o.tag);default:return Precedence.Member}case"BinaryExpression":return BinaryPrecedence[o.operator];case"CallExpression":return Precedence.Call;case"NewExpression":return o.arguments.length===0?Precedence.New:Precedence.Member;case"UpdateExpression":return o.isPrefix?Precedence.Prefix:Precedence.Postfix;case"AwaitExpression":case"UnaryExpression":return Precedence.Prefix;default:throw new Error("unreachable: "+o.type)}}function escapeStringLiteral(o){for(var e="",s=0,a=0,c=0,h=o.length;cs?"'":'"';e+=g;for(var _=0;_1&&arguments[1]!==void 0?arguments[1]:!1;_classCallCheck$4(this,e);var c=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return c.token=s,c.isRegExp=a,c}return _createClass$4(e,[{key:"emit",value:function(a){a.put(this.token,this.isRegExp)}}]),e}(CodeRep);coderep.RawToken=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.token=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putRaw(this.token)}}]),e}(CodeRep);coderep.NumberCodeRep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.number=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.putNumber(this.number)}}]),e}(CodeRep);coderep.Paren=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("("),this.expr.emit(a,!1),a.put(")")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Bracket=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("["),this.expr.emit(a,!1),a.put("]")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Brace=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){a.put("{"),this.expr.emit(a,!1),a.put("}")}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.NoIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a){this.expr.emit(a,!0)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.ContainsIn=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.expr=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){c?(a.put("("),this.expr.emit(a,!1),a.put(")")):this.expr.emit(a,!1)}},{key:"forEach",value:function(a){a(this),this.expr.forEach(a)}}]),e}(CodeRep);coderep.Seq=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){this.children.forEach(function(h){return h.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.Semi=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,";"))}return e}(Token);coderep.CommaSep=function(o){_inherits$2(e,o);function e(s){_classCallCheck$4(this,e);var a=_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return a.children=s,a}return _createClass$4(e,[{key:"emit",value:function(a,c){var h=!0;this.children.forEach(function(d){h?h=!1:a.put(","),d.emit(a,c)})}},{key:"forEach",value:function(a){a(this),this.children.forEach(function(c){return c.forEach(a)})}}]),e}(CodeRep);coderep.SemiOp=function(o){_inherits$2(e,o);function e(){return _classCallCheck$4(this,e),_possibleConstructorReturn$2(this,(e.__proto__||Object.getPrototypeOf(e)).call(this))}return _createClass$4(e,[{key:"emit",value:function(a){a.putOptionalSemi()}}]),e}(CodeRep);Object.defineProperty(minimalCodegen,"__esModule",{value:!0});var _createClass$3=function(){function o(e,s){for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep$1.Token(o,e)}function paren(o){return new _coderep$1.Paren(o)}function brace(o){return new _coderep$1.Brace(o)}function bracket$1(o){return new _coderep$1.Bracket(o)}function noIn$1(o){return new _coderep$1.NoIn(o)}function markContainsIn$1(o){return o.containsIn?new _coderep$1.ContainsIn(o):o}function seq$1(){for(var o=arguments.length,e=Array(o),s=0;s0&&c[c.length-1]==null&&(h=seq$1(h,t$1(","))),bracket$1(h)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq$1(t$1("await"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq$1(t$1("..."),getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,h=a.expression,d=c,g=h,_=h.containsIn,b=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(g=paren(g),_=!1),(0,_objectAssign2$1.default)(seq$1(d,t$1("="),g),{containsIn:_,startsWithCurly:b,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,h=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,h))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,h=a.expression,d=c,g=h,_=h.containsIn,b=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_coderep$1.getPrecedence)(s.expression)<(0,_coderep$1.getPrecedence)(s)&&(g=paren(g),_=!1),(0,_objectAssign2$1.default)(seq$1(d,t$1(s.operator),g),{containsIn:_,startsWithCurly:b,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,h=a.right,d=c,g=c.startsWithCurly,_=c.startsWithLetSquareBracket,b=c.startsWithFunctionOrClass,$=c.containsIn,j=s.operator==="**";((0,_coderep$1.getPrecedence)(s.left)<(0,_coderep$1.getPrecedence)(s)||j&&((0,_coderep$1.getPrecedence)(s.left)===(0,_coderep$1.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(d=paren(d),g=!1,_=!1,b=!1,$=!1);var _e=h,et=h.containsIn;return((0,_coderep$1.getPrecedence)(s.right)<(0,_coderep$1.getPrecedence)(s)||!j&&(0,_coderep$1.getPrecedence)(s.right)===(0,_coderep$1.getPrecedence)(s))&&(_e=paren(_e),et=!1),(0,_objectAssign2$1.default)(seq$1(d,t$1(s.operator),_e),{containsIn:$||et||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:g,startsWithLetSquareBracket:_,startsWithFunctionOrClass:b})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,h=a.init;return seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,h))}},{key:"reduceBindingIdentifier",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=a.elements,h=a.rest,d=void 0;return c.length===0?d=h==null?empty$2():seq$1(t$1("..."),h):(c=c.concat(h==null?[]:[seq$1(t$1("..."),h)]),d=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(d=seq$1(d,t$1(",")))),bracket$1(d)}},{key:"reduceArrayBinding",value:function(s,a){var c=a.elements,h=a.rest,d=void 0;return c.length===0?d=h==null?empty$2():seq$1(t$1("..."),h):(c=c.concat(h==null?[]:[seq$1(t$1("..."),h)]),d=commaSep(c.map(getAssignmentExpr)),c.length>0&&c[c.length-1]==null&&(d=seq$1(d,t$1(",")))),bracket$1(d)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,h=a.rest,d=commaSep(c);c.length===0?d=h==null?empty$2():seq$1(t$1("..."),h):d=h==null?d:seq$1(d,t$1(","),t$1("..."),h);var g=brace(d);return g.startsWithCurly=!0,g}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,h=a.rest,d=commaSep(c);c.length===0?d=h==null?empty$2():seq$1(t$1("..."),h):d=h==null?d:seq$1(d,t$1(","),t$1("..."),h);var g=brace(d);return g.startsWithCurly=!0,g}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,h=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,h))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,h=a.binding;return seq$1(c,t$1(":"),h)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,h=a.init;return s.init==null?c:seq$1(c,t$1("="),p$1(s.init,_coderep$1.Precedence.Assignment,h))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,h=a.binding;return seq$1(c,t$1(":"),h)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return brace(seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return c}},{key:"reduceBreakStatement",value:function(s){return seq$1(t$1("break"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceCallExpression",value:function(s,a){var c=a.callee,h=a.arguments,d=h.map(function(g,_){return p$1(s.arguments[_],_coderep$1.Precedence.Assignment,g)});return(0,_objectAssign2$1.default)(seq$1(p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c),paren(commaSep(d))),{startsWithCurly:c.startsWithCurly,startsWithLet:c.startsWithLet,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,h=a.body;return seq$1(t$1("catch"),paren(c),h)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,h=a.super,d=a.elements,g=seq$1(t$1("class"),s.name.name==="*default*"?empty$2():c);return h!=null&&(g=seq$1(g,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,h))),g=seq$1.apply(void 0,[g,t$1("{")].concat(_toConsumableArray$2(d),[t$1("}")])),g}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,h=a.super,d=a.elements,g=t$1("class");return c!=null&&(g=seq$1(g,c)),h!=null&&(g=seq$1(g,t$1("extends"),p$1(s.super,_coderep$1.Precedence.New,h))),g=seq$1.apply(void 0,[g,t$1("{")].concat(_toConsumableArray$2(d),[t$1("}")])),g.startsWithFunctionOrClass=!0,g}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return s.isStatic?seq$1(t$1("static"),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,h=a.expression,d=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(h)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:d,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,h=a.expression,d=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2$1.default)(seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),bracket$1(h)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:d,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return bracket$1(p$1(s.expression,_coderep$1.Precedence.Assignment,c))}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,h=a.consequent,d=a.alternate,g=c.containsIn||d.containsIn,_=c.startsWithCurly,b=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass;return(0,_objectAssign2$1.default)(seq$1(p$1(s.test,_coderep$1.Precedence.LogicalOR,c),t$1("?"),p$1(s.consequent,_coderep$1.Precedence.Assignment,h),t$1(":"),p$1(s.alternate,_coderep$1.Precedence.Assignment,d)),{containsIn:g,startsWithCurly:_,startsWithLetSquareBracket:b,startsWithFunctionOrClass:$})}},{key:"reduceContinueStatement",value:function(s){return seq$1(t$1("continue"),s.label?t$1(s.label):empty$2(),semiOp())}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,h=a.expression;return seq$1(c,t$1(":"),getAssignmentExpr(h))}},{key:"reduceDebuggerStatement",value:function(){return seq$1(t$1("debugger"),semiOp())}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,h=a.test;return seq$1(t$1("do"),c,t$1("while"),paren(h),semiOp())}},{key:"reduceEmptyStatement",value:function(){return semi()}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,h=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq$1(h?paren(c):c,semiOp())}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,h=a.right,d=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("in"),h)),d),{endsWithMissingElse:d.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,h=a.right,d=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,h))),d),{endsWithMissingElse:d.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,h=a.test,d=a.update,g=a.body;return c&&(c.startsWithLetSquareBracket&&(c=paren(c)),c=noIn$1(markContainsIn$1(c))),(0,_objectAssign2$1.default)(seq$1(t$1("for"),paren(seq$1(c||empty$2(),semi(),h||empty$2(),semi(),d||empty$2())),g),{endsWithMissingElse:g.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,h=a.right,d=a.body;return c=s.left.type==="VariableDeclaration"?noIn$1(markContainsIn$1(c)):c,(0,_objectAssign2$1.default)(seq$1(t$1("for"),t$1("await"),paren(seq$1(c.startsWithLet?paren(c):c,t$1("of"),p$1(s.right,_coderep$1.Precedence.Assignment,h))),d),{endsWithMissingElse:d.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,h=a.statements;return h.length&&(h[0]=this.parenToAvoidBeingDirective(s.statements[0],h[0])),brace(seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(h))))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,h=a.params,d=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),s.name.name==="*default*"?empty$2():c,h,d)}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,h=a.params,d=a.body,g=seq$1(s.isAsync?t$1("async"):empty$2(),t$1("function"),s.isGenerator?t$1("*"):empty$2(),c||empty$2(),h,d);return g.startsWithFunctionOrClass=!0,g}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,h=a.rest;return paren(commaSep(c.concat(h==null?[]:[seq$1(t$1("..."),h)])))}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,h=a.body;c=this.regenerateArrowParams(s.params,c);var d=!1;return s.body.type!=="FunctionBody"&&(h.startsWithCurly?h=paren(h):h.containsIn&&(d=!0)),(0,_objectAssign2$1.default)(seq$1(s.isAsync?t$1("async"):empty$2(),c,t$1("=>"),p$1(s.body,_coderep$1.Precedence.Assignment,h)),{containsIn:d})}},{key:"reduceGetter",value:function(s,a){var c=a.name,h=a.body;return seq$1(t$1("get"),c,paren(empty$2()),h)}},{key:"reduceIdentifierExpression",value:function(s){var a=t$1(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,h=a.consequent,d=a.alternate;return d&&h.endsWithMissingElse&&(h=brace(h)),(0,_objectAssign2$1.default)(seq$1(t$1("if"),paren(c),h,d?seq$1(t$1("else"),d):empty$2()),{endsWithMissingElse:d?d.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,h=a.namedImports,d=[];return c!=null&&d.push(c),h.length>0&&d.push(brace(commaSep(h))),d.length===0?seq$1(t$1("import"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp()):seq$1(t$1("import"),commaSep(d),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,h=a.namespaceBinding;return seq$1(t$1("import"),c==null?empty$2():seq$1(c,t$1(",")),t$1("*"),t$1("as"),h,t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq$1(t$1(s.name),t$1("as"),c)}},{key:"reduceExportAllFrom",value:function(s){return seq$1(t$1("export"),t$1("*"),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),t$1("from"),t$1((0,_coderep$1.escapeStringLiteral)(s.moduleSpecifier)),semiOp())}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq$1(t$1("export"),brace(commaSep(c)),semiOp())}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq$1(c,semiOp())}return seq$1(t$1("export"),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?paren(c):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq$1(t$1("export default"),c);default:return seq$1(t$1("export default"),p$1(s.body,_coderep$1.Precedence.Assignment,c),semiOp())}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?t$1(s.name):seq$1(t$1(s.name),t$1("as"),t$1(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq$1(c,t$1("as"),t$1(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2$1.default)(seq$1(t$1(s.label+":"),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return t$1(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return t$1("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return t$1("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep$1.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return t$1("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,h=a.params,d=a.body;return seq$1(s.isAsync?t$1("async"):empty$2(),s.isGenerator?t$1("*"):empty$2(),c,h,d)}},{key:"reduceModule",value:function(s,a){var c=a.directives,h=a.items;return h.length&&(h[0]=this.parenToAvoidBeingDirective(s.items[0],h[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(h)))}},{key:"reduceNewExpression",value:function(s,a){var c=a.callee,h=a.arguments,d=h.map(function(_,b){return p$1(s.arguments[b],_coderep$1.Precedence.Assignment,_)}),g=(0,_coderep$1.getPrecedence)(s.callee)===_coderep$1.Precedence.Call?paren(c):p$1(s.callee,(0,_coderep$1.getPrecedence)(s),c);return seq$1(t$1("new"),g,h.length===0?empty$2():paren(commaSep(d)))}},{key:"reduceNewTargetExpression",value:function(){return t$1("new.target")}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,h=brace(commaSep(c));return h.startsWithCurly=!0,h}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2$1.default)(seq$1(p$1(s.operand,_coderep$1.Precedence.New,c),t$1(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq$1(t$1(s.operator),p$1(s.operand,(0,_coderep$1.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq$1(t$1("return"),c||empty$2(),semiOp())}},{key:"reduceScript",value:function(s,a){var c=a.directives,h=a.statements;return h.length&&(h[0]=this.parenToAvoidBeingDirective(s.statements[0],h[0])),seq$1.apply(void 0,_toConsumableArray$2(c).concat(_toConsumableArray$2(h)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,h=a.param,d=a.body;return seq$1(t$1("set"),c,paren(h),d)}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,h=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return h.startsWithLet=c.startsWithLet,h.startsWithCurly=c.startsWithCurly,h.startsWithLetSquareBracket=c.startsWithLetSquareBracket,h.startsWithFunctionOrClass=c.startsWithFunctionOrClass,h}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,h=seq$1(p$1(s.object,(0,_coderep$1.getPrecedence)(s),c),t$1("."),t$1(s.property));return h.startsWithLet=c.startsWithLet,h.startsWithCurly=c.startsWithCurly,h.startsWithLetSquareBracket=c.startsWithLetSquareBracket,h.startsWithFunctionOrClass=c.startsWithFunctionOrClass,h}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils$1.keyword.isIdentifierNameES6(s.value))return t$1(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep$1.NumberCodeRep(a):t$1((0,_coderep$1.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return t$1("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,h=a.consequent;return seq$1(t$1("case"),c,t$1(":"),seq$1.apply(void 0,_toConsumableArray$2(h)))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq$1(t$1("default:"),seq$1.apply(void 0,_toConsumableArray$2(c)))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,h=a.cases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(h))))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,h=a.preDefaultCases,d=a.defaultCase,g=a.postDefaultCases;return seq$1(t$1("switch"),paren(c),brace(seq$1.apply(void 0,_toConsumableArray$2(h).concat([d],_toConsumableArray$2(g)))))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,h=a.elements,d=s.tag==null?empty$2():p$1(s.tag,(0,_coderep$1.getPrecedence)(s),c);d=seq$1(d,t$1("`"));for(var g=0,_=s.elements.length;g<_;++g)s.elements[g].type==="TemplateElement"?d=seq$1(d,g>0?t$1("}"):empty$2(),h[g],g<_-1?t$1("${"):empty$2()):d=seq$1(d,h[g]);return d=seq$1(d,t$1("`")),s.tag!=null&&(d.startsWithCurly=c.startsWithCurly,d.startsWithLet=c.startsWithLet,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass),d}},{key:"reduceTemplateElement",value:function(s){return new _coderep$1.RawToken(s.rawValue)}},{key:"reduceThisExpression",value:function(){return t$1("this")}},{key:"reduceThrowStatement",value:function(s,a){var c=a.expression;return seq$1(t$1("throw"),c,semiOp())}},{key:"reduceTryCatchStatement",value:function(s,a){var c=a.body,h=a.catchClause;return seq$1(t$1("try"),c,h)}},{key:"reduceTryFinallyStatement",value:function(s,a){var c=a.body,h=a.catchClause,d=a.finalizer;return seq$1(t$1("try"),c,h||empty$2(),t$1("finally"),d)}},{key:"reduceYieldExpression",value:function(s,a){var c=a.expression;return s.expression==null?t$1("yield"):(0,_objectAssign2$1.default)(seq$1(t$1("yield"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c)),{containsIn:c.containsIn})}},{key:"reduceYieldGeneratorExpression",value:function(s,a){var c=a.expression;return(0,_objectAssign2$1.default)(seq$1(t$1("yield"),t$1("*"),p$1(s.expression,(0,_coderep$1.getPrecedence)(s),c)),{containsIn:c.containsIn})}},{key:"reduceDirective",value:function(s){var a=s.rawValue.match(/(^|[^\\])(\\\\)*"/)?"'":'"';return seq$1(t$1(a+s.rawValue+a),semiOp())}},{key:"reduceVariableDeclaration",value:function(s,a){var c=a.declarators;return seq$1(t$1(s.kind),commaSep(c))}},{key:"reduceVariableDeclarationStatement",value:function(s,a){var c=a.declaration;return seq$1(c,semiOp())}},{key:"reduceVariableDeclarator",value:function(s,a){var c=a.binding,h=a.init,d=h&&h.containsIn&&!h.containsGroup;return h&&(h.containsGroup?h=paren(h):h=markContainsIn$1(h)),(0,_objectAssign2$1.default)(h==null?c:seq$1(c,t$1("="),h),{containsIn:d})}},{key:"reduceWhileStatement",value:function(s,a){var c=a.test,h=a.body;return(0,_objectAssign2$1.default)(seq$1(t$1("while"),paren(c),h),{endsWithMissingElse:h.endsWithMissingElse})}},{key:"reduceWithStatement",value:function(s,a){var c=a.object,h=a.body;return(0,_objectAssign2$1.default)(seq$1(t$1("with"),paren(c),h),{endsWithMissingElse:h.endsWithMissingElse})}}]),o}();minimalCodegen.default=MinimalCodeGen;var formattedCodegen={};Object.defineProperty(formattedCodegen,"__esModule",{value:!0});formattedCodegen.FormattedCodeGen=formattedCodegen.ExtensibleCodeGen=formattedCodegen.Sep=void 0;var _createClass$2=function(){function o(e,s){for(var a=0;a1&&arguments[1]!==void 0?arguments[1]:!1;return new _coderep.Token(s,a)}},{key:"p",value:function(s,a,c){return(0,_coderep.getPrecedence)(s)0&&h[h.length-1]==null&&(d=seq(d,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA))),this.bracket(d,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL)}},{key:"reduceAwaitExpression",value:function(s,a){var c=a.expression;return seq(this.t("await"),this.sep(Sep.AWAIT),this.p(s.expression,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceSpreadElement",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.p(s.expression,_coderep.Precedence.Assignment,c))}},{key:"reduceSpreadProperty",value:function(s,a){var c=a.expression;return seq(this.t("..."),this.sep(Sep.SPREAD),this.getAssignmentExpr(c))}},{key:"reduceAssignmentExpression",value:function(s,a){var c=a.binding,h=a.expression,d=c,g=h,_=h.containsIn,b=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(g=this.paren(g,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),_=!1),(0,_objectAssign2.default)(seq(d,this.sep(Sep.BEFORE_ASSIGN_OP("=")),this.t("="),this.sep(Sep.AFTER_ASSIGN_OP("=")),g),{containsIn:_,startsWithCurly:b,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceAssignmentTargetIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceAssignmentTargetWithDefault",value:function(s,a){var c=a.binding,h=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,h))}},{key:"reduceCompoundAssignmentExpression",value:function(s,a){var c=a.binding,h=a.expression,d=c,g=h,_=h.containsIn,b=c.startsWithCurly,$=c.startsWithLetSquareBracket,j=c.startsWithFunctionOrClass;return(0,_coderep.getPrecedence)(s.expression)<(0,_coderep.getPrecedence)(s)&&(g=this.paren(g,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),_=!1),(0,_objectAssign2.default)(seq(d,this.sep(Sep.BEFORE_ASSIGN_OP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_ASSIGN_OP(s.operator)),g),{containsIn:_,startsWithCurly:b,startsWithLetSquareBracket:$,startsWithFunctionOrClass:j})}},{key:"reduceBinaryExpression",value:function(s,a){var c=a.left,h=a.right,d=c,g=c.startsWithCurly,_=c.startsWithLetSquareBracket,b=c.startsWithFunctionOrClass,$=c.containsIn,j=s.operator==="**";((0,_coderep.getPrecedence)(s.left)<(0,_coderep.getPrecedence)(s)||j&&((0,_coderep.getPrecedence)(s.left)===(0,_coderep.getPrecedence)(s)||s.left.type==="UnaryExpression"))&&(d=this.paren(d,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),g=!1,_=!1,b=!1,$=!1);var _e=h,et=h.containsIn;return((0,_coderep.getPrecedence)(s.right)<(0,_coderep.getPrecedence)(s)||!j&&(0,_coderep.getPrecedence)(s.right)===(0,_coderep.getPrecedence)(s))&&(_e=this.paren(_e,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER),et=!1),(0,_objectAssign2.default)(seq(d,this.sep(Sep.BEFORE_BINOP(s.operator)),this.t(s.operator),this.sep(Sep.AFTER_BINOP(s.operator)),_e),{containsIn:$||et||s.operator==="in",containsGroup:s.operator===",",startsWithCurly:g,startsWithLetSquareBracket:_,startsWithFunctionOrClass:b})}},{key:"reduceBindingWithDefault",value:function(s,a){var c=a.binding,h=a.init;return seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,h))}},{key:"reduceBindingIdentifier",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceArrayAssignmentTarget",value:function(s,a){var c=this,h=a.elements,d=a.rest,g=void 0;return h.length===0?g=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(h=h.concat(d==null?[]:[seq(this.t("..."),this.sep(Sep.REST),d)]),g=this.commaSep(h.map(function(_){return c.getAssignmentExpr(_)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),h.length>0&&h[h.length-1]==null&&(g=seq(g,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(g,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceArrayBinding",value:function(s,a){var c=this,h=a.elements,d=a.rest,g=void 0;return h.length===0?g=d==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),d):(h=h.concat(d==null?[]:[seq(this.t("..."),this.sep(Sep.REST),d)]),g=this.commaSep(h.map(function(_){return c.getAssignmentExpr(_)}),Sep.ARRAY_BEFORE_COMMA,Sep.ARRAY_AFTER_COMMA),h.length>0&&h[h.length-1]==null&&(g=seq(g,this.sep(Sep.ARRAY_BEFORE_COMMA),this.t(","),this.sep(Sep.ARRAY_AFTER_COMMA)))),this.bracket(g,Sep.ARRAY_INITIAL,Sep.ARRAY_FINAL,Sep.ARRAY_EMPTY)}},{key:"reduceObjectAssignmentTarget",value:function(s,a){var c=a.properties,h=a.rest,d=void 0;c.length===0?d=h==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),h):(d=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),d=h==null?d:this.commaSep([d,seq(this.t("..."),this.sep(Sep.REST),h)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var g=this.brace(d,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return g.startsWithCurly=!0,g}},{key:"reduceObjectBinding",value:function(s,a){var c=a.properties,h=a.rest,d=void 0;c.length===0?d=h==null?empty$1():seq(this.t("..."),this.sep(Sep.REST),h):(d=this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),d=h==null?d:this.commaSep([d,seq(this.t("..."),this.sep(Sep.REST),h)],Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA));var g=this.brace(d,s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return g.startsWithCurly=!0,g}},{key:"reduceAssignmentTargetPropertyIdentifier",value:function(s,a){var c=a.binding,h=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,h))}},{key:"reduceAssignmentTargetPropertyProperty",value:function(s,a){var c=a.name,h=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),h)}},{key:"reduceBindingPropertyIdentifier",value:function(s,a){var c=a.binding,h=a.init;return s.init==null?c:seq(c,this.sep(Sep.BEFORE_DEFAULT_EQUALS),this.t("="),this.sep(Sep.AFTER_DEFAULT_EQUALS),this.p(s.init,_coderep.Precedence.Assignment,h))}},{key:"reduceBindingPropertyProperty",value:function(s,a){var c=a.name,h=a.binding;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),h)}},{key:"reduceBlock",value:function(s,a){var c=a.statements;return this.brace(seq.apply(void 0,_toConsumableArray$1(c)),s,Sep.BLOCK_BRACE_INITIAL,Sep.BLOCK_BRACE_FINAL,Sep.BLOCK_EMPTY)}},{key:"reduceBlockStatement",value:function(s,a){var c=a.block;return seq(c,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceBreakStatement",value:function(s){return seq(this.t("break"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceCallExpression",value:function(s,a){var c=this,h=a.callee,d=a.arguments,g=d.map(function(_,b){return c.p(s.arguments[b],_coderep.Precedence.Assignment,_)});return(0,_objectAssign2.default)(seq(this.p(s.callee,(0,_coderep.getPrecedence)(s),h),this.sep(Sep.CALL),this.paren(this.commaSep(g,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.CALL_PAREN_BEFORE,Sep.CALL_PAREN_AFTER,Sep.CALL_PAREN_EMPTY)),{startsWithCurly:h.startsWithCurly,startsWithLet:h.startsWithLet,startsWithLetSquareBracket:h.startsWithLetSquareBracket,startsWithFunctionOrClass:h.startsWithFunctionOrClass})}},{key:"reduceCatchClause",value:function(s,a){var c=a.binding,h=a.body;return seq(this.t("catch"),this.sep(Sep.BEFORE_CATCH_BINDING),this.paren(c,Sep.CATCH_PAREN_BEFORE,Sep.CATCH_PAREN_AFTER),this.sep(Sep.AFTER_CATCH_BINDING),h)}},{key:"reduceClassDeclaration",value:function(s,a){var c=a.name,h=a.super,d=a.elements,g=seq(this.t("class"),s.name.name==="*default*"?empty$1():seq(this.sep(Sep.BEFORE_CLASS_NAME),c));return h!=null&&(g=seq(g,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,h))),g=seq(g,this.sep(Sep.BEFORE_CLASS_DECLARATION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(d)),s,Sep.CLASS_BRACE_INITIAL,Sep.CLASS_BRACE_FINAL,Sep.CLASS_EMPTY),this.sep(Sep.AFTER_STATEMENT(s))),g}},{key:"reduceClassExpression",value:function(s,a){var c=a.name,h=a.super,d=a.elements,g=this.t("class");return c!=null&&(g=seq(g,this.sep(Sep.BEFORE_CLASS_NAME),c)),h!=null&&(g=seq(g,this.sep(Sep.BEFORE_EXTENDS),this.t("extends"),this.sep(Sep.AFTER_EXTENDS),this.p(s.super,_coderep.Precedence.New,h))),g=seq(g,this.sep(Sep.BEFORE_CLASS_EXPRESSION_ELEMENTS),this.brace(seq.apply(void 0,_toConsumableArray$1(d)),s,Sep.CLASS_EXPRESSION_BRACE_INITIAL,Sep.CLASS_EXPRESSION_BRACE_FINAL,Sep.CLASS_EXPRESSION_BRACE_EMPTY)),g.startsWithFunctionOrClass=!0,g}},{key:"reduceClassElement",value:function(s,a){var c=a.method;return c=seq(this.sep(Sep.BEFORE_CLASS_ELEMENT),c,this.sep(Sep.AFTER_CLASS_ELEMENT)),s.isStatic?seq(this.t("static"),this.sep(Sep.AFTER_STATIC),c):c}},{key:"reduceComputedMemberAssignmentTarget",value:function(s,a){var c=a.object,h=a.expression,d=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET),this.bracket(h,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_ASSIGNMENT_TARGET_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:d,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedMemberExpression",value:function(s,a){var c=a.object,h=a.expression,d=c.startsWithLetSquareBracket||s.object.type==="IdentifierExpression"&&s.object.name==="let";return(0,_objectAssign2.default)(seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.COMPUTED_MEMBER_EXPRESSION),this.bracket(h,Sep.COMPUTED_MEMBER_BRACKET_INTIAL,Sep.COMPUTED_MEMBER_BRACKET_FINAL)),{startsWithLet:c.startsWithLet,startsWithLetSquareBracket:d,startsWithCurly:c.startsWithCurly,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceComputedPropertyName",value:function(s,a){var c=a.expression;return this.bracket(this.p(s.expression,_coderep.Precedence.Assignment,c),Sep.COMPUTED_PROPERTY_BRACKET_INTIAL,Sep.COMPUTED_PROPERTY_BRACKET_FINAL)}},{key:"reduceConditionalExpression",value:function(s,a){var c=a.test,h=a.consequent,d=a.alternate,g=c.containsIn||d.containsIn,_=c.startsWithCurly,b=c.startsWithLetSquareBracket,$=c.startsWithFunctionOrClass;return(0,_objectAssign2.default)(seq(this.p(s.test,_coderep.Precedence.LogicalOR,c),this.sep(Sep.BEFORE_TERNARY_QUESTION),this.t("?"),this.sep(Sep.AFTER_TERNARY_QUESTION),this.p(s.consequent,_coderep.Precedence.Assignment,h),this.sep(Sep.BEFORE_TERNARY_COLON),this.t(":"),this.sep(Sep.AFTER_TERNARY_COLON),this.p(s.alternate,_coderep.Precedence.Assignment,d)),{containsIn:g,startsWithCurly:_,startsWithLetSquareBracket:b,startsWithFunctionOrClass:$})}},{key:"reduceContinueStatement",value:function(s){return seq(this.t("continue"),s.label?seq(this.sep(Sep.BEFORE_JUMP_LABEL),this.t(s.label)):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDataProperty",value:function(s,a){var c=a.name,h=a.expression;return seq(c,this.sep(Sep.BEFORE_PROP),this.t(":"),this.sep(Sep.AFTER_PROP),this.getAssignmentExpr(h))}},{key:"reduceDebuggerStatement",value:function(s){return seq(this.t("debugger"),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceDoWhileStatement",value:function(s,a){var c=a.body,h=a.test;return seq(this.t("do"),this.sep(Sep.AFTER_DO),c,this.sep(Sep.BEFORE_DOWHILE_WHILE),this.t("while"),this.sep(Sep.AFTER_DOWHILE_WHILE),this.paren(h,Sep.DO_WHILE_TEST_PAREN_BEFORE,Sep.DO_WHILE_TEST_PAREN_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceEmptyStatement",value:function(s){return seq(this.t(";"),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExpressionStatement",value:function(s,a){var c=a.expression,h=c.startsWithCurly||c.startsWithLetSquareBracket||c.startsWithFunctionOrClass;return seq(h?this.paren(c,Sep.EXPRESSION_STATEMENT_PAREN_BEFORE,Sep.EXPRESSION_STATEMENT_PAREN_AFTER):c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceForInStatement",value:function(s,a){var c=a.left,h=a.right,d=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FORIN_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_IN_LET_PAREN_BEFORE,Sep.FOR_IN_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FORIN_IN),this.t("in"),this.sep(Sep.AFTER_FORIN_FOR),h),Sep.FOR_IN_PAREN_BEFORE,Sep.FOR_IN_PAREN_AFTER),this.sep(Sep.BEFORE_FORIN_BODY),d,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:d.endsWithMissingElse})}},{key:"reduceForOfStatement",value:function(s,a){var c=a.left,h=a.right,d=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,h)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),d,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:d.endsWithMissingElse})}},{key:"reduceForStatement",value:function(s,a){var c=a.init,h=a.test,d=a.update,g=a.body;return c&&(c.startsWithLetSquareBracket&&(c=this.paren(c,Sep.FOR_LET_PAREN_BEFORE,Sep.FOR_LET_PAREN_AFTER)),c=noIn(markContainsIn(c))),(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOR_FOR),this.paren(seq(c?seq(this.sep(Sep.BEFORE_FOR_INIT),c,this.sep(Sep.AFTER_FOR_INIT)):this.sep(Sep.EMPTY_FOR_INIT),this.t(";"),h?seq(this.sep(Sep.BEFORE_FOR_TEST),h,this.sep(Sep.AFTER_FOR_TEST)):this.sep(Sep.EMPTY_FOR_TEST),this.t(";"),d?seq(this.sep(Sep.BEFORE_FOR_UPDATE),d,this.sep(Sep.AFTER_FOR_UPDATE)):this.sep(Sep.EMPTY_FOR_UPDATE))),this.sep(Sep.BEFORE_FOR_BODY),g,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:g.endsWithMissingElse})}},{key:"reduceForAwaitStatement",value:function(s,a){var c=a.left,h=a.right,d=a.body;return c=s.left.type==="VariableDeclaration"?noIn(markContainsIn(c)):c,(0,_objectAssign2.default)(seq(this.t("for"),this.sep(Sep.AFTER_FOROF_FOR),this.t("await"),this.sep(Sep.AFTER_FORAWAIT_AWAIT),this.paren(seq(c.startsWithLet?this.paren(c,Sep.FOR_OF_LET_PAREN_BEFORE,Sep.FOR_OF_LET_PAREN_AFTER):c,this.sep(Sep.BEFORE_FOROF_OF),this.t("of"),this.sep(Sep.AFTER_FOROF_FOR),this.p(s.right,_coderep.Precedence.Assignment,h)),Sep.FOR_OF_PAREN_BEFORE,Sep.FOR_OF_PAREN_AFTER),this.sep(Sep.BEFORE_FOROF_BODY),d,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:d.endsWithMissingElse})}},{key:"reduceFunctionBody",value:function(s,a){var c=a.directives,h=a.statements;return h.length&&(h[0]=this.parenToAvoidBeingDirective(s.statements[0],h[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_FUNCTION_DIRECTIVES):empty$1()],_toConsumableArray$1(h)))}},{key:"reduceFunctionDeclaration",value:function(s,a){var c=a.name,h=a.params,d=a.body;return seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),s.name.name==="*default*"?empty$1():c,this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(h,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_DECLARATION_BODY),this.brace(d,s,Sep.FUNCTION_BRACE_INITIAL,Sep.FUNCTION_BRACE_FINAL,Sep.FUNCTION_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceFunctionExpression",value:function(s,a){var c=a.name,h=a.params,d=a.body,g=seq(s.isAsync?this.t("async"):empty$1(),this.t("function"),s.isGenerator?seq(this.sep(Sep.BEFORE_GENERATOR_STAR),this.t("*"),this.sep(Sep.AFTER_GENERATOR_STAR)):empty$1(),this.sep(Sep.BEFORE_FUNCTION_NAME(s)),c||empty$1(),this.sep(Sep.BEFORE_FUNCTION_PARAMS),this.paren(h,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_FUNCTION_EXPRESSION_BODY),this.brace(d,s,Sep.FUNCTION_EXPRESSION_BRACE_INITIAL,Sep.FUNCTION_EXPRESSION_BRACE_FINAL,Sep.FUNCTION_EXPRESSION_EMPTY));return g.startsWithFunctionOrClass=!0,g}},{key:"reduceFormalParameters",value:function(s,a){var c=a.items,h=a.rest;return this.commaSep(c.concat(h==null?[]:[seq(this.t("..."),this.sep(Sep.REST),h)]),Sep.PARAMETER_BEFORE_COMMA,Sep.PARAMETER_AFTER_COMMA)}},{key:"reduceArrowExpression",value:function(s,a){var c=a.params,h=a.body;(s.params.rest!=null||s.params.items.length!==1||s.params.items[0].type!=="BindingIdentifier")&&(c=this.paren(c,Sep.ARROW_PARAMETERS_PAREN_BEFORE,Sep.ARROW_PARAMETERS_PAREN_AFTER,Sep.ARROW_PARAMETERS_PAREN_EMPTY));var d=!1;return s.body.type==="FunctionBody"?h=this.brace(h,s,Sep.ARROW_BRACE_INITIAL,Sep.ARROW_BRACE_FINAL,Sep.ARROW_BRACE_EMPTY):h.startsWithCurly?h=this.paren(h,Sep.ARROW_BODY_PAREN_BEFORE,Sep.ARROW_BODY_PAREN_AFTER):h.containsIn&&(d=!0),(0,_objectAssign2.default)(seq(s.isAsync?seq(this.t("async"),this.sep(Sep.BEFORE_ARROW_ASYNC_PARAMS)):empty$1(),c,this.sep(Sep.BEFORE_ARROW),this.t("=>"),this.sep(Sep.AFTER_ARROW),this.p(s.body,_coderep.Precedence.Assignment,h)),{containsIn:d})}},{key:"reduceGetter",value:function(s,a){var c=a.name,h=a.body;return seq(this.t("get"),this.sep(Sep.AFTER_GET),c,this.sep(Sep.BEFORE_GET_PARAMS),this.paren(empty$1(),null,null,Sep.GETTER_PARAMS),this.sep(Sep.BEFORE_GET_BODY),this.brace(h,s,Sep.GET_BRACE_INTIAL,Sep.GET_BRACE_FINAL,Sep.GET_BRACE_EMPTY))}},{key:"reduceIdentifierExpression",value:function(s){var a=this.t(s.name);return s.name==="let"&&(a.startsWithLet=!0),a}},{key:"reduceIfStatement",value:function(s,a){var c=a.test,h=a.consequent,d=a.alternate;return d&&h.endsWithMissingElse&&(h=this.brace(h,s,Sep.MISSING_ELSE_INTIIAL,Sep.MISSING_ELSE_FINAL,Sep.MISSING_ELSE_EMPTY)),(0,_objectAssign2.default)(seq(this.t("if"),this.sep(Sep.AFTER_IF),this.paren(c,Sep.IF_PAREN_BEFORE,Sep.IF_PAREN_AFTER),this.sep(Sep.AFTER_IF_TEST),h,d?seq(this.sep(Sep.BEFORE_ELSE),this.t("else"),this.sep(Sep.AFTER_ELSE),d):empty$1(),this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:d?d.endsWithMissingElse:!0})}},{key:"reduceImport",value:function(s,a){var c=a.defaultBinding,h=a.namedImports,d=[];return c!=null&&d.push(c),h.length>0&&d.push(this.brace(this.commaSep(h,Sep.NAMED_IMPORT_BEFORE_COMMA,Sep.NAMED_IMPORT_AFTER_COMMA),s,Sep.IMPORT_BRACE_INTIAL,Sep.IMPORT_BRACE_FINAL,Sep.IMPORT_BRACE_EMPTY)),d.length===0?seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_MODULE),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s))):seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_BINDINGS),this.commaSep(d,Sep.IMPORT_BEFORE_COMMA,Sep.IMPORT_AFTER_COMMA),this.sep(Sep.AFTER_IMPORT_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportNamespace",value:function(s,a){var c=a.defaultBinding,h=a.namespaceBinding;return seq(this.t("import"),this.sep(Sep.BEFORE_IMPORT_NAMESPACE),c==null?empty$1():seq(c,this.sep(Sep.IMPORT_BEFORE_COMMA),this.t(","),this.sep(Sep.IMPORT_AFTER_COMMA)),this.sep(Sep.BEFORE_IMPORT_STAR),this.t("*"),this.sep(Sep.AFTER_IMPORT_STAR),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),h,this.sep(Sep.AFTER_NAMESPACE_BINDING),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceImportSpecifier",value:function(s,a){var c=a.binding;return s.name==null?c:seq(this.t(s.name),this.sep(Sep.BEFORE_IMPORT_AS),this.t("as"),this.sep(Sep.AFTER_IMPORT_AS),c)}},{key:"reduceExportAllFrom",value:function(s){return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_STAR),this.t("*"),this.sep(Sep.AFTER_EXPORT_STAR),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportFrom",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_FROM_BINDINGS),this.t("from"),this.sep(Sep.AFTER_FROM),this.t((0,_coderep.escapeStringLiteral)(s.moduleSpecifier)),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExportLocals",value:function(s,a){var c=a.namedExports;return seq(this.t("export"),this.sep(Sep.BEFORE_EXPORT_BINDINGS),this.brace(this.commaSep(c,Sep.EXPORTS_BEFORE_COMMA,Sep.EXPORTS_AFTER_COMMA),s,Sep.EXPORT_BRACE_INITIAL,Sep.EXPORT_BRACE_FINAL,Sep.EXPORT_BRACE_EMPTY),this.sep(Sep.AFTER_EXPORT_LOCAL_BINDINGS),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceExport",value:function(s,a){var c=a.declaration;switch(s.declaration.type){case"FunctionDeclaration":case"ClassDeclaration":break;default:c=seq(c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}return seq(this.t("export"),this.sep(Sep.AFTER_EXPORT),c)}},{key:"reduceExportDefault",value:function(s,a){var c=a.body;switch(c=c.startsWithFunctionOrClass?this.paren(c,Sep.EXPORT_PAREN_BEFORE,Sep.EXPORT_PAREN_AFTER):c,s.body.type){case"FunctionDeclaration":case"ClassDeclaration":return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),c);default:return seq(this.t("export"),this.sep(Sep.EXPORT_DEFAULT),this.t("default"),this.sep(Sep.AFTER_EXPORT_DEFAULT),this.p(s.body,_coderep.Precedence.Assignment,c),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}}},{key:"reduceExportFromSpecifier",value:function(s){return s.exportedName==null?this.t(s.name):seq(this.t(s.name),this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceExportLocalSpecifier",value:function(s,a){var c=a.name;return s.exportedName==null?c:seq(c,this.sep(Sep.BEFORE_EXPORT_AS),this.t("as"),this.sep(Sep.AFTER_EXPORT_AS),this.t(s.exportedName))}},{key:"reduceLabeledStatement",value:function(s,a){var c=a.body;return(0,_objectAssign2.default)(seq(this.t(s.label),this.sep(Sep.BEFORE_LABEL_COLON),this.t(":"),this.sep(Sep.AFTER_LABEL_COLON),c),{endsWithMissingElse:c.endsWithMissingElse})}},{key:"reduceLiteralBooleanExpression",value:function(s){return this.t(s.value.toString())}},{key:"reduceLiteralNullExpression",value:function(){return this.t("null")}},{key:"reduceLiteralInfinityExpression",value:function(){return this.t("2e308")}},{key:"reduceLiteralNumericExpression",value:function(s){return new _coderep.NumberCodeRep(s.value)}},{key:"reduceLiteralRegExpExpression",value:function(s){return this.t("/"+s.pattern+"/"+(s.global?"g":"")+(s.ignoreCase?"i":"")+(s.multiLine?"m":"")+(s.dotAll?"s":"")+(s.unicode?"u":"")+(s.sticky?"y":""),!0)}},{key:"reduceLiteralStringExpression",value:function(s){return this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceMethod",value:function(s,a){var c=a.name,h=a.params,d=a.body;return seq(s.isAsync?seq(this.t("async"),this.sep(Sep.AFTER_METHOD_ASYNC)):empty$1(),s.isGenerator?seq(this.t("*"),this.sep(Sep.AFTER_METHOD_GENERATOR_STAR)):empty$1(),c,this.sep(Sep.AFTER_METHOD_NAME),this.paren(h,Sep.PARAMETERS_PAREN_BEFORE,Sep.PARAMETERS_PAREN_AFTER,Sep.PARAMETERS_PAREN_EMPTY),this.sep(Sep.BEFORE_METHOD_BODY),this.brace(d,s,Sep.METHOD_BRACE_INTIAL,Sep.METHOD_BRACE_FINAL,Sep.METHOD_BRACE_EMPTY))}},{key:"reduceModule",value:function(s,a){var c=a.directives,h=a.items;return h.length&&(h[0]=this.parenToAvoidBeingDirective(s.items[0],h[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_MODULE_DIRECTIVES):empty$1()],_toConsumableArray$1(h)))}},{key:"reduceNewExpression",value:function(s,a){var c=this,h=a.callee,d=a.arguments,g=d.map(function(b,$){return c.p(s.arguments[$],_coderep.Precedence.Assignment,b)}),_=(0,_coderep.getPrecedence)(s.callee)===_coderep.Precedence.Call?this.paren(h,Sep.NEW_CALLEE_PAREN_BEFORE,Sep.NEW_CALLEE_PAREN_AFTER):this.p(s.callee,(0,_coderep.getPrecedence)(s),h);return seq(this.t("new"),this.sep(Sep.AFTER_NEW),_,d.length===0?this.sep(Sep.EMPTY_NEW_CALL):seq(this.sep(Sep.BEFORE_NEW_ARGS),this.paren(this.commaSep(g,Sep.ARGS_BEFORE_COMMA,Sep.ARGS_AFTER_COMMA),Sep.NEW_PAREN_BEFORE,Sep.NEW_PAREN_AFTER,Sep.NEW_PAREN_EMPTY)))}},{key:"reduceNewTargetExpression",value:function(){return seq(this.t("new"),this.sep(Sep.NEW_TARGET_BEFORE_DOT),this.t("."),this.sep(Sep.NEW_TARGET_AFTER_DOT),this.t("target"))}},{key:"reduceObjectExpression",value:function(s,a){var c=a.properties,h=this.brace(this.commaSep(c,Sep.OBJECT_BEFORE_COMMA,Sep.OBJECT_AFTER_COMMA),s,Sep.OBJECT_BRACE_INITIAL,Sep.OBJECT_BRACE_FINAL,Sep.OBJECT_EMPTY);return h.startsWithCurly=!0,h}},{key:"reduceUpdateExpression",value:function(s,a){var c=a.operand;return s.isPrefix?this.reduceUnaryExpression.apply(this,arguments):(0,_objectAssign2.default)(seq(this.p(s.operand,_coderep.Precedence.New,c),this.sep(Sep.BEFORE_POSTFIX(s.operator)),this.t(s.operator)),{startsWithCurly:c.startsWithCurly,startsWithLetSquareBracket:c.startsWithLetSquareBracket,startsWithFunctionOrClass:c.startsWithFunctionOrClass})}},{key:"reduceUnaryExpression",value:function(s,a){var c=a.operand;return seq(this.t(s.operator),this.sep(Sep.UNARY(s.operator)),this.p(s.operand,(0,_coderep.getPrecedence)(s),c))}},{key:"reduceReturnStatement",value:function(s,a){var c=a.expression;return seq(this.t("return"),c?seq(this.sep(Sep.RETURN),c):empty$1(),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceScript",value:function(s,a){var c=a.directives,h=a.statements;return h.length&&(h[0]=this.parenToAvoidBeingDirective(s.statements[0],h[0])),seq.apply(void 0,_toConsumableArray$1(c).concat([c.length?this.sep(Sep.AFTER_SCRIPT_DIRECTIVES):empty$1()],_toConsumableArray$1(h)))}},{key:"reduceSetter",value:function(s,a){var c=a.name,h=a.param,d=a.body;return seq(this.t("set"),this.sep(Sep.AFTER_SET),c,this.sep(Sep.BEFORE_SET_PARAMS),this.paren(h,Sep.SETTER_PARAM_BEFORE,Sep.SETTER_PARAM_AFTER),this.sep(Sep.BEFORE_SET_BODY),this.brace(d,s,Sep.SET_BRACE_INTIIAL,Sep.SET_BRACE_FINAL,Sep.SET_BRACE_EMPTY))}},{key:"reduceShorthandProperty",value:function(s,a){var c=a.name;return c}},{key:"reduceStaticMemberAssignmentTarget",value:function(s,a){var c=a.object,h=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_ASSIGNMENT_TARGET_DOT),this.t(s.property));return h.startsWithLet=c.startsWithLet,h.startsWithCurly=c.startsWithCurly,h.startsWithLetSquareBracket=c.startsWithLetSquareBracket,h.startsWithFunctionOrClass=c.startsWithFunctionOrClass,h}},{key:"reduceStaticMemberExpression",value:function(s,a){var c=a.object,h=seq(this.p(s.object,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.BEFORE_STATIC_MEMBER_DOT),this.t("."),this.sep(Sep.AFTER_STATIC_MEMBER_DOT),this.t(s.property));return h.startsWithLet=c.startsWithLet,h.startsWithCurly=c.startsWithCurly,h.startsWithLetSquareBracket=c.startsWithLetSquareBracket,h.startsWithFunctionOrClass=c.startsWithFunctionOrClass,h}},{key:"reduceStaticPropertyName",value:function(s){if(_esutils.keyword.isIdentifierNameES6(s.value))return this.t(s.value);var a=parseFloat(s.value);return a>=0&&a.toString()===s.value?new _coderep.NumberCodeRep(a):this.t((0,_coderep.escapeStringLiteral)(s.value))}},{key:"reduceSuper",value:function(){return this.t("super")}},{key:"reduceSwitchCase",value:function(s,a){var c=a.test,h=a.consequent;return seq(this.t("case"),this.sep(Sep.BEFORE_CASE_TEST),c,this.sep(Sep.AFTER_CASE_TEST),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(h)),this.sep(Sep.AFTER_CASE_BODY))}},{key:"reduceSwitchDefault",value:function(s,a){var c=a.consequent;return seq(this.t("default"),this.sep(Sep.DEFAULT),this.t(":"),this.sep(Sep.BEFORE_CASE_BODY),seq.apply(void 0,_toConsumableArray$1(c)),this.sep(Sep.AFTER_DEFAULT_BODY))}},{key:"reduceSwitchStatement",value:function(s,a){var c=a.discriminant,h=a.cases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(h)),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceSwitchStatementWithDefault",value:function(s,a){var c=a.discriminant,h=a.preDefaultCases,d=a.defaultCase,g=a.postDefaultCases;return seq(this.t("switch"),this.sep(Sep.BEFORE_SWITCH_DISCRIM),this.paren(c,Sep.SWITCH_DISCRIM_PAREN_BEFORE,Sep.SWITCH_DISCRIM_PAREN_AFTER),this.sep(Sep.BEFORE_SWITCH_BODY),this.brace(seq.apply(void 0,_toConsumableArray$1(h).concat([d],_toConsumableArray$1(g))),s,Sep.SWITCH_BRACE_INTIAL,Sep.SWITCH_BRACE_FINAL,Sep.SWITCH_BRACE_EMPTY),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTemplateExpression",value:function(s,a){var c=a.tag,h=a.elements,d=s.tag==null?empty$1():seq(this.p(s.tag,(0,_coderep.getPrecedence)(s),c),this.sep(Sep.TEMPLATE_TAG));d=seq(d,this.t("`"));for(var g=0,_=s.elements.length;g<_;++g)if(s.elements[g].type==="TemplateElement"){var b="";g>0&&(b+="}"),b+=s.elements[g].rawValue,g<_-1&&(b+="${"),d=seq(d,this.t(b))}else d=seq(d,this.sep(Sep.BEFORE_TEMPLATE_EXPRESSION),h[g],this.sep(Sep.AFTER_TEMPLATE_EXPRESSION));return d=seq(d,this.t("`")),s.tag!=null&&(d.startsWithCurly=c.startsWithCurly,d.startsWithLet=c.startsWithLet,d.startsWithLetSquareBracket=c.startsWithLetSquareBracket,d.startsWithFunctionOrClass=c.startsWithFunctionOrClass),d}},{key:"reduceTemplateElement",value:function(s){return this.t(s.rawValue)}},{key:"reduceThisExpression",value:function(){return this.t("this")}},{key:"reduceThrowStatement",value:function(s,a){var c=a.expression;return seq(this.t("throw"),this.sep(Sep.THROW),c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTryCatchStatement",value:function(s,a){var c=a.body,h=a.catchClause;return seq(this.t("try"),this.sep(Sep.AFTER_TRY),c,this.sep(Sep.BEFORE_CATCH),h,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceTryFinallyStatement",value:function(s,a){var c=a.body,h=a.catchClause,d=a.finalizer;return seq(this.t("try"),this.sep(Sep.AFTER_TRY),c,h?seq(this.sep(Sep.BEFORE_CATCH),h):empty$1(),this.sep(Sep.BEFORE_FINALLY),this.t("finally"),this.sep(Sep.AFTER_FINALLY),d,this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceYieldExpression",value:function(s,a){var c=a.expression;return s.expression==null?this.t("yield"):(0,_objectAssign2.default)(seq(this.t("yield"),this.sep(Sep.YIELD),this.p(s.expression,(0,_coderep.getPrecedence)(s),c)),{containsIn:c.containsIn})}},{key:"reduceYieldGeneratorExpression",value:function(s,a){var c=a.expression;return(0,_objectAssign2.default)(seq(this.t("yield"),this.sep(Sep.BEFORE_YIELD_STAR),this.t("*"),this.sep(Sep.AFTER_YIELD_STAR),this.p(s.expression,(0,_coderep.getPrecedence)(s),c)),{containsIn:c.containsIn})}},{key:"reduceDirective",value:function(s){var a=s.rawValue.match(/(^|[^\\])(\\\\)*"/)?"'":'"';return seq(this.t(a+s.rawValue+a),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceVariableDeclaration",value:function(s,a){var c=a.declarators;return seq(this.t(s.kind),this.sep(Sep.VARIABLE_DECLARATION),this.commaSep(c,Sep.DECLARATORS_BEFORE_COMMA,Sep.DECLARATORS_AFTER_COMMA))}},{key:"reduceVariableDeclarationStatement",value:function(s,a){var c=a.declaration;return seq(c,this.semiOp(),this.sep(Sep.AFTER_STATEMENT(s)))}},{key:"reduceVariableDeclarator",value:function(s,a){var c=a.binding,h=a.init,d=h&&h.containsIn&&!h.containsGroup;return h&&(h.containsGroup?h=this.paren(h,Sep.EXPRESSION_PAREN_BEFORE,Sep.EXPRESSION_PAREN_AFTER):h=markContainsIn(h)),(0,_objectAssign2.default)(h==null?c:seq(c,this.sep(Sep.BEFORE_INIT_EQUALS),this.t("="),this.sep(Sep.AFTER_INIT_EQUALS),h),{containsIn:d})}},{key:"reduceWhileStatement",value:function(s,a){var c=a.test,h=a.body;return(0,_objectAssign2.default)(seq(this.t("while"),this.sep(Sep.AFTER_WHILE),this.paren(c,Sep.WHILE_TEST_PAREN_BEFORE,Sep.WHILE_TEST_PAREN_AFTER),this.sep(Sep.BEFORE_WHILE_BODY),h,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:h.endsWithMissingElse})}},{key:"reduceWithStatement",value:function(s,a){var c=a.object,h=a.body;return(0,_objectAssign2.default)(seq(this.t("with"),this.sep(Sep.AFTER_WITH),this.paren(c,Sep.WITH_PAREN_BEFORE,Sep.WITH_PAREN_AFTER),this.sep(Sep.BEFORE_WITH_BODY),h,this.sep(Sep.AFTER_STATEMENT(s))),{endsWithMissingElse:h.endsWithMissingElse})}}]),o}();function withoutTrailingLinebreak(o){if(o&&o instanceof _coderep.Seq){for(var e=o.children[o.children.length-1];e instanceof _coderep.Empty;)o.children.pop(),e=o.children[o.children.length-1];e instanceof _coderep.Seq?withoutTrailingLinebreak(e):e instanceof Linebreak&&o.children.pop()}return o}function indent(o,e){var s=void 0;function a(c){c instanceof Linebreak&&(s=c,++c.indentation)}return o.forEach(a),e||--s.indentation,o}formattedCodegen.FormattedCodeGen=function(o){_inherits$1(e,o);function e(){return _classCallCheck$2(this,e),_possibleConstructorReturn$1(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return _createClass$2(e,[{key:"parenToAvoidBeingDirective",value:function(a,c){return a&&a.type==="ExpressionStatement"&&a.expression.type==="LiteralStringExpression"?seq(this.paren(c.children[0],Sep.PAREN_AVOIDING_DIRECTIVE_BEFORE,Sep.PAREN_AVOIDING_DIRECTIVE_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(a))):c}},{key:"brace",value:function(a,c){if(isEmpty(a))return this.t("{}");switch(c.type){case"ObjectAssignmentTarget":case"ObjectBinding":case"Import":case"ExportFrom":case"ExportLocals":case"ObjectExpression":return new _coderep.Brace(a)}return a=seq(new Linebreak,a),indent(a,!1),new _coderep.Brace(a)}},{key:"reduceDoWhileStatement",value:function(a,c){var h=c.body,d=c.test;return seq(this.t("do"),this.sep(Sep.AFTER_DO),withoutTrailingLinebreak(h),this.sep(Sep.BEFORE_DOWHILE_WHILE),this.t("while"),this.sep(Sep.AFTER_DOWHILE_WHILE),this.paren(d,Sep.DO_WHILE_TEST_PAREN_BEFORE,Sep.DO_WHILE_TEST_PAREN_AFTER),this.semiOp(),this.sep(Sep.AFTER_STATEMENT(a)))}},{key:"reduceIfStatement",value:function(a,c){var h=c.test,d=c.consequent,g=c.alternate;return g&&d.endsWithMissingElse&&(d=this.brace(d,a)),(0,_objectAssign2.default)(seq(this.t("if"),this.sep(Sep.AFTER_IF),this.paren(h,Sep.IF_PAREN_BEFORE,Sep.IF_PAREN_AFTER),this.sep(Sep.AFTER_IF_TEST),withoutTrailingLinebreak(d),g?seq(this.sep(Sep.BEFORE_ELSE),this.t("else"),this.sep(Sep.AFTER_ELSE),withoutTrailingLinebreak(g)):empty$1(),this.sep(Sep.AFTER_STATEMENT(a))),{endsWithMissingElse:g?g.endsWithMissingElse:!0})}},{key:"reduceSwitchCase",value:function(a,c){var h=c.test,d=c.consequent;return d=indent(withoutTrailingLinebreak(seq.apply(void 0,[this.sep(Sep.BEFORE_CASE_BODY)].concat(_toConsumableArray$1(d)))),!0),seq(this.t("case"),this.sep(Sep.BEFORE_CASE_TEST),h,this.sep(Sep.AFTER_CASE_TEST),this.t(":"),d,this.sep(Sep.AFTER_CASE_BODY))}},{key:"reduceSwitchDefault",value:function(a,c){var h=c.consequent;return h=indent(withoutTrailingLinebreak(seq.apply(void 0,[this.sep(Sep.BEFORE_CASE_BODY)].concat(_toConsumableArray$1(h)))),!0),seq(this.t("default"),this.sep(Sep.DEFAULT),this.t(":"),h,this.sep(Sep.AFTER_DEFAULT_BODY))}},{key:"sep",value:function(a){switch(a.type){case"AWAIT":case"AFTER_FORAWAIT_AWAIT":case"ARRAY_AFTER_COMMA":case"OBJECT_AFTER_COMMA":case"ARGS_AFTER_COMMA":case"PARAMETER_AFTER_COMMA":case"DECLARATORS_AFTER_COMMA":case"NAMED_IMPORT_AFTER_COMMA":case"IMPORT_AFTER_COMMA":case"BEFORE_DEFAULT_EQUALS":case"AFTER_DEFAULT_EQUALS":case"AFTER_PROP":case"BEFORE_JUMP_LABEL":case"BEFORE_CATCH_BINDING":case"AFTER_CATCH_BINDING":case"BEFORE_CLASS_NAME":case"BEFORE_EXTENDS":case"AFTER_EXTENDS":case"BEFORE_CLASS_DECLARATION_ELEMENTS":case"BEFORE_CLASS_EXPRESSION_ELEMENTS":case"AFTER_STATIC":case"BEFORE_TERNARY_QUESTION":case"AFTER_TERNARY_QUESTION":case"BEFORE_TERNARY_COLON":case"AFTER_TERNARY_COLON":case"AFTER_DO":case"BEFORE_DOWHILE_WHILE":case"AFTER_DOWHILE_WHILE":case"AFTER_FORIN_FOR":case"BEFORE_FORIN_IN":case"BEFORE_FORIN_BODY":case"BEFORE_FOROF_OF":case"AFTER_FOROF_FOR":case"BEFORE_FOROF_BODY":case"AFTER_FOR_FOR":case"BEFORE_FOR_TEST":case"BEFORE_FOR_UPDATE":case"BEFORE_FOR_BODY":case"BEFORE_FUNCTION_DECLARATION_BODY":case"BEFORE_FUNCTION_EXPRESSION_BODY":case"BEFORE_ARROW":case"AFTER_ARROW":case"BEFORE_ARROW_ASYNC_PARAMS":case"AFTER_GET":case"BEFORE_GET_BODY":case"AFTER_IF":case"AFTER_IF_TEST":case"BEFORE_ELSE":case"AFTER_ELSE":case"BEFORE_IMPORT_BINDINGS":case"BEFORE_IMPORT_MODULE":case"AFTER_IMPORT_BINDINGS":case"AFTER_FROM":case"BEFORE_IMPORT_NAMESPACE":case"BEFORE_IMPORT_STAR":case"AFTER_IMPORT_STAR":case"AFTER_NAMESPACE_BINDING":case"BEFORE_IMPORT_AS":case"AFTER_IMPORT_AS":case"EXPORTS_AFTER_COMMA":case"BEFORE_EXPORT_STAR":case"AFTER_EXPORT_STAR":case"BEFORE_EXPORT_BINDINGS":case"AFTER_EXPORT_FROM_BINDINGS":case"AFTER_EXPORT":case"AFTER_EXPORT_DEFAULT":case"BEFORE_EXPORT_AS":case"AFTER_EXPORT_AS":case"AFTER_LABEL_COLON":case"AFTER_METHOD_ASYNC":case"BEFORE_METHOD_BODY":case"AFTER_NEW":case"RETURN":case"AFTER_SET":case"BEFORE_SET_BODY":case"BEFORE_SET_PARAMS":case"BEFORE_CASE_TEST":case"BEFORE_SWITCH_DISCRIM":case"BEFORE_SWITCH_BODY":case"THROW":case"AFTER_TRY":case"BEFORE_CATCH":case"BEFORE_FINALLY":case"AFTER_FINALLY":case"VARIABLE_DECLARATION":case"YIELD":case"AFTER_YIELD_STAR":case"BEFORE_INIT_EQUALS":case"AFTER_INIT_EQUALS":case"AFTER_WHILE":case"BEFORE_WHILE_BODY":case"AFTER_WITH":case"BEFORE_WITH_BODY":case"BEFORE_FUNCTION_NAME":case"AFTER_BINOP":case"BEFORE_ASSIGN_OP":case"AFTER_ASSIGN_OP":return this.t(" ");case"AFTER_STATEMENT":switch(a.node.type){case"ForInStatement":case"ForOfStatement":case"ForStatement":case"WhileStatement":case"WithStatement":return empty$1();default:return new Linebreak}case"AFTER_CLASS_ELEMENT":case"BEFORE_CASE_BODY":case"AFTER_CASE_BODY":case"AFTER_DEFAULT_BODY":return new Linebreak;case"BEFORE_BINOP":return a.op===","?empty$1():this.t(" ");case"UNARY":return a.op==="delete"||a.op==="void"||a.op==="typeof"?this.t(" "):empty$1();default:return empty$1()}}}]),e}(ExtensibleCodeGen);var withLocation={},tokenStream={},unicode={};Object.defineProperty(unicode,"__esModule",{value:!0});unicode.whitespaceArray=[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279];unicode.whitespaceBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!0,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1];unicode.idStartLargeRegex=/^[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]$/;unicode.idStartBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];unicode.idContinueLargeRegex=/^[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]$/;unicode.idContinueBool=[!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1,!1,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!0,!1,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!0,!1,!1,!1,!1,!1];Object.defineProperty(tokenStream,"__esModule",{value:!0});tokenStream.TokenStream=void 0;var _createClass$1=function(){function o(e,s){for(var a=0;a=1e3&&o%10===0?(e=o.toString(10),/[eE]/.test(e)?e.replace(/[eE]\+/,"e"):o.toString(10).replace(/0{3,}$/,function(s){return"e"+s.length})):o%1===0?o>1e15&&o<1e20?"0x"+o.toString(16).toUpperCase():o.toString(10).replace(/[eE]\+/,"e"):o.toString(10).replace(/^0\./,".").replace(/[eE]\+/,"e")}tokenStream.TokenStream=function(){function o(){_classCallCheck$1(this,o),this.result="",this.lastNumber=null,this.lastCodePoint=null,this.lastTokenStr="",this.optionalSemi=!1,this.previousWasRegExp=!1,this.partialHtmlComment=!1}return _createClass$1(o,[{key:"putNumber",value:function(s){var a=renderNumber(s);this.put(a),this.lastNumber=a}},{key:"putOptionalSemi",value:function(){this.optionalSemi=!0}},{key:"putRaw",value:function(s){this.result+=s,this.lastTokenStr=s}},{key:"put",value:function(s,a){if(this.optionalSemi&&(this.optionalSemi=!1,s!=="}"&&(this.result+=";",this.lastCodePoint=";",this.previousWasRegExp=!1)),this.lastNumber!==null&&s.length===1&&s==="."){this.result+=needsDoubleDot(this.lastNumber)?"..":".",this.lastNumber=null,this.lastCodePoint=".";return}var c=[].concat(_toConsumableArray(s)).length;if(c>0){this.lastNumber=null;var h=String.fromCodePoint(s.codePointAt(0)),d=this.lastCodePoint;this.lastCodePoint=String.fromCodePoint(s.codePointAt(c-1));var g=this.previousWasRegExp;this.previousWasRegExp=a,d&&((d==="+"||d==="-")&&d===h||isIdentifierPartES6(d)&&isIdentifierPartES6(h)||d==="/"&&h==="/"||g&&h==="i"||this.partialHtmlComment&&s.startsWith("--"))&&(this.result+=" ")}this.partialHtmlComment=this.lastTokenStr.endsWith("<")&&s==="!",this.result+=s,this.lastTokenStr=s}}]),o}();Object.defineProperty(withLocation,"__esModule",{value:!0});var _createClass=function(){function o(e,s){for(var a=0;a1?c-1:0),d=1;d1?c-1:0),d=1;d1?c-1:0),d=1;d1&&arguments[1]!==void 0?arguments[1]:new _minimalCodegen2.default,s=new TokenStreamWithLocation,a=(0,_shiftReducer.reduce)(addLocationToReducer(e),o);return a.emit(s),{source:s.result,locations:s.locations}}(function(o){Object.defineProperty(o,"__esModule",{value:!0}),o.codeGenWithLocation=o.SemiOp=o.CommaSep=o.Semi=o.Seq=o.ContainsIn=o.NoIn=o.Brace=o.Bracket=o.Paren=o.NumberCodeRep=o.Token=o.Empty=o.CodeRep=o.escapeStringLiteral=o.getPrecedence=o.Precedence=o.Sep=o.FormattedCodeGen=o.ExtensibleCodeGen=o.MinimalCodeGen=void 0,o.default=$;var e=minimalCodegen;Object.defineProperty(o,"MinimalCodeGen",{enumerable:!0,get:function(){return b(e).default}});var s=formattedCodegen;Object.defineProperty(o,"ExtensibleCodeGen",{enumerable:!0,get:function(){return s.ExtensibleCodeGen}}),Object.defineProperty(o,"FormattedCodeGen",{enumerable:!0,get:function(){return s.FormattedCodeGen}}),Object.defineProperty(o,"Sep",{enumerable:!0,get:function(){return s.Sep}});var a=coderep;Object.defineProperty(o,"Precedence",{enumerable:!0,get:function(){return a.Precedence}}),Object.defineProperty(o,"getPrecedence",{enumerable:!0,get:function(){return a.getPrecedence}}),Object.defineProperty(o,"escapeStringLiteral",{enumerable:!0,get:function(){return a.escapeStringLiteral}}),Object.defineProperty(o,"CodeRep",{enumerable:!0,get:function(){return a.CodeRep}}),Object.defineProperty(o,"Empty",{enumerable:!0,get:function(){return a.Empty}}),Object.defineProperty(o,"Token",{enumerable:!0,get:function(){return a.Token}}),Object.defineProperty(o,"NumberCodeRep",{enumerable:!0,get:function(){return a.NumberCodeRep}}),Object.defineProperty(o,"Paren",{enumerable:!0,get:function(){return a.Paren}}),Object.defineProperty(o,"Bracket",{enumerable:!0,get:function(){return a.Bracket}}),Object.defineProperty(o,"Brace",{enumerable:!0,get:function(){return a.Brace}}),Object.defineProperty(o,"NoIn",{enumerable:!0,get:function(){return a.NoIn}}),Object.defineProperty(o,"ContainsIn",{enumerable:!0,get:function(){return a.ContainsIn}}),Object.defineProperty(o,"Seq",{enumerable:!0,get:function(){return a.Seq}}),Object.defineProperty(o,"Semi",{enumerable:!0,get:function(){return a.Semi}}),Object.defineProperty(o,"CommaSep",{enumerable:!0,get:function(){return a.CommaSep}}),Object.defineProperty(o,"SemiOp",{enumerable:!0,get:function(){return a.SemiOp}});var c=withLocation;Object.defineProperty(o,"codeGenWithLocation",{enumerable:!0,get:function(){return b(c).default}});var h=dist$4,d=b(h),g=tokenStream,_=b(e);function b(j){return j&&j.__esModule?j:{default:j}}function $(j){var _e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new _.default,et=new g.TokenStream,tt=(0,d.default)(_e,j);return tt.emit(et),et.result}})(dist);const shiftCodegen=getDefaultExportFromCjs(dist);function bjorklund(o,e){for(var s=[],a=[],c=[e],h=o-e,d=0,g=function(_){if(_==-1)s.push(0);else if(_==-2)s.push(1);else{for(var b=0;b1;)a.push(Math.floor(h/c[d])),c.push(h%c[d]),h=c[d],d++;return a.push(h),g(d),s.reverse()}var bjork=function(o,e){return o>e?bjorklund(o,e):bjorklund(e,o)};const euclid=(o,e,s=0)=>{const a=bjork(e,o);return s?rotate(a,-s):a};Pattern$3.prototype.euclid=function(o,e,s=0){return this.struct(euclid(o,e,s))};Pattern$3.prototype.euclidLegato=function(o,e,s=0){const a=euclid(o,e,s),c=a.indexOf(1),h=rotate(a,c).join("").split("1").slice(1).map(d=>[d.length+1,!0]);return this.struct(timeCat(...h)).late(fraction(c).div(e))};function steady(o){return new Pattern$3(e=>[new Hap(void 0,e.span,o)])}const signal=o=>{const e=s=>[new Hap(void 0,s.span,o(s.span.midpoint()))];return new Pattern$3(e)},isaw=signal(o=>1-o%1),isaw2=isaw._toBipolar(),saw=signal(o=>o%1),saw2=saw._toBipolar(),sine2=signal(o=>Math.sin(Math.PI*2*o)),sine=sine2._fromBipolar(),cosine=sine._early(fraction(1).div(4)),cosine2=sine2._early(fraction(1).div(4)),square=signal(o=>Math.floor(o*2%2)),square2=square._toBipolar(),tri=fastcat(isaw,saw),tri2=fastcat(isaw2,saw2),time=signal(id$1),xorwise=o=>{const e=o<<13^o,s=e>>17^e;return s<<5^s},_frac=o=>o-Math.trunc(o),timeToIntSeed=o=>xorwise(Math.trunc(_frac(o/300)*536870912)),intSeedToRand=o=>o%536870912/536870912,timeToRand=o=>Math.abs(intSeedToRand(timeToIntSeed(o))),rand=signal(timeToRand),rand2=rand._toBipolar(),_brandBy=o=>rand.fmap(e=>ereify$1(o).fmap(_brandBy).innerJoin(),brand=_brandBy(.5),_irand=o=>rand.fmap(e=>Math.trunc(e*o)),irand=o=>reify$1(o).fmap(_irand).innerJoin(),__chooseWith=(o,e)=>(e=e.map(reify$1),e.length==0?silence:o.range(0,e.length).fmap(s=>e[Math.floor(s)])),chooseWith=(o,e)=>__chooseWith(o,e).outerJoin(),chooseInWith=(o,e)=>__chooseWith(o,e).innerJoin(),choose=(...o)=>chooseWith(rand,o);Pattern$3.prototype.choose=function(...o){return chooseWith(this,o)};Pattern$3.prototype.choose2=function(...o){return chooseWith(this._fromBipolar(),o)};const chooseCycles=(...o)=>chooseInWith(rand.segment(1),o),randcat=chooseCycles,_wchooseWith=function(o,...e){const s=e.map(g=>reify$1(g[0])),a=[];let c=0;for(const g of e)c+=g[1],a.push(c);const h=c,d=function(g){const _=g*h;return s[a.findIndex(b=>b>_,a)]};return o.fmap(d)},wchooseWith=(...o)=>_wchooseWith(...o).outerJoin(),wchoose=(...o)=>wchooseWith(rand,...o),wchooseCycles=(...o)=>_wchooseWith(rand,...o).innerJoin(),perlinWith=o=>{const e=o.fmap(Math.floor),s=o.fmap(h=>Math.floor(h)+1),a=h=>6*h**5-15*h**4+10*h**3,c=h=>d=>g=>d+a(h)*(g-d);return o.sub(e).fmap(c).appBoth(e.fmap(timeToRand)).appBoth(s.fmap(timeToRand))},perlin=perlinWith(time);Pattern$3.prototype._degradeByWith=function(o,e){return this.fmap(s=>a=>s).appLeft(o._filterValues(s=>s>e))};Pattern$3.prototype._degradeBy=function(o){return this._degradeByWith(rand,o)};Pattern$3.prototype.degrade=function(){return this._degradeBy(.5)};Pattern$3.prototype._undegradeBy=function(o){return this._degradeByWith(rand.fmap(e=>1-e),o)};Pattern$3.prototype.undegrade=function(){return this._undegradeBy(.5)};Pattern$3.prototype._sometimesBy=function(o,e){return stack(this._degradeBy(o),e(this._undegradeBy(1-o)))};Pattern$3.prototype.sometimesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesBy(a,e)).innerJoin()};Pattern$3.prototype._sometimesByPre=function(o,e){return stack(this._degradeBy(o),e(this).undegradeBy(1-o))};Pattern$3.prototype.sometimesByPre=function(o,e){const s=this;return reify$1(o).fmap(a=>s._sometimesByPre(a,e)).innerJoin()};Pattern$3.prototype.sometimes=function(o){return this._sometimesBy(.5,o)};Pattern$3.prototype.sometimesPre=function(o){return this._sometimesByPre(.5,o)};Pattern$3.prototype._someCyclesBy=function(o,e){return stack(this._degradeByWith(rand._segment(1),o),e(this._degradeByWith(rand.fmap(s=>1-s)._segment(1),1-o)))};Pattern$3.prototype.someCyclesBy=function(o,e){const s=this;return reify$1(o).fmap(a=>s._someCyclesBy(a,e)).innerJoin()};Pattern$3.prototype.someCycles=function(o){return this._someCyclesBy(.5,o)};Pattern$3.prototype.often=function(o){return this.sometimesBy(.75,o)};Pattern$3.prototype.rarely=function(o){return this.sometimesBy(.25,o)};Pattern$3.prototype.almostNever=function(o){return this.sometimesBy(.1,o)};Pattern$3.prototype.almostAlways=function(o){return this.sometimesBy(.9,o)};Pattern$3.prototype.never=function(o){return this};Pattern$3.prototype.always=function(o){return o(this)};Pattern$3.prototype.patternified.push("degradeBy","undegradeBy");let synth;try{synth=window==null?void 0:window.speechSynthesis}catch{console.warn("cannot use window: not in browser?")}let allVoices=synth==null?void 0:synth.getVoices();function speak(o,e,s){synth.cancel();const a=new SpeechSynthesisUtterance(o);a.lang=e,allVoices=synth.getVoices();const c=allVoices.filter(h=>h.lang.includes(e));typeof s=="number"?a.voice=c[s%c.length]:typeof s=="string"&&(a.voice=c.find(h=>h.name===h)),speechSynthesis.speak(a)}Pattern$3.prototype._speak=function(o,e){return this._withHap(s=>{const a=(c,h)=>{speak(h.value,o,e)};return s.setContext({...s.context,onTrigger:a})})};Pattern$3.prototype.speak=function(o,e){return patternify2(Pattern$3.prototype._speak)(reify(o),reify(e),this)};const stringifyFunction=o=>"("+o+")();",urlifyFunction=o=>URL.createObjectURL(new Blob([stringifyFunction(o)],{type:"text/javascript"})),createWorker=o=>new Worker(urlifyFunction(o));class ClockWorker{constructor(e,s){Rt(this,"worker");Rt(this,"interval",1/20);Rt(this,"tick",0);this.interval=s||this.interval,this.worker=createWorker(()=>{let a,c=null;const h=()=>{c&&(clearInterval(c),c=null)},d=()=>{if(h(),!a)throw new Error("no interval set! call worker.postMessage({interval}) before starting.");postMessage("tick"),c=setInterval(()=>postMessage("tick"),a*1e3)};self.onmessage=function(g){g.data=="start"?d():g.data.interval?(a=g.data.interval,c&&d()):g.data=="stop"&&h()}}),this.setInterval(this.interval),this.worker.onmessage=a=>{a.data==="tick"&&e(this.tick++,this.interval)}}start(){this.worker.postMessage("start")}stop(){this.worker.postMessage("stop"),this.tick=0}setInterval(e){this.worker.postMessage({interval:e})}}class Scheduler{constructor({interval:e,onTrigger:s,onError:a,latency:c=.2,getTime:h}){Rt(this,"worker");Rt(this,"pattern");Rt(this,"started",!1);Rt(this,"phase",0);Rt(this,"cps",1);Rt(this,"getTime");Rt(this,"lastTime");this.worker=new ClockWorker((d,g)=>{try{const _=h();if(!this.lastTime){this.lastTime=_;return}const b=_-this.lastTime;this.lastTime=_;const $=this.phase,j=this.phase+b*this.cps;this.phase=j,this.pattern.queryArc($,j).forEach(et=>{var it,at;if(typeof((it=et.value)==null?void 0:it.cps)=="number"&&this.setCps((at=et.value)==null?void 0:at.cps),!et.part.begin.equals(et.whole.begin))return;const tt=_+(et.whole.begin-$)/this.cps-b+g+c,nt=et.duration/this.cps,st=h(),rt=tt-st;if(tth.hasOnset());console.log(`${e.toFixed(4)} - ${s.toFixed(4)} ${Array(c.length).fill("I").join("")}`)}}const gist=(route,cache=!0)=>fetch(`https://gist.githubusercontent.com/${route}?cachebust=${cache?"":Date.now()}`).then(o=>o.text()).then(code=>eval(code));console.log("%c // \u{1F300} @strudel.cycles/core loaded \u{1F300}","background-color: black;color:white;padding:4px;border-radius:15px");globalThis._strudelLoaded&&console.warn(`@strudel.cycles/core was loaded more than once... -This might happen when you have multiple versions of strudel installed. -Please check with "npm ls @strudel.cycles/core".`);globalThis._strudelLoaded=!0;const strudel=Object.freeze(Object.defineProperty({__proto__:null,Fraction:fraction,gist,Hap,Pattern:Pattern$3,silence,pure,isPattern:isPattern$1,reify:reify$1,stack,slowcat,slowcatPrime,fastcat,cat,timeCat,sequence,seq:seq$2,polymeterSteps,polymeter,pm,polyrhythm,pr,add:add$1,chop,chunk,chunkBack,div,early,echo,every,fast,inv,invert,iter,iterBack,jux,juxBy,late,linger,mask,mul,off,ply,range,range2,rev,slow,struct,sub,superimpose,set,when,makeComposable,patternify2,patternify3,patternify4,steady,signal,isaw,isaw2,saw,saw2,sine2,sine,cosine,cosine2,square,square2,tri,tri2,time,rand,rand2,_brandBy,brandBy,brand,_irand,irand,__chooseWith,chooseWith,chooseInWith,choose,chooseCycles,randcat,wchoose,wchooseCycles,perlinWith,perlin,State,TimeSpan,isNote:isNote$1,tokenizeNote,toMidi,fromMidi,getFreq,midi2note,mod,getPlayableNoteValue,getFrequency,rotate,pipe,compose,removeUndefineds,flatten:flatten$1,id:id$1,constant,listRange,curry,ClockWorker,Scheduler},Symbol.toStringTag,{value:"Module"})),{replace}=estraverse,codegen=shiftCodegen.default||shiftCodegen,{Pattern:Pattern$2}=strudel,isNote=o=>/^[a-gC-G][bs]?[0-9]$/.test(o),shapeshifter=o=>{const{code:e,addReturn:s}=wrapAsync(o),a=dist$7.parseScriptWithLocation(disguiseImports(e)),c=[],h=[],d=replace(a.tree,{enter(_,b){var et,tt,nt;if(h.push(b),h.some(st=>c.includes(st)))return _;if(isBackTickString(_))return minifyWithLocation(_,_,a.locations,c);if(((et=_.directives)==null?void 0:et.length)===1&&!((tt=_.statements)!=null&&tt.length)){const st=new LiteralStringExpression_1({value:_.directives[0].rawValue}),rt=minifyWithLocation(st,_.directives[0],a.locations,c);return{..._,directives:[],statements:[rt]}}if(isStringWithDoubleQuotes(_,a.locations,e))return minifyWithLocation(_,_,a.locations,c);const j={"*":"fast","/":"slow","&":"stack","&&":"append"};if(_.type==="BinaryExpression"&&j[_.operator]&&["LiteralNumericExpression","LiteralStringExpression","IdentifierExpression"].includes((nt=_.right)==null?void 0:nt.type)&&canBeOverloaded(_.left)){let st=_.left;return _.left.type==="IdentifierExpression"&&(st=wrapFunction("reify",_.left)),new CallExpression_1({callee:new StaticMemberExpression_1({property:j[_.operator],object:wrapFunction("reify",st)}),arguments:[_.right]})}const _e=isPatternArg(h)||hasModifierCall(b);if(_.type==="CallExpression"&&_.callee.name==="pure"){const st=_.arguments[0];return reifyWithLocation(st,_.arguments[0],a.locations,c)}if(_.type==="IdentifierExpression"){if(isNote(_.name)){const st=_.name[1]==="s"?_.name.replace("s","#"):_.name;return _e?reifyWithLocation(new LiteralStringExpression_1({value:st}),_,a.locations,c):new LiteralStringExpression_1({value:st})}if(_.name==="r")return new IdentifierExpression_1({name:"silence"})}return["LiteralStringExpression"].includes(_.type)&&_e?reifyWithLocation(_,_,a.locations,c):addMiniNotationLocations(_,a.locations,c)},leave(){h.pop()}});return s(d),undisguiseImports(codegen(d))};function disguiseImports(o){return o.replaceAll("import","_mport")}function undisguiseImports(o){return o.replaceAll("_mport","import")}function wrapAsync(o){return o=`(async () => { -${o} -})()`,{code:o,addReturn:s=>{const a=s.statements[0].expression.callee.body;a.statements=a.statements.slice(0,-1).concat([new ReturnStatement_1({expression:a.statements.slice(-1)[0]})])}}}function addMiniNotationLocations(o,e,s){const a=["mini","m"];if(o.type==="CallExpression"&&a.includes(o.callee.name)){if(o.arguments.length>1)return console.warn("multi arg mini locations not supported yet..."),o;const c=o.arguments[0];return minifyWithLocation(c,c,e,s)}return o.type==="StaticMemberExpression"&&a.includes(o.property)?minifyWithLocation(o.object,o,e,s):o}function wrapFunction(o,...e){return new CallExpression_1({callee:new IdentifierExpression_1({name:o}),arguments:e})}function isBackTickString(o){return o.type==="TemplateExpression"&&o.elements.length===1}function isStringWithDoubleQuotes(o,e,s){if(o.type!=="LiteralStringExpression")return!1;const a=e.get(o);return s.slice(a.start.offset,a.end.offset)[0]==='"'}function isPatternArg(o){if(!o.length)return!1;const e=o.slice(0,-1),s=o[o.length-1];return isPatternFactory(s)?!0:(s==null?void 0:s.type)==="ArrayExpression"?isPatternArg(e):!1}function hasModifierCall(o){return(o==null?void 0:o.type)==="StaticMemberExpression"&&Object.keys(Pattern$2.prototype.composable).includes(o.property)}const factories=Object.keys(Pattern$2.prototype.factories).concat(["mini"]);function isPatternFactory(o){return(o==null?void 0:o.type)==="CallExpression"&&factories.includes(o.callee.name)}function canBeOverloaded(o){return o.type==="IdentifierExpression"&&isNote(o.name)||isPatternFactory(o)}function reifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),h=new CallExpression_1({callee:new StaticMemberExpression_1({object:wrapFunction("reify",o),property:"withLocation"}),arguments:c});return a.push(h),h}function minifyWithLocation(o,e,s,a){const c=getLocationArguments(e,s),h=wrapFunction("mini",o),d=new CallExpression_1({callee:new StaticMemberExpression_1({object:h,property:"withMiniLocation"}),arguments:c});return a.push(d),d}function getLocationArguments(o,e){const s=e.get(o),a=-1;return[new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.start.line+a}),new LiteralNumericExpression_1({value:s.start.column}),new LiteralNumericExpression_1({value:s.start.offset})]}),new ArrayExpression_1({elements:[new LiteralNumericExpression_1({value:s.end.line+a}),new LiteralNumericExpression_1({value:s.end.column}),new LiteralNumericExpression_1({value:s.end.offset})]})]}const{isPattern,Pattern:Pattern$1}=strudel;let scoped=!1;const evalScope=async(...o)=>{scoped&&console.warn("@strudel.cycles/eval evalScope was called more than once."),scoped=!0;const e=await Promise.allSettled(o),s=e.filter(a=>a.status==="fulfilled").map(a=>a.value);e.forEach((a,c)=>{a.status==="rejected"&&console.warn(`evalScope: module with index ${c} could not be loaded:`,a.reason)}),Object.assign(globalThis,...s,Pattern$1.prototype.bootstrap())};function safeEval(o){return Function('"use strict";return ('+o+")")()}const evaluate=async o=>{scoped||await evalScope();const e=shapeshifter(o);let s=await safeEval(e);if(!isPattern(s)){console.log("evaluated",s);const a=`got "${typeof s}" instead of pattern`;throw new Error(a+(typeof s=="function"?", did you forget to call a function?":"."))}return{mode:"javascript",pattern:s}},bufferCache={},loadCache={},getCachedBuffer=o=>bufferCache[o],loadBuffer=(o,e)=>(loadCache[o]||(loadCache[o]=fetch(o).then(s=>s.arrayBuffer()).then(async s=>{const a=await e.decodeAudioData(s);return bufferCache[o]=a,a})),loadCache[o]),getLoadedBuffer=o=>bufferCache[o],githubCache={};let sampleCache={current:void 0};const loadGithubSamples=async(o,e)=>{const s="loadGithubSamples "+o,a=localStorage.getItem(s);if(a&&(console.log("[sampler]: loaded sample list from localstorage",o),githubCache[o]=JSON.parse(a)),githubCache[o])return sampleCache.current=githubCache[o],githubCache[o];console.log("[sampler]: fetching sample list from github",o);try{const[c,h,...d]=o.split("/"),g=`https://api.github.com/repos/${c}/${h}/contents`,_=await fetch(`${g}/${d.join("/")}`).then(b=>b.json());githubCache[o]=(await Promise.all(_.map(async({name:b,path:$})=>({name:b,content:await fetch(`${g}/${$}`).then(j=>j.json()).catch(j=>{console.error("could not load path",j)})})))).filter(({content:b})=>!!b).reduce((b,{name:$,content:j})=>({...b,[(e==null?void 0:e($))||$]:j.map(({download_url:_e})=>_e)}),{})}catch(c){console.error("[sampler]: failed to fetch sample list from github",c);return}return sampleCache.current=githubCache[o],localStorage.setItem(s,JSON.stringify(sampleCache.current)),console.log("[sampler]: loaded samples:",sampleCache.current),githubCache[o]},samples=(o,e=o._base||"")=>{sampleCache.current={...sampleCache.current,...Object.fromEntries(Object.entries(o).map(([s,a])=>{if(typeof a=="string"&&(a=[a]),typeof a!="object")throw new Error("wrong sample map format for "+s);e=a._base||e;const c=h=>(e+h).replace("github:","https://raw.githubusercontent.com/");return Array.isArray(a)?[s,a.map(c)]:[s,Object.fromEntries(Object.entries(a).map(([h,d])=>[h,(typeof d=="string"?[d]:d).map(c)]))]}))}},resetLoadedSamples=()=>{sampleCache.current=void 0},getLoadedSamples$1=()=>sampleCache.current,{Pattern}=strudel;let audioContext;const getAudioContext=()=>(audioContext||(audioContext=new AudioContext),audioContext);let destination;const getDestination=()=>{const o=getAudioContext();return destination||(destination=o.createGain(),destination.connect(o.destination)),destination},panic=()=>{getDestination().gain.linearRampToValueAtTime(0,getAudioContext().currentTime+.01),destination=null},getFilter=(o,e,s)=>{const a=getAudioContext().createBiquadFilter();return a.type=o,a.frequency.value=e,a.Q.value=s,a},getADSR=(o,e,s,a,c,h,d)=>{const g=getAudioContext().createGain();return g.gain.setValueAtTime(0,h),g.gain.linearRampToValueAtTime(c,h+o),g.gain.linearRampToValueAtTime(s*c,h+o+e),g.gain.setValueAtTime(s*c,d),g.gain.linearRampToValueAtTime(0,d+a),g},getOscillator=({s:o,freq:e,t:s,duration:a,release:c})=>{const h=getAudioContext().createOscillator();return h.type=o||"triangle",h.frequency.value=Number(e),h.start(s),h.stop(s+a+c),h},getSoundfontKey=o=>{var a,c,h,d;if(!globalThis.soundfontList)return!1;if((c=(a=globalThis.soundfontList)==null?void 0:a.instruments)!=null&&c.includes(o))return o;const e=(d=(h=globalThis.soundfontList)==null?void 0:h.instrumentNames)==null?void 0:d.indexOf(o),s=e<10?`00${e}`:e<100?`0${e}`:e;if(e!==-1)return globalThis.soundfontList.instruments.find(g=>g.startsWith(s))},getSampleBufferSource=async(o,e,s)=>{let a=0;s&&(a=toMidi(s)-36);const c=getAudioContext(),h=getLoadedSamples();if(!h)throw new Error("no samples loaded");const d=h==null?void 0:h[o];if(!d)throw new Error(`sample not found: "${o}", try one of ${Object.keys(h).join(", ")}`);if(typeof d!="object")throw new Error("wrong format for sample bank:",o);let g;if(Array.isArray(d))g=d[e%d.length];else{if(!s)throw new Error("no note(...) set for sound",o);const j=et=>toMidi(et)-toMidi(s),_e=Object.keys(d).filter(et=>!et.startsWith("_")).reduce((et,tt,nt)=>!et||Math.abs(j(tt)){if(!o.includes(":"))return[o,e];let[s,a]=o.split(":");return isNaN(Number(a))?[o,e]:[s,a]},webaudioOutput=async(o,e,s)=>{try{const a=getAudioContext();if(typeof o.value!="object")throw new Error(`hap.value ${o.value} is not supported by webaudio output. Hint: append .note() or .s() to the end`);const c=a.currentTime+e;let{freq:h,s:d,sf:g,clip:_=0,n:b=0,note:$,gain:j=1,cutoff:_e,resonance:et=1,hcutoff:tt,hresonance:nt=1,bandf:st,bandq:rt=1,pan:it,attack:at=.001,decay:ot=.05,sustain:ut=.5,release:ct=.001,speed:ht=1,begin:lt=0,end:pt=1}=o.value;const{velocity:ft=1}=o.context;j*=ft;const gt=[];if(typeof d=="string"&&([d,b]=splitSN(d,b)),typeof $=="string"&&([$,b]=splitSN($,b)),!d||["sine","square","triangle","sawtooth"].includes(d)){b=$||b,typeof b=="string"&&(b=toMidi(b)),!h&&typeof b=="number"&&(h=fromMidi(b));const mt=getOscillator({t:c,s:d,freq:h,duration:s,release:ct});gt.push(mt);const Et=a.createGain();Et.gain.value=.3,gt.push(Et);const Ot=getADSR(at,ot,ut,ct,1,c,c+s);gt.push(Ot)}else{if(ht===0)return;if(!d){console.warn("no sample specified");return}const mt=getSoundfontKey(d);let Et;try{mt?Et=await globalThis.getFontBufferSource(mt,$||b,a):Et=await getSampleBufferSource(d,b,$)}catch(At){console.warn(At);return}if(a.currentTime>c){console.warn("sample still loading:",d,b);return}if(!Et){console.warn("no buffer source");return}Et.playbackRate.value=Math.abs(ht)*Et.playbackRate.value;let Ot=mt||_?s:Et.buffer.duration;const St=lt*Ot;if(Ot=(pt-lt)*Ot/Math.abs(ht),mt||_?Et.start(c,St):Et.start(c,St,Ot),gt.push(Et),mt||_){const At=a.createGain(),dt=.1;At.gain.value=.6,At.gain.setValueAtTime(At.gain.value,c+Ot),At.gain.linearRampToValueAtTime(0,c+Ot+dt),gt.push(At),Et.stop(c+Ot+dt)}else Et.stop(c+Ot)}const yt=a.createGain();if(yt.gain.value=j,gt.push(yt),_e!==void 0&>.push(getFilter("lowpass",_e,et)),tt!==void 0&>.push(getFilter("highpass",tt,nt)),st!==void 0&>.push(getFilter("bandpass",st,rt)),it!==void 0){const mt=a.createStereoPanner();mt.pan.value=2*it-1,gt.push(mt)}gt.push(getDestination()),gt.slice(1).reduce((mt,Et)=>mt.connect(Et),gt[0])}catch(a){console.warn(".out error:",a)}};Pattern.prototype.out=function(){return this.onTrigger((o,e,s,a)=>webaudioOutput(e,o-s,e.duration/a))};function _extends(){return _extends=Object.assign?Object.assign.bind():function(o){for(var e=1;e=0)&&(s[c]=o[c]);return s}class Text{constructor(){}lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,s,a){let c=[];return this.decompose(0,e,c,2),a.length&&a.decompose(0,a.length,c,3),this.decompose(s,this.length,c,1),TextNode.from(c,this.length-(s-e)+a.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,s=this.length){let a=[];return this.decompose(e,s,a,0),TextNode.from(a,s-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let s=this.scanIdentical(e,1),a=this.length-this.scanIdentical(e,-1),c=new RawTextCursor(this),h=new RawTextCursor(e);for(let d=s,g=s;;){if(c.next(d),h.next(d),d=0,c.lineBreak!=h.lineBreak||c.done!=h.done||c.value!=h.value)return!1;if(g+=c.value.length,c.done||g>=a)return!0}}iter(e=1){return new RawTextCursor(this,e)}iterRange(e,s=this.length){return new PartialTextCursor(this,e,s)}iterLines(e,s){let a;if(e==null)a=this.iter();else{s==null&&(s=this.lines+1);let c=this.line(e).from;a=this.iterRange(c,Math.max(c,s==this.lines+1?this.length:s<=1?0:this.line(s-1).to))}return new LineCursor(a)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Text.empty:e.length<=32?new TextLeaf(e):TextNode.from(TextLeaf.split(e,[]))}}class TextLeaf extends Text{constructor(e,s=textLength(e)){super(),this.text=e,this.length=s}get lines(){return this.text.length}get children(){return null}lineInner(e,s,a,c){for(let h=0;;h++){let d=this.text[h],g=c+d.length;if((s?a:g)>=e)return new Line(c,g,a,d);c=g+1,a++}}decompose(e,s,a,c){let h=e<=0&&s>=this.length?this:new TextLeaf(sliceText(this.text,e,s),Math.min(s,this.length)-Math.max(0,e));if(c&1){let d=a.pop(),g=appendText(h.text,d.text.slice(),0,h.length);if(g.length<=32)a.push(new TextLeaf(g,d.length+h.length));else{let _=g.length>>1;a.push(new TextLeaf(g.slice(0,_)),new TextLeaf(g.slice(_)))}}else a.push(h)}replace(e,s,a){if(!(a instanceof TextLeaf))return super.replace(e,s,a);let c=appendText(this.text,appendText(a.text,sliceText(this.text,0,e)),s),h=this.length+a.length-(s-e);return c.length<=32?new TextLeaf(c,h):TextNode.from(TextLeaf.split(c,[]),h)}sliceString(e,s=this.length,a=` -`){let c="";for(let h=0,d=0;h<=s&&de&&d&&(c+=a),e<_&&s>h&&(c+=g.slice(Math.max(0,e-h),s-h)),h=_+1}return c}flatten(e){for(let s of this.text)e.push(s)}scanIdentical(){return 0}static split(e,s){let a=[],c=-1;for(let h of e)a.push(h),c+=h.length+1,a.length==32&&(s.push(new TextLeaf(a,c)),a=[],c=-1);return c>-1&&s.push(new TextLeaf(a,c)),s}}class TextNode extends Text{constructor(e,s){super(),this.children=e,this.length=s,this.lines=0;for(let a of e)this.lines+=a.lines}lineInner(e,s,a,c){for(let h=0;;h++){let d=this.children[h],g=c+d.length,_=a+d.lines-1;if((s?_:g)>=e)return d.lineInner(e,s,a,c);c=g+1,a=_+1}}decompose(e,s,a,c){for(let h=0,d=0;d<=s&&h=d){let b=c&((d<=e?1:0)|(_>=s?2:0));d>=e&&_<=s&&!b?a.push(g):g.decompose(e-d,s-d,a,b)}d=_+1}}replace(e,s,a){if(a.lines=h&&s<=g){let _=d.replace(e-h,s-h,a),b=this.lines-d.lines+_.lines;if(_.lines>5-1&&_.lines>b>>5+1){let $=this.children.slice();return $[c]=_,new TextNode($,this.length-(s-e)+a.length)}return super.replace(h,g,_)}h=g+1}return super.replace(e,s,a)}sliceString(e,s=this.length,a=` -`){let c="";for(let h=0,d=0;he&&h&&(c+=a),e<_&&s>d&&(c+=g.sliceString(e-d,s-d,a)),d=_+1}return c}flatten(e){for(let s of this.children)s.flatten(e)}scanIdentical(e,s){if(!(e instanceof TextNode))return 0;let a=0,[c,h,d,g]=s>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;c+=s,h+=s){if(c==d||h==g)return a;let _=this.children[c],b=e.children[h];if(_!=b)return a+_.scanIdentical(b,s);a+=_.length+1}}static from(e,s=e.reduce((a,c)=>a+c.length+1,-1)){let a=0;for(let et of e)a+=et.lines;if(a<32){let et=[];for(let tt of e)tt.flatten(et);return new TextLeaf(et,s)}let c=Math.max(32,a>>5),h=c<<1,d=c>>1,g=[],_=0,b=-1,$=[];function j(et){let tt;if(et.lines>h&&et instanceof TextNode)for(let nt of et.children)j(nt);else et.lines>d&&(_>d||!_)?(_e(),g.push(et)):et instanceof TextLeaf&&_&&(tt=$[$.length-1])instanceof TextLeaf&&et.lines+tt.lines<=32?(_+=et.lines,b+=et.length+1,$[$.length-1]=new TextLeaf(tt.text.concat(et.text),tt.length+1+et.length)):(_+et.lines>c&&_e(),_+=et.lines,b+=et.length+1,$.push(et))}function _e(){_!=0&&(g.push($.length==1?$[0]:TextNode.from($,b)),b=-1,_=$.length=0)}for(let et of e)j(et);return _e(),g.length==1?g[0]:new TextNode(g,s)}}Text.empty=new TextLeaf([""],0);function textLength(o){let e=-1;for(let s of o)e+=s.length+1;return e}function appendText(o,e,s=0,a=1e9){for(let c=0,h=0,d=!0;h=s&&(_>a&&(g=g.slice(0,a-c)),c0?1:(e instanceof TextLeaf?e.text.length:e.children.length)<<1]}nextInner(e,s){for(this.done=this.lineBreak=!1;;){let a=this.nodes.length-1,c=this.nodes[a],h=this.offsets[a],d=h>>1,g=c instanceof TextLeaf?c.text.length:c.children.length;if(d==(s>0?g:0)){if(a==0)return this.done=!0,this.value="",this;s>0&&this.offsets[a-1]++,this.nodes.pop(),this.offsets.pop()}else if((h&1)==(s>0?0:1)){if(this.offsets[a]+=s,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(c instanceof TextLeaf){let _=c.text[d+(s<0?-1:0)];if(this.offsets[a]+=s,_.length>Math.max(0,e))return this.value=e==0?_:s>0?_.slice(e):_.slice(0,_.length-e),this;e-=_.length}else{let _=c.children[d+(s<0?-1:0)];e>_.length?(e-=_.length,this.offsets[a]+=s):(s<0&&this.offsets[a]--,this.nodes.push(_),this.offsets.push(s>0?1:(_ instanceof TextLeaf?_.text.length:_.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class PartialTextCursor{constructor(e,s,a){this.value="",this.done=!1,this.cursor=new RawTextCursor(e,s>a?-1:1),this.pos=s>a?e.length:0,this.from=Math.min(s,a),this.to=Math.max(s,a)}nextInner(e,s){if(s<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,s<0?this.pos-this.to:this.from-this.pos);let a=s<0?this.pos-this.from:this.to-this.pos;e>a&&(e=a),a-=e;let{value:c}=this.cursor.next(e);return this.pos+=(c.length+e)*s,this.value=c.length<=a?c:s<0?c.slice(c.length-a):c.slice(0,a),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LineCursor{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:s,lineBreak:a,value:c}=this.inner.next(e);return s?(this.done=!0,this.value=""):a?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=c,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(Text.prototype[Symbol.iterator]=function(){return this.iter()},RawTextCursor.prototype[Symbol.iterator]=PartialTextCursor.prototype[Symbol.iterator]=LineCursor.prototype[Symbol.iterator]=function(){return this});class Line{constructor(e,s,a,c){this.from=e,this.to=s,this.number=a,this.text=c}get length(){return this.to-this.from}}let extend="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(o=>o?parseInt(o,36):1);for(let o=1;oo)return extend[e-1]<=o;return!1}function isRegionalIndicator(o){return o>=127462&&o<=127487}const ZWJ=8205;function findClusterBreak(o,e,s=!0,a=!0){return(s?nextClusterBreak:prevClusterBreak)(o,e,a)}function nextClusterBreak(o,e,s){if(e==o.length)return e;e&&surrogateLow(o.charCodeAt(e))&&surrogateHigh(o.charCodeAt(e-1))&&e--;let a=codePointAt(o,e);for(e+=codePointSize(a);e=0&&isRegionalIndicator(codePointAt(o,d));)h++,d-=2;if(h%2==0)break;e+=2}else break}return e}function prevClusterBreak(o,e,s){for(;e>0;){let a=nextClusterBreak(o,e-2,s);if(a=56320&&o<57344}function surrogateHigh(o){return o>=55296&&o<56320}function codePointAt(o,e){let s=o.charCodeAt(e);if(!surrogateHigh(s)||e+1==o.length)return s;let a=o.charCodeAt(e+1);return surrogateLow(a)?(s-55296<<10)+(a-56320)+65536:s}function fromCodePoint(o){return o<=65535?String.fromCharCode(o):(o-=65536,String.fromCharCode((o>>10)+55296,(o&1023)+56320))}function codePointSize(o){return o<65536?1:2}const DefaultSplit=/\r\n?|\n/;var MapMode=function(o){return o[o.Simple=0]="Simple",o[o.TrackDel=1]="TrackDel",o[o.TrackBefore=2]="TrackBefore",o[o.TrackAfter=3]="TrackAfter",o}(MapMode||(MapMode={}));class ChangeDesc{constructor(e){this.sections=e}get length(){let e=0;for(let s=0;se)return h+(e-c);h+=g}else{if(a!=MapMode.Simple&&b>=e&&(a==MapMode.TrackDel&&ce||a==MapMode.TrackBefore&&ce))return null;if(b>e||b==e&&s<0&&!g)return e==c||s<0?h:h+_;h+=_}c=b}if(e>c)throw new RangeError(`Position ${e} is out of range for changeset of length ${c}`);return h}touchesRange(e,s=e){for(let a=0,c=0;a=0&&c<=s&&g>=e)return cs?"cover":!0;c=g}return!1}toString(){let e="";for(let s=0;s=0?":"+c:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(s=>typeof s!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ChangeDesc(e)}static create(e){return new ChangeDesc(e)}}class ChangeSet extends ChangeDesc{constructor(e,s){super(e),this.inserted=s}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return iterChanges(this,(s,a,c,h,d)=>e=e.replace(c,c+(a-s),d),!1),e}mapDesc(e,s=!1){return mapSet(this,e,s,!0)}invert(e){let s=this.sections.slice(),a=[];for(let c=0,h=0;c=0){s[c]=g,s[c+1]=d;let _=c>>1;for(;a.length<_;)a.push(Text.empty);a.push(d?e.slice(h,h+d):Text.empty)}h+=d}return new ChangeSet(s,a)}compose(e){return this.empty?e:e.empty?this:composeSets(this,e,!0)}map(e,s=!1){return e.empty?this:mapSet(this,e,s,!0)}iterChanges(e,s=!1){iterChanges(this,e,s)}get desc(){return ChangeDesc.create(this.sections)}filter(e){let s=[],a=[],c=[],h=new SectionIter(this);e:for(let d=0,g=0;;){let _=d==e.length?1e9:e[d++];for(;g<_||g==_&&h.len==0;){if(h.done)break e;let $=Math.min(h.len,_-g);addSection(c,$,-1);let j=h.ins==-1?-1:h.off==0?h.ins:0;addSection(s,$,j),j>0&&addInsert(a,s,h.text),h.forward($),g+=$}let b=e[d++];for(;g>1].toJSON()))}return e}static of(e,s,a){let c=[],h=[],d=0,g=null;function _($=!1){if(!$&&!c.length)return;d_e||j<0||_e>s)throw new RangeError(`Invalid change range ${j} to ${_e} (in doc of length ${s})`);let tt=et?typeof et=="string"?Text.of(et.split(a||DefaultSplit)):et:Text.empty,nt=tt.length;if(j==_e&&nt==0)return;jd&&addSection(c,j-d,-1),addSection(c,_e-j,nt),addInsert(h,c,tt),d=_e}}return b(e),_(!g),g}static empty(e){return new ChangeSet(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let s=[],a=[];for(let c=0;cg&&typeof d!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(h.length==1)s.push(h[0],0);else{for(;a.length=0&&s<=0&&s==o[c+1]?o[c]+=e:e==0&&o[c]==0?o[c+1]+=s:a?(o[c]+=e,o[c+1]+=s):o.push(e,s)}function addInsert(o,e,s){if(s.length==0)return;let a=e.length-2>>1;if(a>1])),!(s||d==o.sections.length||o.sections[d+1]<0);)g=o.sections[d++],_=o.sections[d++];e(c,b,h,$,j),c=b,h=$}}}function mapSet(o,e,s,a=!1){let c=[],h=a?[]:null,d=new SectionIter(o),g=new SectionIter(e);for(let _=-1;;)if(d.ins==-1&&g.ins==-1){let b=Math.min(d.len,g.len);addSection(c,b,-1),d.forward(b),g.forward(b)}else if(g.ins>=0&&(d.ins<0||_==d.i||d.off==0&&(g.len=0&&_=0){let b=0,$=d.len;for(;$;)if(g.ins==-1){let j=Math.min($,g.len);b+=j,$-=j,g.forward(j)}else if(g.ins==0&&g.len<$)$-=g.len,g.next();else break;addSection(c,b,__||d.ins>=0&&d.len>_)&&(g||a.length>b),h.forward2(_),d.forward(_)}}}}class SectionIter{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return s>=e.length?Text.empty:e[s]}textBit(e){let{inserted:s}=this.set,a=this.i-2>>1;return a>=s.length&&!e?Text.empty:s[a].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class SelectionRange{constructor(e,s,a){this.from=e,this.to=s,this.flags=a}get anchor(){return this.flags&16?this.to:this.from}get head(){return this.flags&16?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&4?-1:this.flags&8?1:0}get bidiLevel(){let e=this.flags&3;return e==3?null:e}get goalColumn(){let e=this.flags>>5;return e==33554431?void 0:e}map(e,s=-1){let a,c;return this.empty?a=c=e.mapPos(this.from,s):(a=e.mapPos(this.from,1),c=e.mapPos(this.to,-1)),a==this.from&&c==this.to?this:new SelectionRange(a,c,this.flags)}extend(e,s=e){if(e<=this.anchor&&s>=this.anchor)return EditorSelection.range(e,s);let a=Math.abs(e-this.anchor)>Math.abs(s-this.anchor)?e:s;return EditorSelection.range(this.anchor,a)}eq(e){return this.anchor==e.anchor&&this.head==e.head}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return EditorSelection.range(e.anchor,e.head)}static create(e,s,a){return new SelectionRange(e,s,a)}}class EditorSelection{constructor(e,s){this.ranges=e,this.mainIndex=s}map(e,s=-1){return e.empty?this:EditorSelection.create(this.ranges.map(a=>a.map(e,s)),this.mainIndex)}eq(e){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let s=0;se.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new EditorSelection(e.ranges.map(s=>SelectionRange.fromJSON(s)),e.main)}static single(e,s=e){return new EditorSelection([EditorSelection.range(e,s)],0)}static create(e,s=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let a=0,c=0;ce?4:0))}static normalized(e,s=0){let a=e[s];e.sort((c,h)=>c.from-h.from),s=e.indexOf(a);for(let c=1;ch.head?EditorSelection.range(_,g):EditorSelection.range(g,_))}}return new EditorSelection(e,s)}}function checkSelection(o,e){for(let s of o.ranges)if(s.to>e)throw new RangeError("Selection points outside of document")}let nextID=0;class Facet{constructor(e,s,a,c,h){this.combine=e,this.compareInput=s,this.compare=a,this.isStatic=c,this.id=nextID++,this.default=e([]),this.extensions=typeof h=="function"?h(this):h}static define(e={}){return new Facet(e.combine||(s=>s),e.compareInput||((s,a)=>s===a),e.compare||(e.combine?(s,a)=>s===a:sameArray$1),!!e.static,e.enables)}of(e){return new FacetProvider([],this,0,e)}compute(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,1,s)}computeN(e,s){if(this.isStatic)throw new Error("Can't compute a static facet");return new FacetProvider(e,this,2,s)}from(e,s){return s||(s=a=>a),this.compute([e],a=>s(a.field(e)))}}function sameArray$1(o,e){return o==e||o.length==e.length&&o.every((s,a)=>s===e[a])}class FacetProvider{constructor(e,s,a,c){this.dependencies=e,this.facet=s,this.type=a,this.value=c,this.id=nextID++}dynamicSlot(e){var s;let a=this.value,c=this.facet.compareInput,h=this.id,d=e[h]>>1,g=this.type==2,_=!1,b=!1,$=[];for(let j of this.dependencies)j=="doc"?_=!0:j=="selection"?b=!0:(((s=e[j.id])!==null&&s!==void 0?s:1)&1)==0&&$.push(e[j.id]);return{create(j){return j.values[d]=a(j),1},update(j,_e){if(_&&_e.docChanged||b&&(_e.docChanged||_e.selection)||ensureAll(j,$)){let et=a(j);if(g?!compareArray(et,j.values[d],c):!c(et,j.values[d]))return j.values[d]=et,1}return 0},reconfigure:(j,_e)=>{let et=a(j),tt=_e.config.address[h];if(tt!=null){let nt=getAddr(_e,tt);if(this.dependencies.every(st=>st instanceof Facet?_e.facet(st)===j.facet(st):st instanceof StateField?_e.field(st,!1)==j.field(st,!1):!0)||(g?compareArray(et,nt,c):c(et,nt)))return j.values[d]=nt,0}return j.values[d]=et,1}}}}function compareArray(o,e,s){if(o.length!=e.length)return!1;for(let a=0;ao[_.id]),c=s.map(_=>_.type),h=a.filter(_=>!(_&1)),d=o[e.id]>>1;function g(_){let b=[];for(let $=0;$a===c),e);return e.provide&&(s.provides=e.provide(s)),s}create(e){let s=e.facet(initField).find(a=>a.field==this);return((s==null?void 0:s.create)||this.createF)(e)}slot(e){let s=e[this.id]>>1;return{create:a=>(a.values[s]=this.create(a),1),update:(a,c)=>{let h=a.values[s],d=this.updateF(h,c);return this.compareF(h,d)?0:(a.values[s]=d,1)},reconfigure:(a,c)=>c.config.address[this.id]!=null?(a.values[s]=c.field(this),0):(a.values[s]=this.create(a),1)}}init(e){return[this,initField.of({field:this,create:e})]}get extension(){return this}}const Prec_={lowest:4,low:3,default:2,high:1,highest:0};function prec(o){return e=>new PrecExtension(e,o)}const Prec={highest:prec(Prec_.highest),high:prec(Prec_.high),default:prec(Prec_.default),low:prec(Prec_.low),lowest:prec(Prec_.lowest)};class PrecExtension{constructor(e,s){this.inner=e,this.prec=s}}class Compartment{of(e){return new CompartmentInstance(this,e)}reconfigure(e){return Compartment.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class CompartmentInstance{constructor(e,s){this.compartment=e,this.inner=s}}class Configuration{constructor(e,s,a,c,h,d){for(this.base=e,this.compartments=s,this.dynamicSlots=a,this.address=c,this.staticValues=h,this.facets=d,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,s,a){let c=[],h=Object.create(null),d=new Map;for(let _e of flatten(e,s,d))_e instanceof StateField?c.push(_e):(h[_e.facet.id]||(h[_e.facet.id]=[])).push(_e);let g=Object.create(null),_=[],b=[];for(let _e of c)g[_e.id]=b.length<<1,b.push(et=>_e.slot(et));let $=a==null?void 0:a.config.facets;for(let _e in h){let et=h[_e],tt=et[0].facet,nt=$&&$[_e]||[];if(et.every(st=>st.type==0))if(g[tt.id]=_.length<<1|1,sameArray$1(nt,et))_.push(a.facet(tt));else{let st=tt.combine(et.map(rt=>rt.value));_.push(a&&tt.compare(st,a.facet(tt))?a.facet(tt):st)}else{for(let st of et)st.type==0?(g[st.id]=_.length<<1|1,_.push(st.value)):(g[st.id]=b.length<<1,b.push(rt=>st.dynamicSlot(rt)));g[tt.id]=b.length<<1,b.push(st=>dynamicFacetSlot(st,tt,et))}}let j=b.map(_e=>_e(g));return new Configuration(e,d,j,g,_,h)}}function flatten(o,e,s){let a=[[],[],[],[],[]],c=new Map;function h(d,g){let _=c.get(d);if(_!=null){if(_<=g)return;let b=a[_].indexOf(d);b>-1&&a[_].splice(b,1),d instanceof CompartmentInstance&&s.delete(d.compartment)}if(c.set(d,g),Array.isArray(d))for(let b of d)h(b,g);else if(d instanceof CompartmentInstance){if(s.has(d.compartment))throw new RangeError("Duplicate use of compartment in extensions");let b=e.get(d.compartment)||d.inner;s.set(d.compartment,b),h(b,g)}else if(d instanceof PrecExtension)h(d.inner,d.prec);else if(d instanceof StateField)a[g].push(d),d.provides&&h(d.provides,g);else if(d instanceof FacetProvider)a[g].push(d),d.facet.extensions&&h(d.facet.extensions,Prec_.default);else{let b=d.extension;if(!b)throw new Error(`Unrecognized extension value in extension set (${d}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);h(b,g)}}return h(o,Prec_.default),a.reduce((d,g)=>d.concat(g))}function ensureAddr(o,e){if(e&1)return 2;let s=e>>1,a=o.status[s];if(a==4)throw new Error("Cyclic dependency between fields and/or facets");if(a&2)return a;o.status[s]=4;let c=o.computeSlot(o,o.config.dynamicSlots[s]);return o.status[s]=2|c}function getAddr(o,e){return e&1?o.config.staticValues[e>>1]:o.values[e>>1]}const languageData=Facet.define(),allowMultipleSelections=Facet.define({combine:o=>o.some(e=>e),static:!0}),lineSeparator=Facet.define({combine:o=>o.length?o[0]:void 0,static:!0}),changeFilter=Facet.define(),transactionFilter=Facet.define(),transactionExtender=Facet.define(),readOnly=Facet.define({combine:o=>o.length?o[0]:!1});class Annotation{constructor(e,s){this.type=e,this.value=s}static define(){return new AnnotationType}}class AnnotationType{of(e){return new Annotation(this,e)}}class StateEffectType{constructor(e){this.map=e}of(e){return new StateEffect(this,e)}}class StateEffect{constructor(e,s){this.type=e,this.value=s}map(e){let s=this.type.map(this.value,e);return s===void 0?void 0:s==this.value?this:new StateEffect(this.type,s)}is(e){return this.type==e}static define(e={}){return new StateEffectType(e.map||(s=>s))}static mapEffects(e,s){if(!e.length)return e;let a=[];for(let c of e){let h=c.map(s);h&&a.push(h)}return a}}StateEffect.reconfigure=StateEffect.define();StateEffect.appendConfig=StateEffect.define();class Transaction{constructor(e,s,a,c,h,d){this.startState=e,this.changes=s,this.selection=a,this.effects=c,this.annotations=h,this.scrollIntoView=d,this._doc=null,this._state=null,a&&checkSelection(a,s.newLength),h.some(g=>g.type==Transaction.time)||(this.annotations=h.concat(Transaction.time.of(Date.now())))}static create(e,s,a,c,h,d){return new Transaction(e,s,a,c,h,d)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let s of this.annotations)if(s.type==e)return s.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let s=this.annotation(Transaction.userEvent);return!!(s&&(s==e||s.length>e.length&&s.slice(0,e.length)==e&&s[e.length]=="."))}}Transaction.time=Annotation.define();Transaction.userEvent=Annotation.define();Transaction.addToHistory=Annotation.define();Transaction.remote=Annotation.define();function joinRanges(o,e){let s=[];for(let a=0,c=0;;){let h,d;if(a=o[a]))h=o[a++],d=o[a++];else if(c=0;c--){let h=a[c](o);h instanceof Transaction?o=h:Array.isArray(h)&&h.length==1&&h[0]instanceof Transaction?o=h[0]:o=resolveTransaction(e,asArray$1(h),!1)}return o}function extendTransaction(o){let e=o.startState,s=e.facet(transactionExtender),a=o;for(let c=s.length-1;c>=0;c--){let h=s[c](o);h&&Object.keys(h).length&&(a=mergeTransaction(o,resolveTransactionInner(e,h,o.changes.newLength),!0))}return a==o?o:Transaction.create(e,o.changes,o.selection,a.effects,a.annotations,a.scrollIntoView)}const none$2=[];function asArray$1(o){return o==null?none$2:Array.isArray(o)?o:[o]}var CharCategory=function(o){return o[o.Word=0]="Word",o[o.Space=1]="Space",o[o.Other=2]="Other",o}(CharCategory||(CharCategory={}));const nonASCIISingleCaseWordChar=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let wordChar;try{wordChar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch(o){}function hasWordChar(o){if(wordChar)return wordChar.test(o);for(let e=0;e"\x80"&&(s.toUpperCase()!=s.toLowerCase()||nonASCIISingleCaseWordChar.test(s)))return!0}return!1}function makeCategorizer(o){return e=>{if(!/\S/.test(e))return CharCategory.Space;if(hasWordChar(e))return CharCategory.Word;for(let s=0;s-1)return CharCategory.Word;return CharCategory.Other}}class EditorState{constructor(e,s,a,c,h,d){this.config=e,this.doc=s,this.selection=a,this.values=c,this.status=e.statusTemplate.slice(),this.computeSlot=h,d&&(d._state=this);for(let g=0;gc.set(_,g)),s=null),c.set(d.value.compartment,d.value.extension)):d.is(StateEffect.reconfigure)?(s=null,a=d.value):d.is(StateEffect.appendConfig)&&(s=null,a=asArray$1(a).concat(d.value));let h;s?h=e.startState.values.slice():(s=Configuration.resolve(a,c,this),h=new EditorState(s,this.doc,this.selection,s.dynamicSlots.map(()=>null),(g,_)=>_.reconfigure(g,this),null).values),new EditorState(s,e.newDoc,e.newSelection,h,(d,g)=>g.update(d,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(s=>({changes:{from:s.from,to:s.to,insert:e},range:EditorSelection.cursor(s.from+e.length)}))}changeByRange(e){let s=this.selection,a=e(s.ranges[0]),c=this.changes(a.changes),h=[a.range],d=asArray$1(a.effects);for(let g=1;gd.spec.fromJSON(g,_)))}}return EditorState.create({doc:e.doc,selection:EditorSelection.fromJSON(e.selection),extensions:s.extensions?c.concat([s.extensions]):c})}static create(e={}){let s=Configuration.resolve(e.extensions||[],new Map),a=e.doc instanceof Text?e.doc:Text.of((e.doc||"").split(s.staticFacet(EditorState.lineSeparator)||DefaultSplit)),c=e.selection?e.selection instanceof EditorSelection?e.selection:EditorSelection.single(e.selection.anchor,e.selection.head):EditorSelection.single(0);return checkSelection(c,a.length),s.staticFacet(allowMultipleSelections)||(c=c.asSingle()),new EditorState(s,a,c,s.dynamicSlots.map(()=>null),(h,d)=>d.create(h),null)}get tabSize(){return this.facet(EditorState.tabSize)}get lineBreak(){return this.facet(EditorState.lineSeparator)||` -`}get readOnly(){return this.facet(readOnly)}phrase(e,...s){for(let a of this.facet(EditorState.phrases))if(Object.prototype.hasOwnProperty.call(a,e)){e=a[e];break}return s.length&&(e=e.replace(/\$(\$|\d*)/g,(a,c)=>{if(c=="$")return"$";let h=+(c||1);return!h||h>s.length?a:s[h-1]})),e}languageDataAt(e,s,a=-1){let c=[];for(let h of this.facet(languageData))for(let d of h(this,s,a))Object.prototype.hasOwnProperty.call(d,e)&&c.push(d[e]);return c}charCategorizer(e){return makeCategorizer(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:s,from:a,length:c}=this.doc.lineAt(e),h=this.charCategorizer(e),d=e-a,g=e-a;for(;d>0;){let _=findClusterBreak(s,d,!1);if(h(s.slice(_,d))!=CharCategory.Word)break;d=_}for(;go.length?o[0]:4});EditorState.lineSeparator=lineSeparator;EditorState.readOnly=readOnly;EditorState.phrases=Facet.define({compare(o,e){let s=Object.keys(o),a=Object.keys(e);return s.length==a.length&&s.every(c=>o[c]==e[c])}});EditorState.languageData=languageData;EditorState.changeFilter=changeFilter;EditorState.transactionFilter=transactionFilter;EditorState.transactionExtender=transactionExtender;Compartment.reconfigure=StateEffect.define();function combineConfig(o,e,s={}){let a={};for(let c of o)for(let h of Object.keys(c)){let d=c[h],g=a[h];if(g===void 0)a[h]=d;else if(!(g===d||d===void 0))if(Object.hasOwnProperty.call(s,h))a[h]=s[h](g,d);else throw new Error("Config merge conflict for field "+h)}for(let c in e)a[c]===void 0&&(a[c]=e[c]);return a}class RangeValue{eq(e){return this==e}range(e,s=e){return Range$1.create(e,s,this)}}RangeValue.prototype.startSide=RangeValue.prototype.endSide=0;RangeValue.prototype.point=!1;RangeValue.prototype.mapMode=MapMode.TrackDel;class Range$1{constructor(e,s,a){this.from=e,this.to=s,this.value=a}static create(e,s,a){return new Range$1(e,s,a)}}function cmpRange(o,e){return o.from-e.from||o.value.startSide-e.value.startSide}class Chunk{constructor(e,s,a,c){this.from=e,this.to=s,this.value=a,this.maxPoint=c}get length(){return this.to[this.to.length-1]}findIndex(e,s,a,c=0){let h=a?this.to:this.from;for(let d=c,g=h.length;;){if(d==g)return d;let _=d+g>>1,b=h[_]-e||(a?this.value[_].endSide:this.value[_].startSide)-s;if(_==d)return b>=0?d:g;b>=0?g=_:d=_+1}}between(e,s,a,c){for(let h=this.findIndex(s,-1e9,!0),d=this.findIndex(a,1e9,!1,h);het||_e==et&&b.startSide>0&&b.endSide<=0)continue;(et-_e||b.endSide-b.startSide)<0||(d<0&&(d=_e),b.point&&(g=Math.max(g,et-_e)),a.push(b),c.push(_e-d),h.push(et-d))}return{mapped:a.length?new Chunk(c,h,a,g):null,pos:d}}}class RangeSet{constructor(e,s,a,c){this.chunkPos=e,this.chunk=s,this.nextLayer=a,this.maxPoint=c}static create(e,s,a,c){return new RangeSet(e,s,a,c)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let s of this.chunk)e+=s.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:s=[],sort:a=!1,filterFrom:c=0,filterTo:h=this.length}=e,d=e.filter;if(s.length==0&&!d)return this;if(a&&(s=s.slice().sort(cmpRange)),this.isEmpty)return s.length?RangeSet.of(s):this;let g=new LayerCursor(this,null,-1).goto(0),_=0,b=[],$=new RangeSetBuilder;for(;g.value||_=0){let j=s[_++];$.addInner(j.from,j.to,j.value)||b.push(j)}else g.rangeIndex==1&&g.chunkIndexthis.chunkEnd(g.chunkIndex)||hg.to||h=h&&e<=h+d.length&&d.between(h,e-h,s-h,a)===!1)return}this.nextLayer.between(e,s,a)}}iter(e=0){return HeapCursor.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,s=0){return HeapCursor.from(e).goto(s)}static compare(e,s,a,c,h=-1){let d=e.filter(j=>j.maxPoint>0||!j.isEmpty&&j.maxPoint>=h),g=s.filter(j=>j.maxPoint>0||!j.isEmpty&&j.maxPoint>=h),_=findSharedChunks(d,g,a),b=new SpanCursor(d,_,h),$=new SpanCursor(g,_,h);a.iterGaps((j,_e,et)=>compare(b,j,$,_e,et,c)),a.empty&&a.length==0&&compare(b,0,$,0,0,c)}static eq(e,s,a=0,c){c==null&&(c=1e9);let h=e.filter($=>!$.isEmpty&&s.indexOf($)<0),d=s.filter($=>!$.isEmpty&&e.indexOf($)<0);if(h.length!=d.length)return!1;if(!h.length)return!0;let g=findSharedChunks(h,d),_=new SpanCursor(h,g,0).goto(a),b=new SpanCursor(d,g,0).goto(a);for(;;){if(_.to!=b.to||!sameValues(_.active,b.active)||_.point&&(!b.point||!_.point.eq(b.point)))return!1;if(_.to>c)return!0;_.next(),b.next()}}static spans(e,s,a,c,h=-1){let d=new SpanCursor(e,null,h).goto(s),g=s,_=d.openStart;for(;;){let b=Math.min(d.to,a);if(d.point?(c.point(g,b,d.point,d.activeForPoint(d.to),_,d.pointRank),_=d.openEnd(b)+(d.to>b?1:0)):b>g&&(c.span(g,b,d.active,_),_=d.openEnd(b)),d.to>a)break;g=d.to,d.next()}return _}static of(e,s=!1){let a=new RangeSetBuilder;for(let c of e instanceof Range$1?[e]:s?lazySort(e):e)a.add(c.from,c.to,c.value);return a.finish()}}RangeSet.empty=new RangeSet([],[],null,-1);function lazySort(o){if(o.length>1)for(let e=o[0],s=1;s0)return o.slice().sort(cmpRange);e=a}return o}RangeSet.empty.nextLayer=RangeSet.empty;class RangeSetBuilder{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}finishChunk(e){this.chunks.push(new Chunk(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}add(e,s,a){this.addInner(e,s,a)||(this.nextLayer||(this.nextLayer=new RangeSetBuilder)).add(e,s,a)}addInner(e,s,a){let c=e-this.lastTo||a.startSide-this.last.endSide;if(c<=0&&(e-this.lastFrom||a.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return c<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(s-this.chunkStart),this.last=a,this.lastFrom=e,this.lastTo=s,this.value.push(a),a.point&&(this.maxPoint=Math.max(this.maxPoint,s-e)),!0)}addChunk(e,s){if((e-this.lastTo||s.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,s.maxPoint),this.chunks.push(s),this.chunkPos.push(e);let a=s.value.length-1;return this.last=s.value[a],this.lastFrom=s.from[a]+e,this.lastTo=s.to[a]+e,!0}finish(){return this.finishInner(RangeSet.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let s=RangeSet.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,s}}function findSharedChunks(o,e,s){let a=new Map;for(let h of o)for(let d=0;d=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=a&&c.push(new LayerCursor(d,s,a,h));return c.length==1?c[0]:new HeapCursor(c)}get startSide(){return this.value?this.value.startSide:0}goto(e,s=-1e9){for(let a of this.heap)a.goto(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);return this.next(),this}forward(e,s){for(let a of this.heap)a.forward(e,s);for(let a=this.heap.length>>1;a>=0;a--)heapBubble(this.heap,a);(this.to-e||this.value.endSide-s)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),heapBubble(this.heap,0)}}}function heapBubble(o,e){for(let s=o[e];;){let a=(e<<1)+1;if(a>=o.length)break;let c=o[a];if(a+1=0&&(c=o[a+1],a++),s.compare(c)<0)break;o[a]=s,o[e]=c,e=a}}class SpanCursor{constructor(e,s,a){this.minPoint=a,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=HeapCursor.from(e,s,a)}goto(e,s=-1e9){return this.cursor.goto(e,s),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=s,this.openStart=-1,this.next(),this}forward(e,s){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-s)<0;)this.removeActive(this.minActive);this.cursor.forward(e,s)}removeActive(e){remove(this.active,e),remove(this.activeTo,e),remove(this.activeRank,e),this.minActive=findMinIndex(this.active,this.activeTo)}addActive(e){let s=0,{value:a,to:c,rank:h}=this.cursor;for(;s-1&&(this.activeTo[h]-this.cursor.from||this.active[h].endSide-this.cursor.startSide)<0){if(this.activeTo[h]>e){this.to=this.activeTo[h],this.endSide=this.active[h].endSide;break}this.removeActive(h),a&&remove(a,h)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let d=this.cursor.value;if(!d.point)this.addActive(a),this.cursor.frome&&c++,this.cursor.next();else if(s&&this.cursor.to==this.to&&this.cursor.from=0&&!(this.activeRank[a]e||this.activeTo[a]==e&&this.active[a].endSide>=this.point.endSide)&&s.push(this.active[a]);return s.reverse()}openEnd(e){let s=0;for(let a=this.activeTo.length-1;a>=0&&this.activeTo[a]>e;a--)s++;return s}}function compare(o,e,s,a,c,h){o.goto(e),s.goto(a);let d=a+c,g=a,_=a-e;for(;;){let b=o.to+_-s.to||o.endSide-s.endSide,$=b<0?o.to+_:s.to,j=Math.min($,d);if(o.point||s.point?o.point&&s.point&&(o.point==s.point||o.point.eq(s.point))&&sameValues(o.activeForPoint(o.to+_),s.activeForPoint(s.to))||h.comparePoint(g,j,o.point,s.point):j>g&&!sameValues(o.active,s.active)&&h.compareRange(g,j,o.active,s.active),$>d)break;g=$,b<=0&&o.next(),b>=0&&s.next()}}function sameValues(o,e){if(o.length!=e.length)return!1;for(let s=0;s=e;a--)o[a+1]=o[a];o[e]=s}function findMinIndex(o,e){let s=-1,a=1e9;for(let c=0;c=e)return c;if(c==o.length)break;h+=o.charCodeAt(c)==9?s-h%s:1,c=findClusterBreak(o,c)}return a===!0?-1:o.length}const C="\u037C",COUNT=typeof Symbol>"u"?"__"+C:Symbol.for(C),SET=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),top=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class StyleModule{constructor(e,s){this.rules=[];let{finish:a}=s||{};function c(d){return/^@/.test(d)?[d]:d.split(/,\s*/)}function h(d,g,_,b){let $=[],j=/^@(\w+)\b/.exec(d[0]),_e=j&&j[1]=="keyframes";if(j&&g==null)return _.push(d[0]+";");for(let et in g){let tt=g[et];if(/&/.test(et))h(et.split(/,\s*/).map(nt=>d.map(st=>nt.replace(/&/,st))).reduce((nt,st)=>nt.concat(st)),tt,_);else if(tt&&typeof tt=="object"){if(!j)throw new RangeError("The value of a property ("+et+") should be a primitive value.");h(c(et),tt,$,_e)}else tt!=null&&$.push(et.replace(/_.*/,"").replace(/[A-Z]/g,nt=>"-"+nt.toLowerCase())+": "+tt+";")}($.length||_e)&&_.push((a&&!j&&!b?d.map(a):d).join(", ")+" {"+$.join(" ")+"}")}for(let d in e)h(c(d),e[d],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=top[COUNT]||1;return top[COUNT]=e+1,C+e.toString(36)}static mount(e,s){(e[SET]||new StyleSet(e)).mount(Array.isArray(s)?s:[s])}}let adoptedSet=null;class StyleSet{constructor(e){if(!e.head&&e.adoptedStyleSheets&&typeof CSSStyleSheet<"u"){if(adoptedSet)return e.adoptedStyleSheets=[adoptedSet.sheet].concat(e.adoptedStyleSheets),e[SET]=adoptedSet;this.sheet=new CSSStyleSheet,e.adoptedStyleSheets=[this.sheet].concat(e.adoptedStyleSheets),adoptedSet=this}else{this.styleTag=(e.ownerDocument||e).createElement("style");let s=e.head||e;s.insertBefore(this.styleTag,s.firstChild)}this.modules=[],e[SET]=this}mount(e){let s=this.sheet,a=0,c=0;for(let h=0;h-1&&(this.modules.splice(g,1),c--,g=-1),g==-1){if(this.modules.splice(c++,0,d),s)for(let _=0;_",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"',229:"Q"},chrome$1=typeof navigator<"u"&&/Chrome\/(\d+)/.exec(navigator.userAgent),safari$1=typeof navigator<"u"&&/Apple Computer/.test(navigator.vendor),gecko$1=typeof navigator<"u"&&/Gecko\/\d+/.test(navigator.userAgent),mac=typeof navigator<"u"&&/Mac/.test(navigator.platform),ie$1=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),brokenModifierNames=chrome$1&&(mac||+chrome$1[1]<57)||gecko$1&&mac;for(var i=0;i<10;i++)base[48+i]=base[96+i]=String(i);for(var i=1;i<=24;i++)base[i+111]="F"+i;for(var i=65;i<=90;i++)base[i]=String.fromCharCode(i+32),shift[i]=String.fromCharCode(i);for(var code in base)shift.hasOwnProperty(code)||(shift[code]=base[code]);function keyName(o){var e=brokenModifierNames&&(o.ctrlKey||o.altKey||o.metaKey)||(safari$1||ie$1)&&o.shiftKey&&o.key&&o.key.length==1,s=!e&&o.key||(o.shiftKey?shift:base)[o.keyCode]||o.key||"Unidentified";return s=="Esc"&&(s="Escape"),s=="Del"&&(s="Delete"),s=="Left"&&(s="ArrowLeft"),s=="Up"&&(s="ArrowUp"),s=="Right"&&(s="ArrowRight"),s=="Down"&&(s="ArrowDown"),s}function getSelection(o){let e;return o.nodeType==11?e=o.getSelection?o:o.ownerDocument:e=o,e.getSelection()}function contains(o,e){return e?o==e||o.contains(e.nodeType!=1?e.parentNode:e):!1}function deepActiveElement(){let o=document.activeElement;for(;o&&o.shadowRoot;)o=o.shadowRoot.activeElement;return o}function hasSelection(o,e){if(!e.anchorNode)return!1;try{return contains(o,e.anchorNode)}catch{return!1}}function clientRectsFor(o){return o.nodeType==3?textRange(o,0,o.nodeValue.length).getClientRects():o.nodeType==1?o.getClientRects():[]}function isEquivalentPosition(o,e,s,a){return s?scanFor(o,e,s,a,-1)||scanFor(o,e,s,a,1):!1}function domIndex(o){for(var e=0;;e++)if(o=o.previousSibling,!o)return e}function scanFor(o,e,s,a,c){for(;;){if(o==s&&e==a)return!0;if(e==(c<0?0:maxOffset(o))){if(o.nodeName=="DIV")return!1;let h=o.parentNode;if(!h||h.nodeType!=1)return!1;e=domIndex(o)+(c<0?0:1),o=h}else if(o.nodeType==1){if(o=o.childNodes[e+(c<0?-1:0)],o.nodeType==1&&o.contentEditable=="false")return!1;e=c<0?maxOffset(o):0}else return!1}}function maxOffset(o){return o.nodeType==3?o.nodeValue.length:o.childNodes.length}const Rect0={left:0,right:0,top:0,bottom:0};function flattenRect(o,e){let s=e?o.left:o.right;return{left:s,right:s,top:o.top,bottom:o.bottom}}function windowRect(o){return{left:0,right:o.innerWidth,top:0,bottom:o.innerHeight}}function scrollRectIntoView(o,e,s,a,c,h,d,g){let _=o.ownerDocument,b=_.defaultView;for(let $=o;$;)if($.nodeType==1){let j,_e=$==_.body;if(_e)j=windowRect(b);else{if($.scrollHeight<=$.clientHeight&&$.scrollWidth<=$.clientWidth){$=$.parentNode;continue}let nt=$.getBoundingClientRect();j={left:nt.left,right:nt.left+$.clientWidth,top:nt.top,bottom:nt.top+$.clientHeight}}let et=0,tt=0;if(c=="nearest")e.top0&&e.bottom>j.bottom+tt&&(tt=e.bottom-j.bottom+tt+d)):e.bottom>j.bottom&&(tt=e.bottom-j.bottom+d,s<0&&e.top-tt0&&e.right>j.right+et&&(et=e.right-j.right+et+h)):e.right>j.right&&(et=e.right-j.right+h,s<0&&e.lefts)return j.domBoundsAround(e,s,b);if(_e>=e&&c==-1&&(c=_,h=b),b>s&&j.dom.parentNode==this.dom){d=_,g=$;break}$=_e,b=_e+j.breakAfter}return{from:h,to:g<0?a+this.length:g,startDOM:(c?this.children[c-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:d=0?this.children[d].dom:null}}markDirty(e=!1){this.dirty|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let s=this.parent;s;s=s.parent){if(e&&(s.dirty|=2),s.dirty&1)return;s.dirty|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.dirty&&this.markParentsDirty(!0))}setDOM(e){this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this}get rootView(){for(let e=this;;){let s=e.parent;if(!s)return e;e=s}}replaceChildren(e,s,a=noChildren){this.markDirty();for(let c=e;cthis.pos||e==this.pos&&(s>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let a=this.children[--this.i];this.pos-=a.length+a.breakAfter}}}function replaceRange(o,e,s,a,c,h,d,g,_){let{children:b}=o,$=b.length?b[e]:null,j=h.length?h[h.length-1]:null,_e=j?j.breakAfter:d;if(!(e==a&&$&&!d&&!_e&&h.length<2&&$.merge(s,c,h.length?j:null,s==0,g,_))){if(a0&&(!d&&h.length&&$.merge(s,$.length,h[0],!1,g,0)?$.breakAfter=h.shift().breakAfter:(s<$.length||$.children.length&&$.children[$.children.length-1].length==0)&&$.merge(s,$.length,null,!1,g,0),e++));e2);var browser={mac:ios||/Mac/.test(nav.platform),windows:/Win/.test(nav.platform),linux:/Linux|X11/.test(nav.platform),ie,ie_version:ie_upto10?doc.documentMode||6:ie_11up?+ie_11up[1]:ie_edge?+ie_edge[1]:0,gecko,gecko_version:gecko?+(/Firefox\/(\d+)/.exec(nav.userAgent)||[0,0])[1]:0,chrome:!!chrome,chrome_version:chrome?+chrome[1]:0,ios,android:/Android\b/.test(nav.userAgent),webkit,safari,webkit_version:webkit?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0,tabSize:doc.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};const MaxJoinLen=256;class TextView extends ContentView{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(e&&e.node==this.dom&&(e.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,s,a){return a&&(!(a instanceof TextView)||this.length-(s-e)+a.length>MaxJoinLen)?!1:(this.text=this.text.slice(0,e)+(a?a.text:"")+this.text.slice(s),this.markDirty(),!0)}split(e){let s=new TextView(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),s}localPosFromDOM(e,s){return e==this.dom?s:s?this.text.length:0}domAtPos(e){return new DOMPos(this.dom,e)}domBoundsAround(e,s,a){return{from:a,to:a+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,s){return textCoords(this.dom,e,s)}}class MarkView extends ContentView{constructor(e,s=[],a=0){super(),this.mark=e,this.children=s,this.length=a;for(let c of s)c.setParent(this)}setAttrs(e){if(clearAttributes(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let s in this.mark.attrs)e.setAttribute(s,this.mark.attrs[s]);return e}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.dirty|=6)}sync(e){this.dom?this.dirty&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e)}merge(e,s,a,c,h,d){return a&&(!(a instanceof MarkView&&a.mark.eq(this.mark))||e&&h<=0||se&&s.push(a=e&&(c=h),a=_,h++}let d=this.length-e;return this.length=e,c>-1&&(this.children.length=c,this.markDirty()),new MarkView(this.mark,s,d)}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}coordsAt(e,s){return coordsInChildren(this,e,s)}}function textCoords(o,e,s){let a=o.nodeValue.length;e>a&&(e=a);let c=e,h=e,d=0;e==0&&s<0||e==a&&s>=0?browser.chrome||browser.gecko||(e?(c--,d=1):h=0)?0:g.length-1];return browser.safari&&!d&&_.width==0&&(_=Array.prototype.find.call(g,b=>b.width)||_),d?flattenRect(_,d<0):_||null}class WidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.side=a,this.prevWidget=null}static create(e,s,a){return new(e.customView||WidgetView)(e,s,a)}split(e){let s=WidgetView.create(this.widget,this.length-e,this.side);return this.length-=e,s}sync(){(!this.dom||!this.widget.updateDOM(this.dom))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(this.editorView)),this.dom.contentEditable="false")}getSide(){return this.side}merge(e,s,a,c,h,d){return a&&(!(a instanceof WidgetView)||!this.widget.compare(a.widget)||e>0&&h<=0||s0?a.length-1:0;c=a[h],!(e>0?h==0:h==a.length-1||c.top0?-1:1);return e==0&&s>0||e==this.length&&s<=0?c:flattenRect(c,e==0)}get isEditable(){return!1}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class CompositionView extends WidgetView{domAtPos(e){let{topView:s,text:a}=this.widget;return s?scanCompositionTree(e,0,s,a,(c,h)=>c.domAtPos(h),c=>new DOMPos(a,Math.min(c,a.nodeValue.length))):new DOMPos(a,Math.min(e,a.nodeValue.length))}sync(){this.setDOM(this.widget.toDOM())}localPosFromDOM(e,s){let{topView:a,text:c}=this.widget;return a?posFromDOMInCompositionTree(e,s,a,c):Math.min(s,this.length)}ignoreMutation(){return!1}get overrideDOMText(){return null}coordsAt(e,s){let{topView:a,text:c}=this.widget;return a?scanCompositionTree(e,s,a,c,(h,d,g)=>h.coordsAt(d,g),(h,d)=>textCoords(c,h,d)):textCoords(c,e,s)}destroy(){var e;super.destroy(),(e=this.widget.topView)===null||e===void 0||e.destroy()}get isEditable(){return!0}}function scanCompositionTree(o,e,s,a,c,h){if(s instanceof MarkView){for(let d of s.children){let g=contains(d.dom,a),_=g?a.nodeValue.length:d.length;if(o<_||o==_&&d.getSide()<=0)return g?scanCompositionTree(o,e,d,a,c,h):c(d,o,e);o-=_}return c(s,s.length,-1)}else return s.dom==a?h(o,e):c(s,o,e)}function posFromDOMInCompositionTree(o,e,s,a){if(s instanceof MarkView)for(let c of s.children){let h=0,d=contains(c.dom,a);if(contains(c.dom,o))return h+(d?posFromDOMInCompositionTree(o,e,c,a):c.localPosFromDOM(o,e));h+=d?a.nodeValue.length:c.length}else if(s.dom==a)return Math.min(e,a.nodeValue.length);return s.localPosFromDOM(o,e)}class WidgetBufferView extends ContentView{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof WidgetBufferView&&e.side==this.side}split(){return new WidgetBufferView(this.side)}sync(){if(!this.dom){let e=document.createElement("img");e.className="cm-widgetBuffer",e.setAttribute("aria-hidden","true"),this.setDOM(e)}}getSide(){return this.side}domAtPos(e){return DOMPos.before(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){let s=this.dom.getBoundingClientRect(),a=inlineSiblingRect(this,this.side>0?-1:1);return a&&a.tops.top?{left:s.left,right:s.right,top:a.top,bottom:a.bottom}:s}get overrideDOMText(){return Text.empty}}TextView.prototype.children=WidgetView.prototype.children=WidgetBufferView.prototype.children=noChildren;function inlineSiblingRect(o,e){let s=o.parent,a=s?s.children.indexOf(o):-1;for(;s&&a>=0;)if(e<0?a>0:ac&&s0;a--){let c=e[a-1].dom;if(c.parentNode==o)return DOMPos.after(c)}return new DOMPos(o,0)}function joinInlineInto(o,e,s){let a,{children:c}=o;s>0&&e instanceof MarkView&&c.length&&(a=c[c.length-1])instanceof MarkView&&a.mark.eq(e.mark)?joinInlineInto(a,e.children[0],s-1):(c.push(e),e.setParent(o)),o.length+=e.length}function coordsInChildren(o,e,s){for(let h=0,d=0;d0?_>=e:_>e)&&(e<_||d+1==o.children.length||(b=o.children[d+1]).length||b.getSide()>0)){let $=0;if(_==h){if(g.getSide()<=0)continue;$=s=-g.getSide()}let j=g.coordsAt(Math.max(0,e-h),s);return $&&j?flattenRect(j,s<0):j}h=_}let a=o.dom.lastChild;if(!a)return o.dom.getBoundingClientRect();let c=clientRectsFor(a);return c[c.length-1]||null}function combineAttrs(o,e){for(let s in o)s=="class"&&e.class?e.class+=" "+o.class:s=="style"&&e.style?e.style+=";"+o.style:e[s]=o[s];return e}function attrsEq(o,e){if(o==e)return!0;if(!o||!e)return!1;let s=Object.keys(o),a=Object.keys(e);if(s.length!=a.length)return!1;for(let c of s)if(a.indexOf(c)==-1||o[c]!==e[c])return!1;return!0}function updateAttrs(o,e,s){let a=null;if(e)for(let c in e)s&&c in s||o.removeAttribute(a=c);if(s)for(let c in s)e&&e[c]==s[c]||o.setAttribute(a=c,s[c]);return!!a}class WidgetType{eq(e){return!1}updateDOM(e){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}ignoreEvent(e){return!0}get customView(){return null}destroy(e){}}var BlockType=function(o){return o[o.Text=0]="Text",o[o.WidgetBefore=1]="WidgetBefore",o[o.WidgetAfter=2]="WidgetAfter",o[o.WidgetRange=3]="WidgetRange",o}(BlockType||(BlockType={}));class Decoration extends RangeValue{constructor(e,s,a,c){super(),this.startSide=e,this.endSide=s,this.widget=a,this.spec=c}get heightRelevant(){return!1}static mark(e){return new MarkDecoration(e)}static widget(e){let s=e.side||0,a=!!e.block;return s+=a?s>0?3e8:-4e8:s>0?1e8:-1e8,new PointDecoration(e,s,s,a,e.widget||null,!1)}static replace(e){let s=!!e.block,a,c;if(e.isBlockGap)a=-5e8,c=4e8;else{let{start:h,end:d}=getInclusive(e,s);a=(h?s?-3e8:-1:5e8)-1,c=(d?s?2e8:1:-6e8)+1}return new PointDecoration(e,a,c,s,e.widget||null,!0)}static line(e){return new LineDecoration(e)}static set(e,s=!1){return RangeSet.of(e,s)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Decoration.none=RangeSet.empty;class MarkDecoration extends Decoration{constructor(e){let{start:s,end:a}=getInclusive(e);super(s?-1:5e8,a?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){return this==e||e instanceof MarkDecoration&&this.tagName==e.tagName&&this.class==e.class&&attrsEq(this.attrs,e.attrs)}range(e,s=e){if(e>=s)throw new RangeError("Mark decorations may not be empty");return super.range(e,s)}}MarkDecoration.prototype.point=!1;class LineDecoration extends Decoration{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof LineDecoration&&attrsEq(this.spec.attributes,e.spec.attributes)}range(e,s=e){if(s!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,s)}}LineDecoration.prototype.mapMode=MapMode.TrackBefore;LineDecoration.prototype.point=!0;class PointDecoration extends Decoration{constructor(e,s,a,c,h,d){super(s,a,h,e),this.block=c,this.isReplace=d,this.mapMode=c?s<=0?MapMode.TrackBefore:MapMode.TrackAfter:MapMode.TrackDel}get type(){return this.startSide=5}eq(e){return e instanceof PointDecoration&&widgetsEq(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,s=e){if(this.isReplace&&(e>s||e==s&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&s!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,s)}}PointDecoration.prototype.point=!0;function getInclusive(o,e=!1){let{inclusiveStart:s,inclusiveEnd:a}=o;return s==null&&(s=o.inclusive),a==null&&(a=o.inclusive),{start:s!=null?s:e,end:a!=null?a:e}}function widgetsEq(o,e){return o==e||!!(o&&e&&o.compare(e))}function addRange(o,e,s,a=0){let c=s.length-1;c>=0&&s[c]+a>=o?s[c]=Math.max(s[c],e):s.push(o,e)}class LineView extends ContentView{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,s,a,c,h,d){if(a){if(!(a instanceof LineView))return!1;this.dom||a.transferDOM(this)}return c&&this.setDeco(a?a.attrs:null),mergeChildrenInto(this,e,s,a?a.children:[],h,d),!0}split(e){let s=new LineView;if(s.breakAfter=this.breakAfter,this.length==0)return s;let{i:a,off:c}=this.childPos(e);c&&(s.append(this.children[a].split(c),0),this.children[a].merge(c,this.children[a].length,null,!1,0,0),a++);for(let h=a;h0&&this.children[a-1].length==0;)this.children[--a].destroy();return this.children.length=a,this.markDirty(),this.length=e,s}transferDOM(e){!this.dom||(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){attrsEq(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,s){joinInlineInto(this,e,s)}addLineDeco(e){let s=e.spec.attributes,a=e.spec.class;s&&(this.attrs=combineAttrs(s,this.attrs||{})),a&&(this.attrs=combineAttrs({class:a},this.attrs||{}))}domAtPos(e){return inlineDOMAtPos(this.dom,this.children,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.dirty|=6)}sync(e){var s;this.dom?this.dirty&4&&(clearAttributes(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(updateAttrs(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e);let a=this.dom.lastChild;for(;a&&ContentView.get(a)instanceof MarkView;)a=a.lastChild;if(!a||!this.length||a.nodeName!="BR"&&((s=ContentView.get(a))===null||s===void 0?void 0:s.isEditable)==!1&&(!browser.ios||!this.children.some(c=>c instanceof TextView))){let c=document.createElement("BR");c.cmIgnore=!0,this.dom.appendChild(c)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0;for(let s of this.children){if(!(s instanceof TextView)||/[^ -~]/.test(s.text))return null;let a=clientRectsFor(s.dom);if(a.length!=1)return null;e+=a[0].width}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length}:null}coordsAt(e,s){return coordsInChildren(this,e,s)}become(e){return!1}get type(){return BlockType.Text}static find(e,s){for(let a=0,c=0;a=s){if(h instanceof LineView)return h;if(d>s)break}c=d+h.breakAfter}return null}}class BlockWidgetView extends ContentView{constructor(e,s,a){super(),this.widget=e,this.length=s,this.type=a,this.breakAfter=0,this.prevWidget=null}merge(e,s,a,c,h,d){return a&&(!(a instanceof BlockWidgetView)||!this.widget.compare(a.widget)||e>0&&h<=0||s0;){if(this.textOff==this.text.length){let{value:h,lineBreak:d,done:g}=this.cursor.next(this.skip);if(this.skip=0,g)throw new Error("Ran out of text content when drawing inline views");if(d){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer([]),this.curLine=null,e--;continue}else this.text=h,this.textOff=0}let c=Math.min(this.text.length-this.textOff,e,512);this.flushBuffer(s.slice(0,a)),this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff,this.textOff+c)),s),a),this.atCursorPos=!0,this.textOff+=c,e-=c,a=0}}span(e,s,a,c){this.buildText(s-e,a,c),this.pos=s,this.openStart<0&&(this.openStart=c)}point(e,s,a,c,h,d){if(this.disallowBlockEffectsFor[d]&&a instanceof PointDecoration){if(a.block)throw new RangeError("Block decorations may not be specified via plugins");if(s>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let g=s-e;if(a instanceof PointDecoration)if(a.block){let{type:_}=a;_==BlockType.WidgetAfter&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new BlockWidgetView(a.widget||new NullWidget("div"),g,_))}else{let _=WidgetView.create(a.widget||new NullWidget("span"),g,a.startSide),b=this.atCursorPos&&!_.isEditable&&h<=c.length&&(e0),$=!_.isEditable&&(eo.some(e=>e)});class ScrollTarget{constructor(e,s="nearest",a="nearest",c=5,h=5){this.range=e,this.y=s,this.x=a,this.yMargin=c,this.xMargin=h}map(e){return e.empty?this:new ScrollTarget(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin)}}const scrollIntoView$1=StateEffect.define({map:(o,e)=>o.map(e)});function logException(o,e,s){let a=o.facet(exceptionSink);a.length?a[0](e):window.onerror?window.onerror(String(e),s,void 0,void 0,e):s?console.error(s+":",e):console.error(e)}const editable=Facet.define({combine:o=>o.length?o[0]:!0});let nextPluginID=0;const viewPlugin=Facet.define();class ViewPlugin{constructor(e,s,a,c){this.id=e,this.create=s,this.domEventHandlers=a,this.extension=c(this)}static define(e,s){const{eventHandlers:a,provide:c,decorations:h}=s||{};return new ViewPlugin(nextPluginID++,e,a,d=>{let g=[viewPlugin.of(d)];return h&&g.push(decorations.of(_=>{let b=_.plugin(d);return b?h(b):Decoration.none})),c&&g.push(c(d)),g})}static fromClass(e,s){return ViewPlugin.define(a=>new e(a),s)}}class PluginInstance{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}update(e){if(this.value){if(this.mustUpdate){let s=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(s)}catch(a){if(logException(s.state,a,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.create(e)}catch(s){logException(e.state,s,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var s;if(!((s=this.value)===null||s===void 0)&&s.destroy)try{this.value.destroy()}catch(a){logException(e.state,a,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const editorAttributes=Facet.define(),contentAttributes=Facet.define(),decorations=Facet.define(),atomicRanges=Facet.define(),scrollMargins=Facet.define(),styleModule=Facet.define();class ChangedRange{constructor(e,s,a,c){this.fromA=e,this.toA=s,this.fromB=a,this.toB=c}join(e){return new ChangedRange(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let s=e.length,a=this;for(;s>0;s--){let c=e[s-1];if(!(c.fromA>a.toA)){if(c.toA$)break;h+=2}if(!_)return a;new ChangedRange(_.fromA,_.toA,_.fromB,_.toB).addToSet(a),d=_.toA,g=_.toB}}}class ViewUpdate{constructor(e,s,a){this.view=e,this.state=s,this.transactions=a,this.flags=0,this.startState=e.state,this.changes=ChangeSet.empty(this.startState.doc.length);for(let d of a)this.changes=this.changes.compose(d.changes);let c=[];this.changes.iterChangedRanges((d,g,_,b)=>c.push(new ChangedRange(d,g,_,b))),this.changedRanges=c;let h=e.hasFocus;h!=e.inputState.notifiedFocused&&(e.inputState.notifiedFocused=h,this.flags|=1)}static create(e,s,a){return new ViewUpdate(e,s,a)}get viewportChanged(){return(this.flags&4)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&10)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}var Direction=function(o){return o[o.LTR=0]="LTR",o[o.RTL=1]="RTL",o}(Direction||(Direction={}));const LTR=Direction.LTR,RTL=Direction.RTL;function dec(o){let e=[];for(let s=0;s=s){if(g.level==a)return d;(h<0||(c!=0?c<0?g.froms:e[h].level>g.level))&&(h=d)}}if(h<0)throw new RangeError("Index out of range");return h}}const types=[];function computeOrder(o,e){let s=o.length,a=e==LTR?1:2,c=e==LTR?2:1;if(!o||a==1&&!BidiRE.test(o))return trivialOrder(s);for(let d=0,g=a,_=a;d=0;_e-=3)if(BracketStack[_e+1]==-$){let et=BracketStack[_e+2],tt=et&2?a:et&4?et&1?c:a:0;tt&&(types[d]=types[BracketStack[_e]]=tt),g=_e;break}}else{if(BracketStack.length==189)break;BracketStack[g++]=d,BracketStack[g++]=b,BracketStack[g++]=_}else if((j=types[d])==2||j==1){let _e=j==a;_=_e?0:1;for(let et=g-3;et>=0;et-=3){let tt=BracketStack[et+2];if(tt&2)break;if(_e)BracketStack[et+2]|=2;else{if(tt&4)break;BracketStack[et+2]|=4}}}for(let d=0;dg;){let $=b,j=types[--b]!=2;for(;b>g&&j==(types[b-1]!=2);)b--;h.push(new BidiSpan(b,$,j?2:1))}else h.push(new BidiSpan(g,d,0))}else for(let d=0;d1)for(let _ of this.points)_.node==e&&_.pos>this.text.length&&(_.pos-=d-1);a=h+d}}readNode(e){if(e.cmIgnore)return;let s=ContentView.get(e),a=s&&s.overrideDOMText;if(a!=null){this.findPointInside(e,a.length);for(let c=a.iter();!c.next().done;)c.lineBreak?this.lineBreak():this.append(c.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,s){for(let a of this.points)a.node==e&&e.childNodes[a.offset]==s&&(a.pos=this.text.length)}findPointInside(e,s){for(let a of this.points)(e.nodeType==3?a.node==e:e.contains(a.node))&&(a.pos=this.text.length+Math.min(s,a.offset))}}function isBlockElement(o){return o.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(o.nodeName)}class DOMPoint{constructor(e,s){this.node=e,this.offset=s,this.pos=-1}}class DocView extends ContentView{constructor(e){super(),this.view=e,this.compositionDeco=Decoration.none,this.decorations=[],this.dynamicDecorationMap=[],this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new LineView],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ChangedRange(0,0,0,e.state.doc.length)],0)}get editorView(){return this.view}get length(){return this.view.state.doc.length}update(e){let s=e.changedRanges;this.minWidth>0&&s.length&&(s.every(({fromA:d,toA:g})=>gthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.view.inputState.composing<0?this.compositionDeco=Decoration.none:(e.transactions.length||this.dirty)&&(this.compositionDeco=computeCompositionDeco(this.view,e.changes)),(browser.ie||browser.chrome)&&!this.compositionDeco.size&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,c=this.updateDeco(),h=findChangedDeco(a,c,e.changes);return s=ChangedRange.extendWithRanges(s,h),this.dirty==0&&s.length==0?!1:(this.updateInner(s,e.startState.doc.length),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,s){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,s);let{observer:a}=this.view;a.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let h=browser.chrome||browser.ios?{node:a.selectionRange.focusNode,written:!1}:void 0;this.sync(h),this.dirty=0,h&&(h.written||a.selectionRange.focusNode!=h.node)&&(this.forceSelection=!0),this.dom.style.height=""});let c=[];if(this.view.viewport.from||this.view.viewport.to=0?e[c]:null;if(!h)break;let{fromA:d,toA:g,fromB:_,toB:b}=h,{content:$,breakAtStart:j,openStart:_e,openEnd:et}=ContentBuilder.build(this.view.state.doc,_,b,this.decorations,this.dynamicDecorationMap),{i:tt,off:nt}=a.findPos(g,1),{i:st,off:rt}=a.findPos(d,-1);replaceRange(this,st,rt,tt,nt,$,j,_e,et)}}updateSelection(e=!1,s=!1){if((e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange(),!(s||this.mayControlSelection())||browser.ios&&this.view.inputState.rapidCompositionStart)return;let a=this.forceSelection;this.forceSelection=!1;let c=this.view.state.selection.main,h=this.domAtPos(c.anchor),d=c.empty?h:this.domAtPos(c.head);if(browser.gecko&&c.empty&&betweenUneditable(h)){let _=document.createTextNode("");this.view.observer.ignore(()=>h.node.insertBefore(_,h.node.childNodes[h.offset]||null)),h=d=new DOMPos(_,0),a=!0}let g=this.view.observer.selectionRange;(a||!g.focusNode||!isEquivalentPosition(h.node,h.offset,g.anchorNode,g.anchorOffset)||!isEquivalentPosition(d.node,d.offset,g.focusNode,g.focusOffset))&&(this.view.observer.ignore(()=>{browser.android&&browser.chrome&&this.dom.contains(g.focusNode)&&inUneditable(g.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let _=getSelection(this.view.root);if(_)if(c.empty){if(browser.gecko){let b=nextToUneditable(h.node,h.offset);if(b&&b!=3){let $=nearbyTextNode(h.node,h.offset,b==1?1:-1);$&&(h=new DOMPos($,b==1?0:$.nodeValue.length))}}_.collapse(h.node,h.offset),c.bidiLevel!=null&&g.cursorBidiLevel!=null&&(g.cursorBidiLevel=c.bidiLevel)}else if(_.extend)_.collapse(h.node,h.offset),_.extend(d.node,d.offset);else{let b=document.createRange();c.anchor>c.head&&([h,d]=[d,h]),b.setEnd(d.node,d.offset),b.setStart(h.node,h.offset),_.removeAllRanges(),_.addRange(b)}}),this.view.observer.setSelectionRange(h,d)),this.impreciseAnchor=h.precise?null:new DOMPos(g.anchorNode,g.anchorOffset),this.impreciseHead=d.precise?null:new DOMPos(g.focusNode,g.focusOffset)}enforceCursorAssoc(){if(this.compositionDeco.size)return;let e=this.view.state.selection.main,s=getSelection(this.view.root);if(!s||!e.empty||!e.assoc||!s.modify)return;let a=LineView.find(this,e.head);if(!a)return;let c=a.posAtStart;if(e.head==c||e.head==c+a.length)return;let h=this.coordsAt(e.head,-1),d=this.coordsAt(e.head,1);if(!h||!d||h.bottom>d.top)return;let g=this.domAtPos(e.head+e.assoc);s.collapse(g.node,g.offset),s.modify("move",e.assoc<0?"forward":"backward","lineboundary")}mayControlSelection(){let e=this.view.root.activeElement;return e==this.dom||hasSelection(this.dom,this.view.observer.selectionRange)&&!(e&&this.dom.contains(e))}nearest(e){for(let s=e;s;){let a=ContentView.get(s);if(a&&a.rootView==this)return a;s=s.parentNode}return null}posFromDOM(e,s){let a=this.nearest(e);if(!a)throw new RangeError("Trying to find position for a DOM position outside of the document");return a.localPosFromDOM(e,s)+a.posAtStart}domAtPos(e){let{i:s,off:a}=this.childCursor().findPos(e,-1);for(;sd||e==d&&h.type!=BlockType.WidgetBefore&&h.type!=BlockType.WidgetAfter&&(!c||s==2||this.children[c-1].breakAfter||this.children[c-1].type==BlockType.WidgetBefore&&s>-2))return h.coordsAt(e-d,s);a=d}}measureVisibleLineHeights(e){let s=[],{from:a,to:c}=e,h=this.view.contentDOM.clientWidth,d=h>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,g=-1,_=this.view.textDirection==Direction.LTR;for(let b=0,$=0;$c)break;if(b>=a){let et=j.dom.getBoundingClientRect();if(s.push(et.height),d){let tt=j.dom.lastChild,nt=tt?clientRectsFor(tt):[];if(nt.length){let st=nt[nt.length-1],rt=_?st.right-et.left:et.right-st.left;rt>g&&(g=rt,this.minWidth=h,this.minWidthFrom=b,this.minWidthTo=_e)}}}b=_e+j.breakAfter}return s}textDirectionAt(e){let{i:s}=this.childPos(e,1);return getComputedStyle(this.children[s].dom).direction=="rtl"?Direction.RTL:Direction.LTR}measureTextSize(){for(let c of this.children)if(c instanceof LineView){let h=c.measureTextSize();if(h)return h}let e=document.createElement("div"),s,a;return e.className="cm-line",e.style.width="99999px",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let c=clientRectsFor(e.firstChild)[0];s=e.getBoundingClientRect().height,a=c?c.width/27:7,e.remove()}),{lineHeight:s,charWidth:a}}childCursor(e=this.length){let s=this.children.length;return s&&(e-=this.children[--s].length),new ChildCursor(this.children,e,s)}computeBlockGapDeco(){let e=[],s=this.view.viewState;for(let a=0,c=0;;c++){let h=c==s.viewports.length?null:s.viewports[c],d=h?h.from-1:this.length;if(d>a){let g=s.lineBlockAt(d).bottom-s.lineBlockAt(a).top;e.push(Decoration.replace({widget:new BlockGapWidget(g),block:!0,inclusive:!0,isBlockGap:!0}).range(a,d))}if(!h)break;a=h.to+1}return Decoration.set(e)}updateDeco(){let e=this.view.state.facet(decorations).map((s,a)=>(this.dynamicDecorationMap[a]=typeof s=="function")?s(this.view):s);for(let s=e.length;ss.anchor?-1:1),c;if(!a)return;!s.empty&&(c=this.coordsAt(s.anchor,s.anchor>s.head?-1:1))&&(a={left:Math.min(a.left,c.left),top:Math.min(a.top,c.top),right:Math.max(a.right,c.right),bottom:Math.max(a.bottom,c.bottom)});let h=0,d=0,g=0,_=0;for(let $ of this.view.state.facet(scrollMargins).map(j=>j(this.view)))if($){let{left:j,right:_e,top:et,bottom:tt}=$;j!=null&&(h=Math.max(h,j)),_e!=null&&(d=Math.max(d,_e)),et!=null&&(g=Math.max(g,et)),tt!=null&&(_=Math.max(_,tt))}let b={left:a.left-h,top:a.top-g,right:a.right+d,bottom:a.bottom+_};scrollRectIntoView(this.view.scrollDOM,b,s.head0&&s<=0)o=o.childNodes[e-1],e=maxOffset(o);else if(o.nodeType==1&&e=0)o=o.childNodes[e],e=0;else return null}}function nextToUneditable(o,e){return o.nodeType!=1?0:(e&&o.childNodes[e-1].contentEditable=="false"?1:0)|(e0;){let b=findClusterBreak(c.text,d,!1);if(a(c.text.slice(b,d))!=_)break;d=b}for(;go?e.left-o:Math.max(0,o-e.right)}function getdy(o,e){return e.top>o?e.top-o:Math.max(0,o-e.bottom)}function yOverlap(o,e){return o.tope.top+1}function upTop(o,e){return eo.bottom?{top:o.top,left:o.left,right:o.right,bottom:e}:o}function domPosAtCoords(o,e,s){let a,c,h,d,g=!1,_,b,$,j;for(let tt=o.firstChild;tt;tt=tt.nextSibling){let nt=clientRectsFor(tt);for(let st=0;stat||d==at&&h>it)&&(a=tt,c=rt,h=it,d=at,g=!it||(it>0?st0)),it==0?s>rt.bottom&&(!$||$.bottomrt.top)&&(b=tt,j=rt):$&&yOverlap($,rt)?$=upBot($,rt.bottom):j&&yOverlap(j,rt)&&(j=upTop(j,rt.top))}}if($&&$.bottom>=s?(a=_,c=$):j&&j.top<=s&&(a=b,c=j),!a)return{node:o,offset:0};let _e=Math.max(c.left,Math.min(c.right,e));if(a.nodeType==3)return domPosInText(a,_e,s);if(g&&a.contentEditable!="false")return domPosAtCoords(a,_e,s);let et=Array.prototype.indexOf.call(o.childNodes,a)+(e>=(c.left+c.right)/2?1:0);return{node:o,offset:et}}function domPosInText(o,e,s){let a=o.nodeValue.length,c=-1,h=1e9,d=0;for(let g=0;gs?$.top-s:s-$.bottom)-1;if($.left-1<=e&&$.right+1>=e&&j=($.left+$.right)/2,et=_e;if((browser.chrome||browser.gecko)&&textRange(o,g).getBoundingClientRect().left==$.right&&(et=!_e),j<=0)return{node:o,offset:g+(et?1:0)};c=g+(et?1:0),h=j}}}return{node:o,offset:c>-1?c:d>0?o.nodeValue.length:0}}function posAtCoords(o,{x:e,y:s},a,c=-1){var h;let d=o.contentDOM.getBoundingClientRect(),g=d.top+o.viewState.paddingTop,_,{docHeight:b}=o.viewState,$=s-g;if($<0)return 0;if($>b)return o.state.doc.length;for(let rt=o.defaultLineHeight/2,it=!1;_=o.elementAtHeight($),_.type!=BlockType.Text;)for(;$=c>0?_.bottom+rt:_.top-rt,!($>=0&&$<=b);){if(it)return a?null:0;it=!0,c=-c}s=g+$;let j=_.from;if(jo.viewport.to)return o.viewport.to==o.state.doc.length?o.state.doc.length:a?null:posAtCoordsImprecise(o,d,_,e,s);let _e=o.dom.ownerDocument,et=o.root.elementFromPoint?o.root:_e,tt=et.elementFromPoint(e,s);tt&&!o.contentDOM.contains(tt)&&(tt=null),tt||(e=Math.max(d.left+1,Math.min(d.right-1,e)),tt=et.elementFromPoint(e,s),tt&&!o.contentDOM.contains(tt)&&(tt=null));let nt,st=-1;if(tt&&((h=o.docView.nearest(tt))===null||h===void 0?void 0:h.isEditable)!=!1){if(_e.caretPositionFromPoint){let rt=_e.caretPositionFromPoint(e,s);rt&&({offsetNode:nt,offset:st}=rt)}else if(_e.caretRangeFromPoint){let rt=_e.caretRangeFromPoint(e,s);rt&&({startContainer:nt,startOffset:st}=rt,(!o.contentDOM.contains(nt)||browser.safari&&isSuspiciousSafariCaretResult(nt,st,e)||browser.chrome&&isSuspiciousChromeCaretResult(nt,st,e))&&(nt=void 0))}}if(!nt||!o.docView.dom.contains(nt)){let rt=LineView.find(o.docView,j);if(!rt)return $>_.top+_.height/2?_.to:_.from;({node:nt,offset:st}=domPosAtCoords(rt.dom,e,s))}return o.docView.posFromDOM(nt,st)}function posAtCoordsImprecise(o,e,s,a,c){let h=Math.round((a-e.left)*o.defaultCharacterWidth);o.lineWrapping&&s.height>o.defaultLineHeight*1.5&&(h+=Math.floor((c-s.top)/o.defaultLineHeight)*o.viewState.heightOracle.lineLength);let d=o.state.sliceDoc(s.from,s.to);return s.from+findColumn(d,h,o.state.tabSize)}function isSuspiciousSafariCaretResult(o,e,s){let a;if(o.nodeType!=3||e!=(a=o.nodeValue.length))return!1;for(let c=o.nextSibling;c;c=c.nextSibling)if(c.nodeType!=1||c.nodeName!="BR")return!1;return textRange(o,a-1,a).getBoundingClientRect().left>s}function isSuspiciousChromeCaretResult(o,e,s){if(e!=0)return!1;for(let c=o;;){let h=c.parentNode;if(!h||h.nodeType!=1||h.firstChild!=c)return!1;if(h.classList.contains("cm-line"))break;c=h}let a=o.nodeType==1?o.getBoundingClientRect():textRange(o,0,Math.max(o.nodeValue.length,1)).getBoundingClientRect();return s-a.left>5}function moveToLineBoundary(o,e,s,a){let c=o.state.doc.lineAt(e.head),h=!a||!o.lineWrapping?null:o.coordsAtPos(e.assoc<0&&e.head>c.from?e.head-1:e.head);if(h){let _=o.dom.getBoundingClientRect(),b=o.textDirectionAt(c.from),$=o.posAtCoords({x:s==(b==Direction.LTR)?_.right-1:_.left+1,y:(h.top+h.bottom)/2});if($!=null)return EditorSelection.cursor($,s?-1:1)}let d=LineView.find(o.docView,e.head),g=d?s?d.posAtEnd:d.posAtStart:s?c.to:c.from;return EditorSelection.cursor(g,s?-1:1)}function moveByChar(o,e,s,a){let c=o.state.doc.lineAt(e.head),h=o.bidiSpans(c),d=o.textDirectionAt(c.from);for(let g=e,_=null;;){let b=moveVisually(c,h,d,g,s),$=movedOver;if(!b){if(c.number==(s?o.state.doc.lines:1))return g;$=` -`,c=o.state.doc.line(c.number+(s?1:-1)),h=o.bidiSpans(c),b=EditorSelection.cursor(s?c.from:c.to)}if(_){if(!_($))return g}else{if(!a)return b;_=a($)}g=b}}function byGroup(o,e,s){let a=o.state.charCategorizer(e),c=a(s);return h=>{let d=a(h);return c==CharCategory.Space&&(c=d),c==d}}function moveVertically(o,e,s,a){let c=e.head,h=s?1:-1;if(c==(s?o.state.doc.length:0))return EditorSelection.cursor(c,e.assoc);let d=e.goalColumn,g,_=o.contentDOM.getBoundingClientRect(),b=o.coordsAtPos(c),$=o.documentTop;if(b)d==null&&(d=b.left-_.left),g=h<0?b.top:b.bottom;else{let et=o.viewState.lineBlockAt(c);d==null&&(d=Math.min(_.right-_.left,o.defaultCharacterWidth*(c-et.from))),g=(h<0?et.top:et.bottom)+$}let j=_.left+d,_e=a!=null?a:o.defaultLineHeight>>1;for(let et=0;;et+=10){let tt=g+(_e+et)*h,nt=posAtCoords(o,{x:j,y:tt},!1,h);if(tt<_.top||tt>_.bottom||(h<0?ntc))return EditorSelection.cursor(nt,e.assoc,void 0,d)}}function skipAtoms(o,e,s){let a=o.state.facet(atomicRanges).map(c=>c(o));for(;;){let c=!1;for(let h of a)h.between(s.from-1,s.from+1,(d,g,_)=>{s.from>d&&s.froms.from?EditorSelection.cursor(d,1):EditorSelection.cursor(g,-1),c=!0)});if(!c)return s}}class InputState{constructor(e){this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.chromeScrollHack=-1,this.pendingIOSKey=void 0,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastEscPress=0,this.lastContextMenu=0,this.scrollHandlers=[],this.registeredEvents=[],this.customHandlers=[],this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.rapidCompositionStart=!1,this.mouseSelection=null;for(let s in handlers){let a=handlers[s];e.contentDOM.addEventListener(s,c=>{!eventBelongsToEditor(e,c)||this.ignoreDuringComposition(c)||s=="keydown"&&this.keydown(e,c)||(this.mustFlushObserver(c)&&e.observer.forceFlush(),this.runCustomHandlers(s,e,c)?c.preventDefault():a(e,c))},handlerOptions[s]),this.registeredEvents.push(s)}browser.chrome&&browser.chrome_version==102&&e.scrollDOM.addEventListener("wheel",()=>{this.chromeScrollHack<0?e.contentDOM.style.pointerEvents="none":window.clearTimeout(this.chromeScrollHack),this.chromeScrollHack=setTimeout(()=>{this.chromeScrollHack=-1,e.contentDOM.style.pointerEvents=""},100)},{passive:!0}),this.notifiedFocused=e.hasFocus,browser.safari&&e.contentDOM.addEventListener("input",()=>null)}setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}ensureHandlers(e,s){var a;let c;this.customHandlers=[];for(let h of s)if(c=(a=h.update(e).spec)===null||a===void 0?void 0:a.domEventHandlers){this.customHandlers.push({plugin:h.value,handlers:c});for(let d in c)this.registeredEvents.indexOf(d)<0&&d!="scroll"&&(this.registeredEvents.push(d),e.contentDOM.addEventListener(d,g=>{!eventBelongsToEditor(e,g)||this.runCustomHandlers(d,e,g)&&g.preventDefault()}))}}runCustomHandlers(e,s,a){for(let c of this.customHandlers){let h=c.handlers[e];if(h)try{if(h.call(c.plugin,a,s)||a.defaultPrevented)return!0}catch(d){logException(s.state,d)}}return!1}runScrollHandlers(e,s){this.lastScrollTop=e.scrollDOM.scrollTop,this.lastScrollLeft=e.scrollDOM.scrollLeft;for(let a of this.customHandlers){let c=a.handlers.scroll;if(c)try{c.call(a.plugin,s,e)}catch(h){logException(e.state,h)}}}keydown(e,s){if(this.lastKeyCode=s.keyCode,this.lastKeyTime=Date.now(),s.keyCode==9&&Date.now()c.keyCode==s.keyCode))&&!(s.ctrlKey||s.altKey||s.metaKey)&&!s.synthetic?(this.pendingIOSKey=a,setTimeout(()=>this.flushIOSKey(e),250),!0):!1}flushIOSKey(e){let s=this.pendingIOSKey;return s?(this.pendingIOSKey=void 0,dispatchKey(e.contentDOM,s.key,s.keyCode)):!1}ignoreDuringComposition(e){return/^key/.test(e.type)?this.composing>0?!0:browser.safari&&!browser.ios&&Date.now()-this.compositionEndedAt<100?(this.compositionEndedAt=0,!0):!1:!1}mustFlushObserver(e){return e.type=="keydown"&&e.keyCode!=229||e.type=="compositionend"&&!browser.ios}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.mouseSelection&&this.mouseSelection.update(e),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}const PendingKeys=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],modifierCodes=[16,17,18,20,91,92,224,225];class MouseSelection{constructor(e,s,a,c){this.view=e,this.style=a,this.mustSelect=c,this.lastEvent=s;let h=e.contentDOM.ownerDocument;h.addEventListener("mousemove",this.move=this.move.bind(this)),h.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=s.shiftKey,this.multiple=e.state.facet(EditorState.allowMultipleSelections)&&addsSelectionRange(e,s),this.dragMove=dragMovesSelection(e,s),this.dragging=isInPrimarySelection(e,s)&&getClickType(s)==1?null:!1,this.dragging===!1&&(s.preventDefault(),this.select(s))}move(e){if(e.buttons==0)return this.destroy();this.dragging===!1&&this.select(this.lastEvent=e)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=null}select(e){let s=this.style.get(e,this.extend,this.multiple);(this.mustSelect||!s.eq(this.view.state.selection)||s.main.assoc!=this.view.state.selection.main.assoc)&&this.view.dispatch({selection:s,userEvent:"select.pointer",scrollIntoView:!0}),this.mustSelect=!1}update(e){e.docChanged&&this.dragging&&(this.dragging=this.dragging.map(e.changes)),this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function addsSelectionRange(o,e){let s=o.state.facet(clickAddsSelectionRange);return s.length?s[0](e):browser.mac?e.metaKey:e.ctrlKey}function dragMovesSelection(o,e){let s=o.state.facet(dragMovesSelection$1);return s.length?s[0](e):browser.mac?!e.altKey:!e.ctrlKey}function isInPrimarySelection(o,e){let{main:s}=o.state.selection;if(s.empty)return!1;let a=getSelection(o.root);if(!a||a.rangeCount==0)return!0;let c=a.getRangeAt(0).getClientRects();for(let h=0;h=e.clientX&&d.top<=e.clientY&&d.bottom>=e.clientY)return!0}return!1}function eventBelongsToEditor(o,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let s=e.target,a;s!=o.contentDOM;s=s.parentNode)if(!s||s.nodeType==11||(a=ContentView.get(s))&&a.ignoreEvent(e))return!1;return!0}const handlers=Object.create(null),handlerOptions=Object.create(null),brokenClipboardAPI=browser.ie&&browser.ie_version<15||browser.ios&&browser.webkit_version<604;function capturePaste(o){let e=o.dom.parentNode;if(!e)return;let s=e.appendChild(document.createElement("textarea"));s.style.cssText="position: fixed; left: -10000px; top: 10px",s.focus(),setTimeout(()=>{o.focus(),s.remove(),doPaste(o,s.value)},50)}function doPaste(o,e){let{state:s}=o,a,c=1,h=s.toText(e),d=h.lines==s.selection.ranges.length;if(lastLinewiseCopy!=null&&s.selection.ranges.every(_=>_.empty)&&lastLinewiseCopy==h.toString()){let _=-1;a=s.changeByRange(b=>{let $=s.doc.lineAt(b.from);if($.from==_)return{range:b};_=$.from;let j=s.toText((d?h.line(c++).text:e)+s.lineBreak);return{changes:{from:$.from,insert:j},range:EditorSelection.cursor(b.from+j.length)}})}else d?a=s.changeByRange(_=>{let b=h.line(c++);return{changes:{from:_.from,to:_.to,insert:b.text},range:EditorSelection.cursor(_.from+b.length)}}):a=s.replaceSelection(h);o.dispatch(a,{userEvent:"input.paste",scrollIntoView:!0})}handlers.keydown=(o,e)=>{o.inputState.setSelectionOrigin("select"),e.keyCode==27?o.inputState.lastEscPress=Date.now():modifierCodes.indexOf(e.keyCode)<0&&(o.inputState.lastEscPress=0)};handlers.touchstart=(o,e)=>{o.inputState.lastTouchTime=Date.now(),o.inputState.setSelectionOrigin("select.pointer")};handlers.touchmove=o=>{o.inputState.setSelectionOrigin("select.pointer")};handlerOptions.touchstart=handlerOptions.touchmove={passive:!0};handlers.mousedown=(o,e)=>{if(o.observer.flush(),o.inputState.lastTouchTime>Date.now()-2e3&&getClickType(e)==1)return;let s=null;for(let a of o.state.facet(mouseSelectionStyle))if(s=a(o,e),s)break;if(!s&&e.button==0&&(s=basicMouseSelection(o,e)),s){let a=o.root.activeElement!=o.contentDOM;a&&o.observer.ignore(()=>focusPreventScroll(o.contentDOM)),o.inputState.startMouseSelection(new MouseSelection(o,e,s,a))}};function rangeForClick(o,e,s,a){if(a==1)return EditorSelection.cursor(e,s);if(a==2)return groupAt(o.state,e,s);{let c=LineView.find(o.docView,e),h=o.state.doc.lineAt(c?c.posAtEnd:e),d=c?c.posAtStart:h.from,g=c?c.posAtEnd:h.to;return go>=e.top&&o<=e.bottom,inside=(o,e,s)=>insideY(e,s)&&o>=s.left&&o<=s.right;function findPositionSide(o,e,s,a){let c=LineView.find(o.docView,e);if(!c)return 1;let h=e-c.posAtStart;if(h==0)return 1;if(h==c.length)return-1;let d=c.coordsAt(h,-1);if(d&&inside(s,a,d))return-1;let g=c.coordsAt(h,1);return g&&inside(s,a,g)?1:d&&insideY(a,d)?-1:1}function queryPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:s,bias:findPositionSide(o,s,e.clientX,e.clientY)}}const BadMouseDetail=browser.ie&&browser.ie_version<=11;let lastMouseDown=null,lastMouseDownCount=0,lastMouseDownTime=0;function getClickType(o){if(!BadMouseDetail)return o.detail;let e=lastMouseDown,s=lastMouseDownTime;return lastMouseDown=o,lastMouseDownTime=Date.now(),lastMouseDownCount=!e||s>Date.now()-400&&Math.abs(e.clientX-o.clientX)<2&&Math.abs(e.clientY-o.clientY)<2?(lastMouseDownCount+1)%3:1}function basicMouseSelection(o,e){let s=queryPos(o,e),a=getClickType(e),c=o.state.selection,h=s,d=e;return{update(g){g.docChanged&&(s&&(s.pos=g.changes.mapPos(s.pos)),c=c.map(g.changes),d=null)},get(g,_,b){let $;if(d&&g.clientX==d.clientX&&g.clientY==d.clientY?$=h:($=h=queryPos(o,g),d=g),!$||!s)return c;let j=rangeForClick(o,$.pos,$.bias,a);if(s.pos!=$.pos&&!_){let _e=rangeForClick(o,s.pos,s.bias,a),et=Math.min(_e.from,j.from),tt=Math.max(_e.to,j.to);j=et1&&c.ranges.some(_e=>_e.eq(j))?removeRange(c,j):b?c.addRange(j):EditorSelection.create([j])}}}function removeRange(o,e){for(let s=0;;s++)if(o.ranges[s].eq(e))return EditorSelection.create(o.ranges.slice(0,s).concat(o.ranges.slice(s+1)),o.mainIndex==s?0:o.mainIndex-(o.mainIndex>s?1:0))}handlers.dragstart=(o,e)=>{let{selection:{main:s}}=o.state,{mouseSelection:a}=o.inputState;a&&(a.dragging=s),e.dataTransfer&&(e.dataTransfer.setData("Text",o.state.sliceDoc(s.from,s.to)),e.dataTransfer.effectAllowed="copyMove")};function dropText(o,e,s,a){if(!s)return;let c=o.posAtCoords({x:e.clientX,y:e.clientY},!1);e.preventDefault();let{mouseSelection:h}=o.inputState,d=a&&h&&h.dragging&&h.dragMove?{from:h.dragging.from,to:h.dragging.to}:null,g={from:c,insert:s},_=o.state.changes(d?[d,g]:g);o.focus(),o.dispatch({changes:_,selection:{anchor:_.mapPos(c,-1),head:_.mapPos(c,1)},userEvent:d?"move.drop":"input.drop"})}handlers.drop=(o,e)=>{if(!e.dataTransfer)return;if(o.state.readOnly)return e.preventDefault();let s=e.dataTransfer.files;if(s&&s.length){e.preventDefault();let a=Array(s.length),c=0,h=()=>{++c==s.length&&dropText(o,e,a.filter(d=>d!=null).join(o.state.lineBreak),!1)};for(let d=0;d{/[\x00-\x08\x0e-\x1f]{2}/.test(g.result)||(a[d]=g.result),h()},g.readAsText(s[d])}}else dropText(o,e,e.dataTransfer.getData("Text"),!0)};handlers.paste=(o,e)=>{if(o.state.readOnly)return e.preventDefault();o.observer.flush();let s=brokenClipboardAPI?null:e.clipboardData;s?(doPaste(o,s.getData("text/plain")),e.preventDefault()):capturePaste(o)};function captureCopy(o,e){let s=o.dom.parentNode;if(!s)return;let a=s.appendChild(document.createElement("textarea"));a.style.cssText="position: fixed; left: -10000px; top: 10px",a.value=e,a.focus(),a.selectionEnd=e.length,a.selectionStart=0,setTimeout(()=>{a.remove(),o.focus()},50)}function copiedRange(o){let e=[],s=[],a=!1;for(let c of o.selection.ranges)c.empty||(e.push(o.sliceDoc(c.from,c.to)),s.push(c));if(!e.length){let c=-1;for(let{from:h}of o.selection.ranges){let d=o.doc.lineAt(h);d.number>c&&(e.push(d.text),s.push({from:d.from,to:Math.min(o.doc.length,d.to+1)})),c=d.number}a=!0}return{text:e.join(o.lineBreak),ranges:s,linewise:a}}let lastLinewiseCopy=null;handlers.copy=handlers.cut=(o,e)=>{let{text:s,ranges:a,linewise:c}=copiedRange(o.state);if(!s&&!c)return;lastLinewiseCopy=c?s:null;let h=brokenClipboardAPI?null:e.clipboardData;h?(e.preventDefault(),h.clearData(),h.setData("text/plain",s)):captureCopy(o,s),e.type=="cut"&&!o.state.readOnly&&o.dispatch({changes:a,scrollIntoView:!0,userEvent:"delete.cut"})};function updateForFocusChange(o){setTimeout(()=>{o.hasFocus!=o.inputState.notifiedFocused&&o.update([])},10)}handlers.focus=o=>{o.inputState.lastFocusTime=Date.now(),!o.scrollDOM.scrollTop&&(o.inputState.lastScrollTop||o.inputState.lastScrollLeft)&&(o.scrollDOM.scrollTop=o.inputState.lastScrollTop,o.scrollDOM.scrollLeft=o.inputState.lastScrollLeft),updateForFocusChange(o)};handlers.blur=o=>{o.observer.clearSelectionRange(),updateForFocusChange(o)};function forceClearComposition(o,e){if(o.docView.compositionDeco.size){o.inputState.rapidCompositionStart=e;try{o.update([])}finally{o.inputState.rapidCompositionStart=!1}}}handlers.compositionstart=handlers.compositionupdate=o=>{o.inputState.compositionFirstChange==null&&(o.inputState.compositionFirstChange=!0),o.inputState.composing<0&&(o.inputState.composing=0,o.docView.compositionDeco.size&&(o.observer.flush(),forceClearComposition(o,!0)))};handlers.compositionend=o=>{o.inputState.composing=-1,o.inputState.compositionEndedAt=Date.now(),o.inputState.compositionFirstChange=null,setTimeout(()=>{o.inputState.composing<0&&forceClearComposition(o,!1)},50)};handlers.contextmenu=o=>{o.inputState.lastContextMenu=Date.now()};handlers.beforeinput=(o,e)=>{var s;let a;if(browser.chrome&&browser.android&&(a=PendingKeys.find(c=>c.inputType==e.inputType))&&(o.observer.delayAndroidKey(a.key,a.keyCode),a.key=="Backspace"||a.key=="Delete")){let c=((s=window.visualViewport)===null||s===void 0?void 0:s.height)||0;setTimeout(()=>{var h;(((h=window.visualViewport)===null||h===void 0?void 0:h.height)||0)>c+10&&o.hasFocus&&(o.contentDOM.blur(),o.focus())},100)}};const wrappingWhiteSpace=["pre-wrap","normal","pre-line","break-spaces"];class HeightOracle{constructor(){this.doc=Text.empty,this.lineWrapping=!1,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.lineLength=30,this.heightChanged=!1}heightForGap(e,s){let a=this.doc.lineAt(s).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(a+=Math.ceil((s-e-a*this.lineLength*.5)/this.lineLength)),this.lineHeight*a}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/(this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return wrappingWhiteSpace.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let s=!1;for(let a=0;a-1,g=Math.round(s)!=Math.round(this.lineHeight)||this.lineWrapping!=d;if(this.lineWrapping=d,this.lineHeight=s,this.charWidth=a,this.lineLength=c,g){this.heightSamples={};for(let _=0;_0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e,s){this.height!=s&&(Math.abs(this.height-s)>Epsilon&&(e.heightChanged=!0),this.height=s)}replace(e,s,a){return HeightMap.of(a)}decomposeLeft(e,s){s.push(this)}decomposeRight(e,s){s.push(this)}applyChanges(e,s,a,c){let h=this;for(let d=c.length-1;d>=0;d--){let{fromA:g,toA:_,fromB:b,toB:$}=c[d],j=h.lineAt(g,QueryType$1.ByPosNoHeight,s,0,0),_e=j.to>=_?j:h.lineAt(_,QueryType$1.ByPosNoHeight,s,0,0);for($+=_e.to-_,_=_e.to;d>0&&j.from<=c[d-1].toA;)g=c[d-1].fromA,b=c[d-1].fromB,d--,gh*2){let g=e[s-1];g.break?e.splice(--s,1,g.left,null,g.right):e.splice(--s,1,g.left,g.right),a+=1+g.break,c-=g.size}else if(h>c*2){let g=e[a];g.break?e.splice(a,1,g.left,null,g.right):e.splice(a,1,g.left,g.right),a+=2+g.break,h-=g.size}else break;else if(c=h&&d(this.blockAt(0,a,c,h))}updateHeight(e,s=0,a=!1,c){return c&&c.from<=s&&c.more&&this.setHeight(e,c.heights[c.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class HeightMapText extends HeightMapBlock{constructor(e,s){super(e,s,BlockType.Text),this.collapsed=0,this.widgetHeight=0}replace(e,s,a){let c=a[0];return a.length==1&&(c instanceof HeightMapText||c instanceof HeightMapGap&&c.flags&4)&&Math.abs(this.length-c.length)<10?(c instanceof HeightMapGap?c=new HeightMapText(c.length,this.height):c.height=this.height,this.outdated||(c.outdated=!1),c):HeightMap.of(a)}updateHeight(e,s=0,a=!1,c){return c&&c.from<=s&&c.more?this.setHeight(e,c.heights[c.index++]):(a||this.outdated)&&this.setHeight(e,Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class HeightMapGap extends HeightMap{constructor(e){super(e,0)}lines(e,s){let a=e.lineAt(s).number,c=e.lineAt(s+this.length).number;return{firstLine:a,lastLine:c,lineHeight:this.height/(c-a+1)}}blockAt(e,s,a,c){let{firstLine:h,lastLine:d,lineHeight:g}=this.lines(s,c),_=Math.max(0,Math.min(d-h,Math.floor((e-a)/g))),{from:b,length:$}=s.line(h+_);return new BlockInfo(b,$,a+g*_,g,BlockType.Text)}lineAt(e,s,a,c,h){if(s==QueryType$1.ByHeight)return this.blockAt(e,a,c,h);if(s==QueryType$1.ByPosNoHeight){let{from:j,to:_e}=a.lineAt(e);return new BlockInfo(j,_e-j,0,0,BlockType.Text)}let{firstLine:d,lineHeight:g}=this.lines(a,h),{from:_,length:b,number:$}=a.lineAt(e);return new BlockInfo(_,b,c+g*($-d),g,BlockType.Text)}forEachLine(e,s,a,c,h,d){let{firstLine:g,lineHeight:_}=this.lines(a,h);for(let b=Math.max(e,h),$=Math.min(h+this.length,s);b<=$;){let j=a.lineAt(b);b==e&&(c+=_*(j.number-g)),d(new BlockInfo(j.from,j.length,c,_,BlockType.Text)),c+=_,b=j.to+1}}replace(e,s,a){let c=this.length-s;if(c>0){let h=a[a.length-1];h instanceof HeightMapGap?a[a.length-1]=new HeightMapGap(h.length+c):a.push(null,new HeightMapGap(c-1))}if(e>0){let h=a[0];h instanceof HeightMapGap?a[0]=new HeightMapGap(e+h.length):a.unshift(new HeightMapGap(e-1),null)}return HeightMap.of(a)}decomposeLeft(e,s){s.push(new HeightMapGap(e-1),null)}decomposeRight(e,s){s.push(null,new HeightMapGap(this.length-e-1))}updateHeight(e,s=0,a=!1,c){let h=s+this.length;if(c&&c.from<=s+this.length&&c.more){let d=[],g=Math.max(s,c.from),_=-1,b=e.heightChanged;for(c.from>s&&d.push(new HeightMapGap(c.from-s-1).updateHeight(e,s));g<=h&&c.more;){let j=e.doc.lineAt(g).length;d.length&&d.push(null);let _e=c.heights[c.index++];_==-1?_=_e:Math.abs(_e-_)>=Epsilon&&(_=-2);let et=new HeightMapText(j,_e);et.outdated=!1,d.push(et),g+=j+1}g<=h&&d.push(null,new HeightMapGap(h-g).updateHeight(e,g));let $=HeightMap.of(d);return e.heightChanged=b||_<0||Math.abs($.height-this.height)>=Epsilon||Math.abs(_-this.lines(e.doc,s).lineHeight)>=Epsilon,$}else(a||this.outdated)&&(this.setHeight(e,e.heightForGap(s,s+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class HeightMapBranch extends HeightMap{constructor(e,s,a){super(e.length+s+a.length,e.height+a.height,s|(e.outdated||a.outdated?2:0)),this.left=e,this.right=a,this.size=e.size+a.size}get break(){return this.flags&1}blockAt(e,s,a,c){let h=a+this.left.height;return eg))return b;let $=s==QueryType$1.ByPosNoHeight?QueryType$1.ByPosNoHeight:QueryType$1.ByPos;return _?b.join(this.right.lineAt(g,$,a,d,g)):this.left.lineAt(g,$,a,c,h).join(b)}forEachLine(e,s,a,c,h,d){let g=c+this.left.height,_=h+this.left.length+this.break;if(this.break)e<_&&this.left.forEachLine(e,s,a,c,h,d),s>=_&&this.right.forEachLine(e,s,a,g,_,d);else{let b=this.lineAt(_,QueryType$1.ByPos,a,c,h);e=e&&b.from<=s&&d(b),s>b.to&&this.right.forEachLine(b.to+1,s,a,g,_,d)}}replace(e,s,a){let c=this.left.length+this.break;if(sthis.left.length)return this.balanced(this.left,this.right.replace(e-c,s-c,a));let h=[];e>0&&this.decomposeLeft(e,h);let d=h.length;for(let g of a)h.push(g);if(e>0&&mergeGaps(h,d-1),s=a&&s.push(null)),e>a&&this.right.decomposeLeft(e-a,s)}decomposeRight(e,s){let a=this.left.length,c=a+this.break;if(e>=c)return this.right.decomposeRight(e-c,s);e2*s.size||s.size>2*e.size?HeightMap.of(this.break?[e,null,s]:[e,s]):(this.left=e,this.right=s,this.height=e.height+s.height,this.outdated=e.outdated||s.outdated,this.size=e.size+s.size,this.length=e.length+this.break+s.length,this)}updateHeight(e,s=0,a=!1,c){let{left:h,right:d}=this,g=s+h.length+this.break,_=null;return c&&c.from<=s+h.length&&c.more?_=h=h.updateHeight(e,s,a,c):h.updateHeight(e,s,a),c&&c.from<=g+d.length&&c.more?_=d=d.updateHeight(e,g,a,c):d.updateHeight(e,g,a),_?this.balanced(h,d):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function mergeGaps(o,e){let s,a;o[e]==null&&(s=o[e-1])instanceof HeightMapGap&&(a=o[e+1])instanceof HeightMapGap&&o.splice(e-1,3,new HeightMapGap(s.length+1+a.length))}const relevantWidgetHeight=5;class NodeBuilder{constructor(e,s){this.pos=e,this.oracle=s,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,s){if(this.lineStart>-1){let a=Math.min(s,this.lineEnd),c=this.nodes[this.nodes.length-1];c instanceof HeightMapText?c.length+=a-this.pos:(a>this.pos||!this.isCovered)&&this.nodes.push(new HeightMapText(a-this.pos,-1)),this.writtenTo=a,s>a&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=s}point(e,s,a){if(e=relevantWidgetHeight)&&this.addLineDeco(c,h)}else s>e&&this.span(e,s);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:s}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=s,this.writtenToe&&this.nodes.push(new HeightMapText(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,s){let a=new HeightMapGap(s-e);return this.oracle.doc.lineAt(e).to==s&&(a.flags|=4),a}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof HeightMapText)return e;let s=new HeightMapText(0,-1);return this.nodes.push(s),s}addBlock(e){this.enterLine(),e.type==BlockType.WidgetAfter&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,e.type!=BlockType.WidgetBefore&&(this.covering=e)}addLineDeco(e,s){let a=this.ensureLine();a.length+=s,a.collapsed+=s,a.widgetHeight=Math.max(a.widgetHeight,e),this.writtenTo=this.pos=this.pos+s}finish(e){let s=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(s instanceof HeightMapText)&&!this.isCovered?this.nodes.push(new HeightMapText(0,-1)):(this.writtenTob.clientHeight||b.scrollWidth>b.clientWidth)&&$.overflow!="visible"){let j=b.getBoundingClientRect();a=Math.max(a,j.left),c=Math.min(c,j.right),h=Math.max(h,j.top),d=_==o.parentNode?j.bottom:Math.min(d,j.bottom)}_=$.position=="absolute"||$.position=="fixed"?b.offsetParent:b.parentNode}else if(_.nodeType==11)_=_.host;else break;return{left:a-s.left,right:Math.max(a,c)-s.left,top:h-(s.top+e),bottom:Math.max(h,d)-(s.top+e)}}function fullPixelRange(o,e){let s=o.getBoundingClientRect();return{left:0,right:s.right-s.left,top:e,bottom:s.bottom-(s.top+e)}}class LineGap{constructor(e,s,a){this.from=e,this.to=s,this.size=a}static same(e,s){if(e.length!=s.length)return!1;for(let a=0;atypeof s!="function"),this.heightMap=HeightMap.empty().applyChanges(this.stateDeco,Text.empty,this.heightOracle.setDoc(e.doc),[new ChangedRange(0,0,0,e.doc.length)]),this.viewport=this.getViewport(0,null),this.updateViewportLines(),this.updateForViewport(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Decoration.set(this.lineGaps.map(s=>s.draw(!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:s}=this.state.selection;for(let a=0;a<=1;a++){let c=a?s.head:s.anchor;if(!e.some(({from:h,to:d})=>c>=h&&c<=d)){let{from:h,to:d}=this.lineBlockAt(c);e.push(new Viewport(h,d))}}this.viewports=e.sort((a,c)=>a.from-c.from),this.scaler=this.heightMap.height<=7e6?IdScaler:new BigScaler(this.heightOracle.doc,this.heightMap,this.viewports)}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.state.doc,0,0,e=>{this.viewportLines.push(this.scaler.scale==1?e:scaleBlock(e,this.scaler))})}update(e,s=null){this.state=e.state;let a=this.stateDeco;this.stateDeco=this.state.facet(decorations).filter(b=>typeof b!="function");let c=e.changedRanges,h=ChangedRange.extendWithRanges(c,heightRelevantDecoChanges(a,this.stateDeco,e?e.changes:ChangeSet.empty(this.state.doc.length))),d=this.heightMap.height;this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),h),this.heightMap.height!=d&&(e.flags|=2);let g=h.length?this.mapViewport(this.viewport,e.changes):this.viewport;(s&&(s.range.headg.to)||!this.viewportIsAppropriate(g))&&(g=this.getViewport(0,s));let _=!e.changes.empty||e.flags&2||g.from!=this.viewport.from||g.to!=this.viewport.to;this.viewport=g,this.updateForViewport(),_&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(),s&&(this.scrollTarget=s),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&(this.mustEnforceCursorAssoc=!0)}measure(e){let s=e.contentDOM,a=window.getComputedStyle(s),c=this.heightOracle,h=a.whiteSpace;this.defaultTextDirection=a.direction=="rtl"?Direction.RTL:Direction.LTR;let d=this.heightOracle.mustRefreshForWrapping(h),g=d||this.mustMeasureContent||this.contentDOMHeight!=s.clientHeight;this.contentDOMHeight=s.clientHeight,this.mustMeasureContent=!1;let _=0,b=0,$=parseInt(a.paddingTop)||0,j=parseInt(a.paddingBottom)||0;(this.paddingTop!=$||this.paddingBottom!=j)&&(this.paddingTop=$,this.paddingBottom=j,_|=10),this.editorWidth!=e.scrollDOM.clientWidth&&(c.lineWrapping&&(g=!0),this.editorWidth=e.scrollDOM.clientWidth,_|=8);let _e=(this.printing?fullPixelRange:visiblePixelRange)(s,this.paddingTop),et=_e.top-this.pixelViewport.top,tt=_e.bottom-this.pixelViewport.bottom;this.pixelViewport=_e;let nt=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(nt!=this.inView&&(this.inView=nt,nt&&(g=!0)),!this.inView)return 0;let st=s.clientWidth;if((this.contentDOMWidth!=st||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=st,this.editorHeight=e.scrollDOM.clientHeight,_|=8),g){let it=e.docView.measureVisibleLineHeights(this.viewport);if(c.mustRefreshForHeights(it)&&(d=!0),d||c.lineWrapping&&Math.abs(st-this.contentDOMWidth)>c.charWidth){let{lineHeight:at,charWidth:ot}=e.docView.measureTextSize();d=c.refresh(h,at,ot,st/ot,it),d&&(e.docView.minWidth=0,_|=8)}et>0&&tt>0?b=Math.max(et,tt):et<0&&tt<0&&(b=Math.min(et,tt)),c.heightChanged=!1;for(let at of this.viewports){let ot=at.from==this.viewport.from?it:e.docView.measureVisibleLineHeights(at);this.heightMap=this.heightMap.updateHeight(c,0,d,new MeasuredHeights(at.from,ot))}c.heightChanged&&(_|=2)}let rt=!this.viewportIsAppropriate(this.viewport,b)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return rt&&(this.viewport=this.getViewport(b,this.scrollTarget)),this.updateForViewport(),(_&2||rt)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(d?[]:this.lineGaps)),_|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),_}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,s){let a=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),c=this.heightMap,h=this.state.doc,{visibleTop:d,visibleBottom:g}=this,_=new Viewport(c.lineAt(d-a*1e3,QueryType$1.ByHeight,h,0,0).from,c.lineAt(g+(1-a)*1e3,QueryType$1.ByHeight,h,0,0).to);if(s){let{head:b}=s.range;if(b<_.from||b>_.to){let $=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),j=c.lineAt(b,QueryType$1.ByPos,h,0,0),_e;s.y=="center"?_e=(j.top+j.bottom)/2-$/2:s.y=="start"||s.y=="nearest"&&b<_.from?_e=j.top:_e=j.bottom-$,_=new Viewport(c.lineAt(_e-1e3/2,QueryType$1.ByHeight,h,0,0).from,c.lineAt(_e+$+1e3/2,QueryType$1.ByHeight,h,0,0).to)}}return _}mapViewport(e,s){let a=s.mapPos(e.from,-1),c=s.mapPos(e.to,1);return new Viewport(this.heightMap.lineAt(a,QueryType$1.ByPos,this.state.doc,0,0).from,this.heightMap.lineAt(c,QueryType$1.ByPos,this.state.doc,0,0).to)}viewportIsAppropriate({from:e,to:s},a=0){if(!this.inView)return!0;let{top:c}=this.heightMap.lineAt(e,QueryType$1.ByPos,this.state.doc,0,0),{bottom:h}=this.heightMap.lineAt(s,QueryType$1.ByPos,this.state.doc,0,0),{visibleTop:d,visibleBottom:g}=this;return(e==0||c<=d-Math.max(10,Math.min(-a,250)))&&(s==this.state.doc.length||h>=g+Math.max(10,Math.min(a,250)))&&c>d-2*1e3&&ha.from&&g.push({from:a.from,to:h}),d=a.from&&_.from<=a.to&&cutRange(g,_.from-10,_.from+10),!_.empty&&_.to>=a.from&&_.to<=a.to&&cutRange(g,_.to-10,_.to+10);for(let{from:b,to:$}of g)$-b>1e3&&s.push(find(e,j=>j.from>=a.from&&j.to<=a.to&&Math.abs(j.from-b)<1e3&&Math.abs(j.to-$)<1e3)||new LineGap(b,$,this.gapSize(a,b,$,c)))}return s}gapSize(e,s,a,c){let h=findFraction(c,a)-findFraction(c,s);return this.heightOracle.lineWrapping?e.height*h:c.total*this.heightOracle.charWidth*h}updateLineGaps(e){LineGap.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=Decoration.set(e.map(s=>s.draw(this.heightOracle.lineWrapping))))}computeVisibleRanges(){let e=this.stateDeco;this.lineGaps.length&&(e=e.concat(this.lineGapDeco));let s=[];RangeSet.spans(e,this.viewport.from,this.viewport.to,{span(c,h){s.push({from:c,to:h})},point(){}},20);let a=s.length!=this.visibleRanges.length||this.visibleRanges.some((c,h)=>c.from!=s[h].from||c.to!=s[h].to);return this.visibleRanges=s,a?4:0}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(s=>s.from<=e&&s.to>=e)||scaleBlock(this.heightMap.lineAt(e,QueryType$1.ByPos,this.state.doc,0,0),this.scaler)}lineBlockAtHeight(e){return scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(e),QueryType$1.ByHeight,this.state.doc,0,0),this.scaler)}elementAtHeight(e){return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(e),this.state.doc,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class Viewport{constructor(e,s){this.from=e,this.to=s}}function lineStructure(o,e,s){let a=[],c=o,h=0;return RangeSet.spans(s,o,e,{span(){},point(d,g){d>c&&(a.push({from:c,to:d}),h+=d-c),c=g}},20),c=1)return e[e.length-1].to;let a=Math.floor(o*s);for(let c=0;;c++){let{from:h,to:d}=e[c],g=d-h;if(a<=g)return h+a;a-=g}}function findFraction(o,e){let s=0;for(let{from:a,to:c}of o.ranges){if(e<=c){s+=e-a;break}s+=c-a}return s/o.total}function cutRange(o,e,s){for(let a=0;ae){let h=[];c.froms&&h.push({from:s,to:c.to}),o.splice(a,1,...h),a+=h.length-1}}}function find(o,e){for(let s of o)if(e(s))return s}const IdScaler={toDOM(o){return o},fromDOM(o){return o},scale:1};class BigScaler{constructor(e,s,a){let c=0,h=0,d=0;this.viewports=a.map(({from:g,to:_})=>{let b=s.lineAt(g,QueryType$1.ByPos,e,0,0).top,$=s.lineAt(_,QueryType$1.ByPos,e,0,0).bottom;return c+=$-b,{from:g,to:_,top:b,bottom:$,domTop:0,domBottom:0}}),this.scale=(7e6-c)/(s.height-c);for(let g of this.viewports)g.domTop=d+(g.top-h)*this.scale,d=g.domBottom=g.domTop+(g.bottom-g.top),h=g.bottom}toDOM(e){for(let s=0,a=0,c=0;;s++){let h=sscaleBlock(c,e)):o.type)}const theme=Facet.define({combine:o=>o.join(" ")}),darkTheme=Facet.define({combine:o=>o.indexOf(!0)>-1}),baseThemeID=StyleModule.newName(),baseLightID=StyleModule.newName(),baseDarkID=StyleModule.newName(),lightDarkIDs={"&light":"."+baseLightID,"&dark":"."+baseDarkID};function buildTheme(o,e,s){return new StyleModule(e,{finish(a){return/&/.test(a)?a.replace(/&\w*/,c=>{if(c=="&")return o;if(!s||!s[c])throw new RangeError(`Unsupported selector: ${c}`);return s[c]}):o+" "+a}})}const baseTheme$1$3=buildTheme("."+baseThemeID,{"&.cm-editor":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0},".cm-content":{margin:0,flexGrow:2,flexShrink:0,minHeight:"100%",display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 4px"},".cm-selectionLayer":{zIndex:-1,contain:"size style"},".cm-selectionBackground":{position:"absolute"},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{zIndex:100,contain:"size style",pointerEvents:"none"},"&.cm-focused .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{position:"absolute",borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#444"},"&.cm-focused .cm-cursor":{display:"block"},"&light .cm-activeLine":{backgroundColor:"#f3f9ff"},"&dark .cm-activeLine":{backgroundColor:"#223039"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",left:0,zIndex:200},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",borderRight:"1px solid #ddd"},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lightDarkIDs),observeOptions={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},useCharData=browser.ie&&browser.ie_version<=11;class DOMObserver{constructor(e,s,a){this.view=e,this.onChange=s,this.onScrollChanged=a,this.active=!1,this.selectionRange=new DOMSelectionState,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.scrollTargets=[],this.intersection=null,this.resize=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(c=>{for(let h of c)this.queue.push(h);(browser.ie&&browser.ie_version<=11||browser.ios&&e.composing)&&c.some(h=>h.type=="childList"&&h.removedNodes.length||h.type=="characterData"&&h.oldValue.length>h.target.nodeValue.length)?this.flushSoon():this.flush()}),useCharData&&(this.onCharData=c=>{this.queue.push({target:c.target,type:"characterData",oldValue:c.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),typeof ResizeObserver=="function"&&(this.resize=new ResizeObserver(()=>{this.view.docView.lastUpdate{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),c.length>0&&c[c.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(c=>{c.length>0&&c[c.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScroll(e){this.intersecting&&this.flush(!1),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500)}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((s,a)=>s!=e[a]))){this.gapIntersection.disconnect();for(let s of e)this.gapIntersection.observe(s);this.gaps=e}}onSelectionChange(e){if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:s}=this,a=this.selectionRange;if(s.state.facet(editable)?s.root.activeElement!=this.dom:!hasSelection(s.dom,a))return;let c=a.anchorNode&&s.docView.nearest(a.anchorNode);c&&c.ignoreEvent(e)||((browser.ie&&browser.ie_version<=11||browser.android&&browser.chrome)&&!s.state.selection.main.empty&&a.focusNode&&isEquivalentPosition(a.focusNode,a.focusOffset,a.anchorNode,a.anchorOffset)?this.flushSoon():this.flush(!1))}readSelectionRange(){let{view:e}=this,s=browser.safari&&e.root.nodeType==11&&deepActiveElement()==this.dom&&safariSelectionRangeHack(this.view)||getSelection(e.root);if(!s||this.selectionRange.eq(s))return!1;let a=hasSelection(this.dom,s);return a&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let a=this.delayedAndroidKey;this.delayedAndroidKey=null,this.delayedFlush=-1,this.flush()||dispatchKey(this.dom,a.key,a.keyCode)}),(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:s})}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=window.setTimeout(()=>{this.delayedFlush=-1,this.flush()},20))}forceFlush(){this.delayedFlush>=0&&(window.clearTimeout(this.delayedFlush),this.delayedFlush=-1),this.flush()}processRecords(){let e=this.queue;for(let h of this.observer.takeRecords())e.push(h);e.length&&(this.queue=[]);let s=-1,a=-1,c=!1;for(let h of e){let d=this.readMutation(h);!d||(d.typeOver&&(c=!0),s==-1?{from:s,to:a}=d:(s=Math.min(d.from,s),a=Math.max(d.to,a)))}return{from:s,to:a,typeOver:c}}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return;e&&this.readSelectionRange();let{from:s,to:a,typeOver:c}=this.processRecords(),h=this.selectionChanged&&hasSelection(this.dom,this.selectionRange);if(s<0&&!h)return;this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let d=this.view.state,g=this.onChange(s,a,c);return this.view.state==d&&this.view.update([]),g}readMutation(e){let s=this.view.docView.nearest(e.target);if(!s||s.ignoreMutation(e))return null;if(s.markDirty(e.type=="attributes"),e.type=="attributes"&&(s.dirty|=4),e.type=="childList"){let a=findChild(s,e.previousSibling||e.target.previousSibling,-1),c=findChild(s,e.nextSibling||e.target.nextSibling,1);return{from:a?s.posAfter(a):s.posAtStart,to:c?s.posBefore(c):s.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:s.posAtStart,to:s.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}destroy(){var e,s,a;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(s=this.gapIntersection)===null||s===void 0||s.disconnect(),(a=this.resize)===null||a===void 0||a.disconnect();for(let c of this.scrollTargets)c.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout)}}function findChild(o,e,s){for(;e;){let a=ContentView.get(e);if(a&&a.parent==o)return a;let c=e.parentNode;e=c!=o.dom?c:s>0?e.nextSibling:e.previousSibling}return null}function safariSelectionRangeHack(o){let e=null;function s(_){_.preventDefault(),_.stopImmediatePropagation(),e=_.getTargetRanges()[0]}if(o.contentDOM.addEventListener("beforeinput",s,!0),document.execCommand("indent"),o.contentDOM.removeEventListener("beforeinput",s,!0),!e)return null;let a=e.startContainer,c=e.startOffset,h=e.endContainer,d=e.endOffset,g=o.docView.domAtPos(o.state.selection.main.anchor);return isEquivalentPosition(g.node,g.offset,h,d)&&([a,c,h,d]=[h,d,a,c]),{anchorNode:a,anchorOffset:c,focusNode:h,focusOffset:d}}function applyDOMChange(o,e,s,a){let c,h,d=o.state.selection.main;if(e>-1){let g=o.docView.domBoundsAround(e,s,0);if(!g||o.state.readOnly)return!1;let{from:_,to:b}=g,$=o.docView.impreciseHead||o.docView.impreciseAnchor?[]:selectionPoints(o),j=new DOMReader($,o.state);j.readRange(g.startDOM,g.endDOM);let _e=d.from,et=null;(o.inputState.lastKeyCode===8&&o.inputState.lastKeyTime>Date.now()-100||browser.android&&j.text.length=d.from&&c.to<=d.to&&(c.from!=d.from||c.to!=d.to)&&d.to-d.from-(c.to-c.from)<=4?c={from:d.from,to:d.to,insert:o.state.doc.slice(d.from,c.from).append(c.insert).append(o.state.doc.slice(c.to,d.to))}:(browser.mac||browser.android)&&c&&c.from==c.to&&c.from==d.head-1&&c.insert.toString()=="."&&(c={from:d.from,to:d.to,insert:Text.of([" "])}),c){let g=o.state;if(browser.ios&&o.inputState.flushIOSKey(o)||browser.android&&(c.from==d.from&&c.to==d.to&&c.insert.length==1&&c.insert.lines==2&&dispatchKey(o.contentDOM,"Enter",13)||c.from==d.from-1&&c.to==d.to&&c.insert.length==0&&dispatchKey(o.contentDOM,"Backspace",8)||c.from==d.from&&c.to==d.to+1&&c.insert.length==0&&dispatchKey(o.contentDOM,"Delete",46)))return!0;let _=c.insert.toString();if(o.state.facet(inputHandler$1).some(j=>j(o,c.from,c.to,_)))return!0;o.inputState.composing>=0&&o.inputState.composing++;let b;if(c.from>=d.from&&c.to<=d.to&&c.to-c.from>=(d.to-d.from)/3&&(!h||h.main.empty&&h.main.from==c.from+c.insert.length)&&o.inputState.composing<0){let j=d.fromc.to?g.sliceDoc(c.to,d.to):"";b=g.replaceSelection(o.state.toText(j+c.insert.sliceString(0,void 0,o.state.lineBreak)+_e))}else{let j=g.changes(c),_e=h&&!g.selection.main.eq(h.main)&&h.main.to<=j.newLength?h.main:void 0;if(g.selection.ranges.length>1&&o.inputState.composing>=0&&c.to<=d.to&&c.to>=d.to-10){let et=o.state.sliceDoc(c.from,c.to),tt=compositionSurroundingNode(o)||o.state.doc.lineAt(d.head),nt=d.to-c.to,st=d.to-d.from;b=g.changeByRange(rt=>{if(rt.from==d.from&&rt.to==d.to)return{changes:j,range:_e||rt.map(j)};let it=rt.to-nt,at=it-et.length;if(rt.to-rt.from!=st||o.state.sliceDoc(at,it)!=et||tt&&rt.to>=tt.from&&rt.from<=tt.to)return{range:rt};let ot=g.changes({from:at,to:it,insert:c.insert}),ut=rt.to-d.to;return{changes:ot,range:_e?EditorSelection.range(Math.max(0,_e.anchor+ut),Math.max(0,_e.head+ut)):rt.map(ot)}})}else b={changes:j,selection:_e&&g.selection.replaceRange(_e)}}let $="input.type";return o.composing&&($+=".compose",o.inputState.compositionFirstChange&&($+=".start",o.inputState.compositionFirstChange=!1)),o.dispatch(b,{scrollIntoView:!0,userEvent:$}),!0}else if(h&&!h.main.eq(d)){let g=!1,_="select";return o.inputState.lastSelectionTime>Date.now()-50&&(o.inputState.lastSelectionOrigin=="select"&&(g=!0),_=o.inputState.lastSelectionOrigin),o.dispatch({selection:h,scrollIntoView:g,userEvent:_}),!0}else return!1}function findDiff(o,e,s,a){let c=Math.min(o.length,e.length),h=0;for(;h0&&g>0&&o.charCodeAt(d-1)==e.charCodeAt(g-1);)d--,g--;if(a=="end"){let _=Math.max(0,h-Math.min(d,g));s-=d+_-h}return d=d?h-s:0,g=h+(g-d),d=h):g=g?h-s:0,d=h+(d-g),g=h),{from:h,toA:d,toB:g}}function selectionPoints(o){let e=[];if(o.root.activeElement!=o.contentDOM)return e;let{anchorNode:s,anchorOffset:a,focusNode:c,focusOffset:h}=o.observer.selectionRange;return s&&(e.push(new DOMPoint(s,a)),(c!=s||h!=a)&&e.push(new DOMPoint(c,h))),e}function selectionFromPoints(o,e){if(o.length==0)return null;let s=o[0].pos,a=o.length==2?o[1].pos:s;return s>-1&&a>-1?EditorSelection.single(s+e,a+e):null}class EditorView{constructor(e={}){this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.style.cssText="position: absolute; top: -10000px",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),this._dispatch=e.dispatch||(s=>this.update([s])),this.dispatch=this.dispatch.bind(this),this._root=e.root||getRoot(e.parent)||document,this.viewState=new ViewState(e.state||EditorState.create(e)),this.plugins=this.state.facet(viewPlugin).map(s=>new PluginInstance(s));for(let s of this.plugins)s.update(this);this.observer=new DOMObserver(this,(s,a,c)=>applyDOMChange(this,s,a,c),s=>{this.inputState.runScrollHandlers(this,s),this.observer.intersecting&&this.measure()}),this.inputState=new InputState(this),this.inputState.ensureHandlers(this,this.plugins),this.docView=new DocView(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),e.parent&&e.parent.appendChild(this.dom)}get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return this.inputState.composing>0}get compositionStarted(){return this.inputState.composing>=0}get root(){return this._root}dispatch(...e){this._dispatch(e.length==1&&e[0]instanceof Transaction?e[0]:this.state.update(...e))}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let s=!1,a=!1,c,h=this.state;for(let g of e){if(g.startState!=h)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");h=g.state}if(this.destroyed){this.viewState.state=h;return}if(this.observer.clear(),h.facet(EditorState.phrases)!=this.state.facet(EditorState.phrases))return this.setState(h);c=ViewUpdate.create(this,h,e);let d=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(d&&(d=d.map(g.changes)),g.scrollIntoView){let{main:_}=g.state.selection;d=new ScrollTarget(_.empty?_:EditorSelection.cursor(_.head,_.head>_.anchor?-1:1))}for(let _ of g.effects)_.is(scrollIntoView$1)&&(d=_.value)}this.viewState.update(c,d),this.bidiCache=CachedOrder.update(this.bidiCache,c.changes),c.empty||(this.updatePlugins(c),this.inputState.update(c)),s=this.docView.update(c),this.state.facet(styleModule)!=this.styleModules&&this.mountStyles(),a=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(s,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(c.startState.facet(theme)!=c.state.facet(theme)&&(this.viewState.mustMeasureContent=!0),(s||a||d||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),!c.empty)for(let g of this.state.facet(updateListener))g(c)}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let s=this.hasFocus;try{for(let a of this.plugins)a.destroy(this);this.viewState=new ViewState(e),this.plugins=e.facet(viewPlugin).map(a=>new PluginInstance(a)),this.pluginMap.clear();for(let a of this.plugins)a.update(this);this.docView=new DocView(this),this.inputState.ensureHandlers(this,this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}s&&this.focus(),this.requestMeasure()}updatePlugins(e){let s=e.startState.facet(viewPlugin),a=e.state.facet(viewPlugin);if(s!=a){let c=[];for(let h of a){let d=s.indexOf(h);if(d<0)c.push(new PluginInstance(h));else{let g=this.plugins[d];g.mustUpdate=e,c.push(g)}}for(let h of this.plugins)h.mustUpdate!=e&&h.destroy(this);this.plugins=c,this.pluginMap.clear(),this.inputState.ensureHandlers(this,this.plugins)}else for(let c of this.plugins)c.mustUpdate=e;for(let c=0;c-1&&cancelAnimationFrame(this.measureScheduled),this.measureScheduled=0,e&&this.observer.forceFlush();let s=null,{scrollHeight:a,scrollTop:c,clientHeight:h}=this.scrollDOM,d=c>a-h-4?a:c;try{for(let g=0;;g++){this.updateState=1;let _=this.viewport,b=this.viewState.lineBlockAtHeight(d),$=this.viewState.measure(this);if(!$&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(g>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let j=[];$&4||([this.measureRequests,j]=[j,this.measureRequests]);let _e=j.map(st=>{try{return st.read(this)}catch(rt){return logException(this.state,rt),BadMeasure}}),et=ViewUpdate.create(this,this.state,[]),tt=!1,nt=!1;et.flags|=$,s?s.flags|=$:s=et,this.updateState=2,et.empty||(this.updatePlugins(et),this.inputState.update(et),this.updateAttrs(),tt=this.docView.update(et));for(let st=0;st1||st<-1)&&(this.scrollDOM.scrollTop+=st,nt=!0)}if(tt&&this.docView.updateSelection(!0),this.viewport.from==_.from&&this.viewport.to==_.to&&!nt&&this.measureRequests.length==0)break}}finally{this.updateState=0,this.measureScheduled=-1}if(s&&!s.empty)for(let g of this.state.facet(updateListener))g(s)}get themeClasses(){return baseThemeID+" "+(this.state.facet(darkTheme)?baseDarkID:baseLightID)+" "+this.state.facet(theme)}updateAttrs(){let e=attrsFromFacet(this,editorAttributes,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),s={spellcheck:"false",autocorrect:"off",autocapitalize:"off",translate:"no",contenteditable:this.state.facet(editable)?"true":"false",class:"cm-content",style:`${browser.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(s["aria-readonly"]="true"),attrsFromFacet(this,contentAttributes,s);let a=this.observer.ignore(()=>{let c=updateAttrs(this.contentDOM,this.contentAttrs,s),h=updateAttrs(this.dom,this.editorAttrs,e);return c||h});return this.editorAttrs=e,this.contentAttrs=s,a}showAnnouncements(e){let s=!0;for(let a of e)for(let c of a.effects)if(c.is(EditorView.announce)){s&&(this.announceDOM.textContent=""),s=!1;let h=this.announceDOM.appendChild(document.createElement("div"));h.textContent=c.value}}mountStyles(){this.styleModules=this.state.facet(styleModule),StyleModule.mount(this.root,this.styleModules.concat(baseTheme$1$3).reverse())}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=requestAnimationFrame(()=>this.measure())),e){if(e.key!=null){for(let s=0;sa.spec==e)||null),s&&s.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,s,a){return skipAtoms(this,e,moveByChar(this,e,s,a))}moveByGroup(e,s){return skipAtoms(this,e,moveByChar(this,e,s,a=>byGroup(this,e.head,a)))}moveToLineBoundary(e,s,a=!0){return moveToLineBoundary(this,e,s,a)}moveVertically(e,s,a){return skipAtoms(this,e,moveVertically(this,e,s,a))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,s=0){return this.docView.posFromDOM(e,s)}posAtCoords(e,s=!0){return this.readMeasured(),posAtCoords(this,e,s)}coordsAtPos(e,s=1){this.readMeasured();let a=this.docView.coordsAt(e,s);if(!a||a.left==a.right)return a;let c=this.state.doc.lineAt(e),h=this.bidiSpans(c),d=h[BidiSpan.find(h,e-c.from,-1,s)];return flattenRect(a,d.dir==Direction.LTR==s>0)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(perLineTextDirection)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>MaxBidiLine)return trivialOrder(e.length);let s=this.textDirectionAt(e.from);for(let c of this.bidiCache)if(c.from==e.from&&c.dir==s)return c.order;let a=computeOrder(e.text,s);return this.bidiCache.push(new CachedOrder(e.from,e.to,s,a)),a}get hasFocus(){var e;return(document.hasFocus()||browser.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{focusPreventScroll(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView),this.mountStyles())}destroy(){for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,s={}){return scrollIntoView$1.of(new ScrollTarget(typeof e=="number"?EditorSelection.cursor(e):e,s.y,s.x,s.yMargin,s.xMargin))}static domEventHandlers(e){return ViewPlugin.define(()=>({}),{eventHandlers:e})}static theme(e,s){let a=StyleModule.newName(),c=[theme.of(a),styleModule.of(buildTheme(`.${a}`,e))];return s&&s.dark&&c.push(darkTheme.of(!0)),c}static baseTheme(e){return Prec.lowest(styleModule.of(buildTheme("."+baseThemeID,e,lightDarkIDs)))}static findFromDOM(e){var s;let a=e.querySelector(".cm-content"),c=a&&ContentView.get(a)||ContentView.get(e);return((s=c==null?void 0:c.rootView)===null||s===void 0?void 0:s.view)||null}}EditorView.styleModule=styleModule;EditorView.inputHandler=inputHandler$1;EditorView.perLineTextDirection=perLineTextDirection;EditorView.exceptionSink=exceptionSink;EditorView.updateListener=updateListener;EditorView.editable=editable;EditorView.mouseSelectionStyle=mouseSelectionStyle;EditorView.dragMovesSelection=dragMovesSelection$1;EditorView.clickAddsSelectionRange=clickAddsSelectionRange;EditorView.decorations=decorations;EditorView.atomicRanges=atomicRanges;EditorView.scrollMargins=scrollMargins;EditorView.darkTheme=darkTheme;EditorView.contentAttributes=contentAttributes;EditorView.editorAttributes=editorAttributes;EditorView.lineWrapping=EditorView.contentAttributes.of({class:"cm-lineWrapping"});EditorView.announce=StateEffect.define();const MaxBidiLine=4096,BadMeasure={};class CachedOrder{constructor(e,s,a,c){this.from=e,this.to=s,this.dir=a,this.order=c}static update(e,s){if(s.empty)return e;let a=[],c=e.length?e[e.length-1].dir:Direction.LTR;for(let h=Math.max(0,e.length-10);h=0;c--){let h=a[c],d=typeof h=="function"?h(o):h;d&&combineAttrs(d,s)}return s}const currentPlatform=browser.mac?"mac":browser.windows?"win":browser.linux?"linux":"key";function normalizeKeyName(o,e){const s=o.split(/-(?!$)/);let a=s[s.length-1];a=="Space"&&(a=" ");let c,h,d,g;for(let _=0;_a.concat(c),[]))),s}function runScopeHandlers(o,e,s){return runHandlers(getKeymap(o.state),e,o,s)}let storedPrefix=null;const PrefixTimeout=4e3;function buildKeymap(o,e=currentPlatform){let s=Object.create(null),a=Object.create(null),c=(d,g)=>{let _=a[d];if(_==null)a[d]=g;else if(_!=g)throw new Error("Key binding "+d+" is used both as a regular binding and as a multi-stroke prefix")},h=(d,g,_,b)=>{let $=s[d]||(s[d]=Object.create(null)),j=g.split(/ (?!$)/).map(tt=>normalizeKeyName(tt,e));for(let tt=1;tt{let rt=storedPrefix={view:st,prefix:nt,scope:d};return setTimeout(()=>{storedPrefix==rt&&(storedPrefix=null)},PrefixTimeout),!0}]})}let _e=j.join(" ");c(_e,!1);let et=$[_e]||($[_e]={preventDefault:!1,commands:[]});et.commands.push(_),b&&(et.preventDefault=!0)};for(let d of o){let g=d[e]||d.key;if(!!g)for(let _ of d.scope?d.scope.split(" "):["editor"])h(_,g,d.run,d.preventDefault),d.shift&&h(_,"Shift-"+g,d.shift,d.preventDefault)}return s}function runHandlers(o,e,s,a){let c=keyName(e),h=codePointAt(c,0),d=codePointSize(h)==c.length&&c!=" ",g="",_=!1;storedPrefix&&storedPrefix.view==s&&storedPrefix.scope==a&&(g=storedPrefix.prefix+" ",(_=modifierCodes.indexOf(e.keyCode)<0)&&(storedPrefix=null));let b=_e=>{if(_e){for(let et of _e.commands)if(et(s))return!0;_e.preventDefault&&(_=!0)}return!1},$=o[a],j;if($){if(b($[g+modifiers(c,e,!d)]))return!0;if(d&&(e.shiftKey||e.altKey||e.metaKey||h>127)&&(j=base[e.keyCode])&&j!=c){if(b($[g+modifiers(j,e,!0)]))return!0;if(e.shiftKey&&shift[e.keyCode]!=j&&b($[g+modifiers(shift[e.keyCode],e,!1)]))return!0}else if(d&&e.shiftKey&&b($[g+modifiers(c,e,!0)]))return!0}return _}const CanHidePrimary=!browser.ios,selectionConfig=Facet.define({combine(o){return combineConfig(o,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,s)=>Math.min(e,s),drawRangeCursor:(e,s)=>e||s})}});function drawSelection(o={}){return[selectionConfig.of(o),drawSelectionPlugin,hideNativeSelection]}class Piece{constructor(e,s,a,c,h){this.left=e,this.top=s,this.width=a,this.height=c,this.className=h}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width>=0&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}}const drawSelectionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.rangePieces=[],this.cursors=[],this.measureReq={read:this.readPos.bind(this),write:this.drawSel.bind(this)},this.selectionLayer=o.scrollDOM.appendChild(document.createElement("div")),this.selectionLayer.className="cm-selectionLayer",this.selectionLayer.setAttribute("aria-hidden","true"),this.cursorLayer=o.scrollDOM.appendChild(document.createElement("div")),this.cursorLayer.className="cm-cursorLayer",this.cursorLayer.setAttribute("aria-hidden","true"),o.requestMeasure(this.measureReq),this.setBlinkRate()}setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.facet(selectionConfig).cursorBlinkRate+"ms"}update(o){let e=o.startState.facet(selectionConfig)!=o.state.facet(selectionConfig);(e||o.selectionSet||o.geometryChanged||o.viewportChanged)&&this.view.requestMeasure(this.measureReq),o.transactions.some(s=>s.scrollIntoView)&&(this.cursorLayer.style.animationName=this.cursorLayer.style.animationName=="cm-blink"?"cm-blink2":"cm-blink"),e&&this.setBlinkRate()}readPos(){let{state:o}=this.view,e=o.facet(selectionConfig),s=o.selection.ranges.map(c=>c.empty?[]:measureRange(this.view,c)).reduce((c,h)=>c.concat(h)),a=[];for(let c of o.selection.ranges){let h=c==o.selection.main;if(c.empty?!h||CanHidePrimary:e.drawRangeCursor){let d=measureCursor(this.view,c,h);d&&a.push(d)}}return{rangePieces:s,cursors:a}}drawSel({rangePieces:o,cursors:e}){if(o.length!=this.rangePieces.length||o.some((s,a)=>!s.eq(this.rangePieces[a]))){this.selectionLayer.textContent="";for(let s of o)this.selectionLayer.appendChild(s.draw());this.rangePieces=o}if(e.length!=this.cursors.length||e.some((s,a)=>!s.eq(this.cursors[a]))){let s=this.cursorLayer.children;if(s.length!==e.length){this.cursorLayer.textContent="";for(const a of e)this.cursorLayer.appendChild(a.draw())}else e.forEach((a,c)=>a.adjust(s[c]));this.cursors=e}}destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()}}),themeSpec={".cm-line":{"& ::selection":{backgroundColor:"transparent !important"},"&::selection":{backgroundColor:"transparent !important"}}};CanHidePrimary&&(themeSpec[".cm-line"].caretColor="transparent !important");const hideNativeSelection=Prec.highest(EditorView.theme(themeSpec));function getBase(o){let e=o.scrollDOM.getBoundingClientRect();return{left:(o.textDirection==Direction.LTR?e.left:e.right-o.scrollDOM.clientWidth)-o.scrollDOM.scrollLeft,top:e.top-o.scrollDOM.scrollTop}}function wrappedLine(o,e,s){let a=EditorSelection.cursor(e);return{from:Math.max(s.from,o.moveToLineBoundary(a,!1,!0).from),to:Math.min(s.to,o.moveToLineBoundary(a,!0,!0).from),type:BlockType.Text}}function blockAt(o,e){let s=o.lineBlockAt(e);if(Array.isArray(s.type)){for(let a of s.type)if(a.to>e||a.to==e&&(a.to==s.to||a.type==BlockType.Text))return a}return s}function measureRange(o,e){if(e.to<=o.viewport.from||e.from>=o.viewport.to)return[];let s=Math.max(e.from,o.viewport.from),a=Math.min(e.to,o.viewport.to),c=o.textDirection==Direction.LTR,h=o.contentDOM,d=h.getBoundingClientRect(),g=getBase(o),_=window.getComputedStyle(h.firstChild),b=d.left+parseInt(_.paddingLeft)+Math.min(0,parseInt(_.textIndent)),$=d.right-parseInt(_.paddingRight),j=blockAt(o,s),_e=blockAt(o,a),et=j.type==BlockType.Text?j:null,tt=_e.type==BlockType.Text?_e:null;if(o.lineWrapping&&(et&&(et=wrappedLine(o,s,et)),tt&&(tt=wrappedLine(o,a,tt))),et&&tt&&et.from==tt.from)return st(rt(e.from,e.to,et));{let at=et?rt(e.from,null,et):it(j,!1),ot=tt?rt(null,e.to,tt):it(_e,!0),ut=[];return(et||j).to<(tt||_e).from-1?ut.push(nt(b,at.bottom,$,ot.top)):at.bottomft&&yt.from=Et)break;dt>mt&&pt(Math.max(At,mt),at==null&&At<=ft,Math.min(dt,Et),ot==null&&dt>=gt,St.dir)}if(mt=Ot.to+1,mt>=Et)break}return lt.length==0&&pt(ft,at==null,gt,ot==null,o.textDirection),{top:ct,bottom:ht,horizontal:lt}}function it(at,ot){let ut=d.top+(ot?at.top:at.bottom);return{top:ut,bottom:ut,horizontal:[]}}}function measureCursor(o,e,s){let a=o.coordsAtPos(e.head,e.assoc||1);if(!a)return null;let c=getBase(o);return new Piece(a.left-c.left,a.top-c.top,-1,a.bottom-a.top,s?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary")}const setDropCursorPos=StateEffect.define({map(o,e){return o==null?null:e.mapPos(o)}}),dropCursorPos=StateField.define({create(){return null},update(o,e){return o!=null&&(o=e.changes.mapPos(o)),e.effects.reduce((s,a)=>a.is(setDropCursorPos)?a.value:s,o)}}),drawDropCursor=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(o){var e;let s=o.state.field(dropCursorPos);s==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(o.startState.field(dropCursorPos)!=s||o.docChanged||o.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let o=this.view.state.field(dropCursorPos),e=o!=null&&this.view.coordsAtPos(o);if(!e)return null;let s=this.view.scrollDOM.getBoundingClientRect();return{left:e.left-s.left+this.view.scrollDOM.scrollLeft,top:e.top-s.top+this.view.scrollDOM.scrollTop,height:e.bottom-e.top}}drawCursor(o){this.cursor&&(o?(this.cursor.style.left=o.left+"px",this.cursor.style.top=o.top+"px",this.cursor.style.height=o.height+"px"):this.cursor.style.left="-100000px")}destroy(){this.cursor&&this.cursor.remove()}setDropPos(o){this.view.state.field(dropCursorPos)!=o&&this.view.dispatch({effects:setDropCursorPos.of(o)})}},{eventHandlers:{dragover(o){this.setDropPos(this.view.posAtCoords({x:o.clientX,y:o.clientY}))},dragleave(o){(o.target==this.view.contentDOM||!this.view.contentDOM.contains(o.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function dropCursor(){return[dropCursorPos,drawDropCursor]}function iterMatches(o,e,s,a,c){e.lastIndex=0;for(let h=o.iterRange(s,a),d=s,g;!h.next().done;d+=h.value.length)if(!h.lineBreak)for(;g=e.exec(h.value);)c(d+g.index,g)}function matchRanges(o,e){let s=o.visibleRanges;if(s.length==1&&s[0].from==o.viewport.from&&s[0].to==o.viewport.to)return s;let a=[];for(let{from:c,to:h}of s)c=Math.max(o.state.doc.lineAt(c).from,c-e),h=Math.min(o.state.doc.lineAt(h).to,h+e),a.length&&a[a.length-1].to>=c?a[a.length-1].to=h:a.push({from:c,to:h});return a}class MatchDecorator{constructor(e){const{regexp:s,decoration:a,decorate:c,boundary:h,maxLength:d=1e3}=e;if(!s.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=s,c)this.addMatch=(g,_,b,$)=>c($,b,b+g[0].length,g,_);else if(a){let g=typeof a=="function"?a:()=>a;this.addMatch=(_,b,$,j)=>j($,$+_[0].length,g(_,b,$))}else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=h,this.maxLength=d}createDeco(e){let s=new RangeSetBuilder,a=s.add.bind(s);for(let{from:c,to:h}of matchRanges(e,this.maxLength))iterMatches(e.state.doc,this.regexp,c,h,(d,g)=>this.addMatch(g,e,d,a));return s.finish()}updateDeco(e,s){let a=1e9,c=-1;return e.docChanged&&e.changes.iterChanges((h,d,g,_)=>{_>e.view.viewport.from&&g1e3?this.createDeco(e.view):c>-1?this.updateRange(e.view,s.map(e.changes),a,c):s}updateRange(e,s,a,c){for(let h of e.visibleRanges){let d=Math.max(h.from,a),g=Math.min(h.to,c);if(g>d){let _=e.state.doc.lineAt(d),b=_.to_.from;d--)if(this.boundary.test(_.text[d-1-_.from])){$=d;break}for(;g_e.push(rt.range(nt,st));if(_==b)for(this.regexp.lastIndex=$-_.from;(et=this.regexp.exec(_.text))&&et.indexthis.addMatch(st,e,nt,tt));s=s.update({filterFrom:$,filterTo:j,filter:(nt,st)=>nt<$||st>j,add:_e})}}return s}}const UnicodeRegexpSupport=/x/.unicode!=null?"gu":"g",Specials=new RegExp(`[\0-\b --\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,UnicodeRegexpSupport),Names={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let _supportsTabSize=null;function supportsTabSize(){var o;if(_supportsTabSize==null&&typeof document<"u"&&document.body){let e=document.body.style;_supportsTabSize=((o=e.tabSize)!==null&&o!==void 0?o:e.MozTabSize)!=null}return _supportsTabSize||!1}const specialCharConfig=Facet.define({combine(o){let e=combineConfig(o,{render:null,specialChars:Specials,addSpecialChars:null});return(e.replaceTabs=!supportsTabSize())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,UnicodeRegexpSupport)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,UnicodeRegexpSupport)),e}});function highlightSpecialChars(o={}){return[specialCharConfig.of(o),specialCharPlugin()]}let _plugin=null;function specialCharPlugin(){return _plugin||(_plugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=Decoration.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(o.state.facet(specialCharConfig)),this.decorations=this.decorator.createDeco(o)}makeDecorator(o){return new MatchDecorator({regexp:o.specialChars,decoration:(e,s,a)=>{let{doc:c}=s.state,h=codePointAt(e[0],0);if(h==9){let d=c.lineAt(a),g=s.state.tabSize,_=countColumn(d.text,g,a-d.from);return Decoration.replace({widget:new TabWidget((g-_%g)*this.view.defaultCharacterWidth)})}return this.decorationCache[h]||(this.decorationCache[h]=Decoration.replace({widget:new SpecialCharWidget(o,h)}))},boundary:o.replaceTabs?void 0:/[^]/})}update(o){let e=o.state.facet(specialCharConfig);o.startState.facet(specialCharConfig)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(o.view)):this.decorations=this.decorator.updateDeco(o,this.decorations)}},{decorations:o=>o.decorations}))}const DefaultPlaceholder="\u2022";function placeholder$1(o){return o>=32?DefaultPlaceholder:o==10?"\u2424":String.fromCharCode(9216+o)}class SpecialCharWidget extends WidgetType{constructor(e,s){super(),this.options=e,this.code=s}eq(e){return e.code==this.code}toDOM(e){let s=placeholder$1(this.code),a=e.state.phrase("Control character")+" "+(Names[this.code]||"0x"+this.code.toString(16)),c=this.options.render&&this.options.render(this.code,a,s);if(c)return c;let h=document.createElement("span");return h.textContent=s,h.title=a,h.setAttribute("aria-label",a),h.className="cm-specialChar",h}ignoreEvent(){return!1}}class TabWidget extends WidgetType{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function highlightActiveLine(){return activeLineHighlighter}const lineDeco=Decoration.line({class:"cm-activeLine"}),activeLineHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.docChanged||o.selectionSet)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=-1,s=[];for(let a of o.state.selection.ranges){if(!a.empty)return Decoration.none;let c=o.lineBlockAt(a.head);c.from>e&&(s.push(lineDeco.range(c.from)),e=c.from)}return Decoration.set(s)}},{decorations:o=>o.decorations});class Placeholder extends WidgetType{constructor(e){super(),this.content=e}toDOM(){let e=document.createElement("span");return e.className="cm-placeholder",e.style.pointerEvents="none",e.appendChild(typeof this.content=="string"?document.createTextNode(this.content):this.content),typeof this.content=="string"?e.setAttribute("aria-label","placeholder "+this.content):e.setAttribute("aria-hidden","true"),e}ignoreEvent(){return!1}}function placeholder(o){return ViewPlugin.fromClass(class{constructor(e){this.view=e,this.placeholder=Decoration.set([Decoration.widget({widget:new Placeholder(o),side:1}).range(0)])}get decorations(){return this.view.state.doc.length?Decoration.none:this.placeholder}},{decorations:e=>e.decorations})}const MaxOff=2e3;function rectangleFor(o,e,s){let a=Math.min(e.line,s.line),c=Math.max(e.line,s.line),h=[];if(e.off>MaxOff||s.off>MaxOff||e.col<0||s.col<0){let d=Math.min(e.off,s.off),g=Math.max(e.off,s.off);for(let _=a;_<=c;_++){let b=o.doc.line(_);b.length<=g&&h.push(EditorSelection.range(b.from+d,b.to+g))}}else{let d=Math.min(e.col,s.col),g=Math.max(e.col,s.col);for(let _=a;_<=c;_++){let b=o.doc.line(_),$=findColumn(b.text,d,o.tabSize,!0);if($>-1){let j=findColumn(b.text,g,o.tabSize);h.push(EditorSelection.range(b.from+$,b.from+j))}}}return h}function absoluteColumn(o,e){let s=o.coordsAtPos(o.viewport.from);return s?Math.round(Math.abs((s.left-e)/o.defaultCharacterWidth)):-1}function getPos(o,e){let s=o.posAtCoords({x:e.clientX,y:e.clientY},!1),a=o.state.doc.lineAt(s),c=s-a.from,h=c>MaxOff?-1:c==a.length?absoluteColumn(o,e.clientX):countColumn(a.text,o.state.tabSize,s-a.from);return{line:a.number,col:h,off:c}}function rectangleSelectionStyle(o,e){let s=getPos(o,e),a=o.state.selection;return s?{update(c){if(c.docChanged){let h=c.changes.mapPos(c.startState.doc.line(s.line).from),d=c.state.doc.lineAt(h);s={line:d.number,col:s.col,off:Math.min(s.off,d.length)},a=a.map(c.changes)}},get(c,h,d){let g=getPos(o,c);if(!g)return a;let _=rectangleFor(o.state,s,g);return _.length?d?EditorSelection.create(_.concat(a.ranges)):EditorSelection.create(_):a}}:null}function rectangularSelection(o){let e=(o==null?void 0:o.eventFilter)||(s=>s.altKey&&s.button==0);return EditorView.mouseSelectionStyle.of((s,a)=>e(a)?rectangleSelectionStyle(s,a):null)}const keys={Alt:[18,o=>o.altKey],Control:[17,o=>o.ctrlKey],Shift:[16,o=>o.shiftKey],Meta:[91,o=>o.metaKey]},showCrosshair={style:"cursor: crosshair"};function crosshairCursor(o={}){let[e,s]=keys[o.key||"Alt"],a=ViewPlugin.fromClass(class{constructor(c){this.view=c,this.isDown=!1}set(c){this.isDown!=c&&(this.isDown=c,this.view.update([]))}},{eventHandlers:{keydown(c){this.set(c.keyCode==e||s(c))},keyup(c){(c.keyCode==e||!s(c))&&this.set(!1)}}});return[a,EditorView.contentAttributes.of(c=>{var h;return!((h=c.plugin(a))===null||h===void 0)&&h.isDown?showCrosshair:null})]}const Outside="-10000px";class TooltipViewManager{constructor(e,s,a){this.facet=s,this.createTooltipView=a,this.input=e.state.facet(s),this.tooltips=this.input.filter(c=>c),this.tooltipViews=this.tooltips.map(a)}update(e){let s=e.state.facet(this.facet),a=s.filter(h=>h);if(s===this.input){for(let h of this.tooltipViews)h.update&&h.update(e);return!1}let c=[];for(let h=0;h{var e,s,a;return{position:browser.ios?"absolute":((e=o.find(c=>c.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((s=o.find(c=>c.parent))===null||s===void 0?void 0:s.parent)||null,tooltipSpace:((a=o.find(c=>c.tooltipSpace))===null||a===void 0?void 0:a.tooltipSpace)||windowSpace}}}),tooltipPlugin=ViewPlugin.fromClass(class{constructor(o){var e;this.view=o,this.inView=!0,this.lastTransaction=0,this.measureTimeout=-1;let s=o.state.facet(tooltipConfig);this.position=s.position,this.parent=s.parent,this.classes=o.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.manager=new TooltipViewManager(o,showTooltip,a=>this.createTooltip(a)),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(a=>{Date.now()>this.lastTransaction-50&&a.length>0&&a[a.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),(e=o.dom.ownerDocument.defaultView)===null||e===void 0||e.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let o of this.manager.tooltipViews)this.intersectionObserver.observe(o.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(o){o.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(o);e&&this.observeIntersection();let s=e||o.geometryChanged,a=o.state.facet(tooltipConfig);if(a.position!=this.position){this.position=a.position;for(let c of this.manager.tooltipViews)c.dom.style.position=this.position;s=!0}if(a.parent!=this.parent){this.parent&&this.container.remove(),this.parent=a.parent,this.createContainer();for(let c of this.manager.tooltipViews)this.container.appendChild(c.dom);s=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);s&&this.maybeMeasure()}createTooltip(o){let e=o.create(this.view);if(e.dom.classList.add("cm-tooltip"),o.arrow&&!e.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",e.dom.appendChild(s)}return e.dom.style.position=this.position,e.dom.style.top=Outside,this.container.appendChild(e.dom),e.mount&&e.mount(this.view),e}destroy(){var o,e;(o=this.view.dom.ownerDocument.defaultView)===null||o===void 0||o.removeEventListener("resize",this.measureSoon);for(let{dom:s}of this.manager.tooltipViews)s.remove();(e=this.intersectionObserver)===null||e===void 0||e.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let o=this.view.dom.getBoundingClientRect();return{editor:o,parent:this.parent?this.container.getBoundingClientRect():o,pos:this.manager.tooltips.map((e,s)=>{let a=this.manager.tooltipViews[s];return a.getCoords?a.getCoords(e.pos):this.view.coordsAtPos(e.pos)}),size:this.manager.tooltipViews.map(({dom:e})=>e.getBoundingClientRect()),space:this.view.state.facet(tooltipConfig).tooltipSpace(this.view)}}writeMeasure(o){let{editor:e,space:s}=o,a=[];for(let c=0;c=Math.min(e.bottom,s.bottom)||_.rightMath.min(e.right,s.right)+.1){g.style.top=Outside;continue}let $=h.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,j=$?7:0,_e=b.right-b.left,et=b.bottom-b.top,tt=d.offset||noOffset,nt=this.view.textDirection==Direction.LTR,st=b.width>s.right-s.left?nt?s.left:s.right-b.width:nt?Math.min(_.left-($?14:0)+tt.x,s.right-_e):Math.max(s.left,_.left-_e+($?14:0)-tt.x),rt=!!h.above;!h.strictSide&&(rt?_.top-(b.bottom-b.top)-tt.ys.bottom)&&rt==s.bottom-_.bottom>_.top-s.top&&(rt=!rt);let it=rt?_.top-et-j-tt.y:_.bottom+j+tt.y,at=st+_e;if(d.overlap!==!0)for(let ot of a)ot.leftst&&ot.topit&&(it=rt?ot.top-et-2-j:ot.bottom+j+2);this.position=="absolute"?(g.style.top=it-o.parent.top+"px",g.style.left=st-o.parent.left+"px"):(g.style.top=it+"px",g.style.left=st+"px"),$&&($.style.left=`${_.left+(nt?tt.x:-tt.x)-(st+14-7)}px`),d.overlap!==!0&&a.push({left:st,top:it,right:at,bottom:it+et}),g.classList.toggle("cm-tooltip-above",rt),g.classList.toggle("cm-tooltip-below",!rt),d.positioned&&d.positioned()}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let o of this.manager.tooltipViews)o.dom.style.top=Outside}},{eventHandlers:{scroll(){this.maybeMeasure()}}}),baseTheme$4=EditorView.baseTheme({".cm-tooltip":{zIndex:100},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:`${7}px`,width:`${7*2}px`,position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:`${7}px solid transparent`,borderRight:`${7}px solid transparent`},".cm-tooltip-above &":{bottom:`-${7}px`,"&:before":{borderTop:`${7}px solid #bbb`},"&:after":{borderTop:`${7}px solid #f5f5f5`,bottom:"1px"}},".cm-tooltip-below &":{top:`-${7}px`,"&:before":{borderBottom:`${7}px solid #bbb`},"&:after":{borderBottom:`${7}px solid #f5f5f5`,top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),noOffset={x:0,y:0},showTooltip=Facet.define({enables:[tooltipPlugin,baseTheme$4]}),showHoverTooltip=Facet.define();class HoverTooltipHost{constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new TooltipViewManager(e,showHoverTooltip,s=>this.createHostedView(s))}static create(e){return new HoverTooltipHost(e)}createHostedView(e){let s=e.create(this.view);return s.dom.classList.add("cm-tooltip-section"),this.dom.appendChild(s.dom),this.mounted&&s.mount&&s.mount(this.view),s}mount(e){for(let s of this.manager.tooltipViews)s.mount&&s.mount(e);this.mounted=!0}positioned(){for(let e of this.manager.tooltipViews)e.positioned&&e.positioned()}update(e){this.manager.update(e)}}const showHoverTooltipHost=showTooltip.compute([showHoverTooltip],o=>{let e=o.facet(showHoverTooltip).filter(s=>s);return e.length===0?null:{pos:Math.min(...e.map(s=>s.pos)),end:Math.max(...e.filter(s=>s.end!=null).map(s=>s.end)),create:HoverTooltipHost.create,above:e[0].above,arrow:e.some(s=>s.arrow)}});class HoverPlugin{constructor(e,s,a,c,h){this.view=e,this.source=s,this.field=a,this.setHover=c,this.hoverTime=h,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active)return;let e=Date.now()-this.lastMove.time;ea.bottom||e.xa.right+this.view.defaultCharacterWidth)return;let c=this.view.bidiSpans(this.view.state.doc.lineAt(s)).find(g=>g.from<=s&&g.to>=s),h=c&&c.dir==Direction.RTL?-1:1,d=this.source(this.view,s,e.x{this.pending==g&&(this.pending=null,_&&this.view.dispatch({effects:this.setHover.of(_)}))},_=>logException(this.view.state,_,"hover tooltip"))}else d&&this.view.dispatch({effects:this.setHover.of(d)})}mousemove(e){var s;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let a=this.active;if(a&&!isInTooltip(this.lastMove.target)||this.pending){let{pos:c}=a||this.pending,h=(s=a==null?void 0:a.end)!==null&&s!==void 0?s:c;(c==h?this.view.posAtCoords(this.lastMove)!=c:!isOverRange(this.view,c,h,e.clientX,e.clientY,6))&&(this.view.dispatch({effects:this.setHover.of(null)}),this.pending=null)}}mouseleave(){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1,this.active&&this.view.dispatch({effects:this.setHover.of(null)})}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}function isInTooltip(o){for(let e=o;e;e=e.parentNode)if(e.nodeType==1&&e.classList.contains("cm-tooltip"))return!0;return!1}function isOverRange(o,e,s,a,c,h){let d=document.createRange(),g=o.domAtPos(e),_=o.domAtPos(s);d.setEnd(_.node,_.offset),d.setStart(g.node,g.offset);let b=d.getClientRects();d.detach();for(let $=0;$showHoverTooltip.from(c)});return[a,ViewPlugin.define(c=>new HoverPlugin(c,o,a,s,e.hoverTime||300)),showHoverTooltipHost]}function getTooltip(o,e){let s=o.plugin(tooltipPlugin);if(!s)return null;let a=s.manager.tooltips.indexOf(e);return a<0?null:s.manager.tooltipViews[a]}const closeHoverTooltipEffect=StateEffect.define(),panelConfig=Facet.define({combine(o){let e,s;for(let a of o)e=e||a.topContainer,s=s||a.bottomContainer;return{topContainer:e,bottomContainer:s}}});function getPanel(o,e){let s=o.plugin(panelPlugin),a=s?s.specs.indexOf(e):-1;return a>-1?s.panels[a]:null}const panelPlugin=ViewPlugin.fromClass(class{constructor(o){this.input=o.state.facet(showPanel),this.specs=this.input.filter(s=>s),this.panels=this.specs.map(s=>s(o));let e=o.state.facet(panelConfig);this.top=new PanelGroup(o,!0,e.topContainer),this.bottom=new PanelGroup(o,!1,e.bottomContainer),this.top.sync(this.panels.filter(s=>s.top)),this.bottom.sync(this.panels.filter(s=>!s.top));for(let s of this.panels)s.dom.classList.add("cm-panel"),s.mount&&s.mount()}update(o){let e=o.state.facet(panelConfig);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new PanelGroup(o.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new PanelGroup(o.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let s=o.state.facet(showPanel);if(s!=this.input){let a=s.filter(_=>_),c=[],h=[],d=[],g=[];for(let _ of a){let b=this.specs.indexOf(_),$;b<0?($=_(o.view),g.push($)):($=this.panels[b],$.update&&$.update(o)),c.push($),($.top?h:d).push($)}this.specs=a,this.panels=c,this.top.sync(h),this.bottom.sync(d);for(let _ of g)_.dom.classList.add("cm-panel"),_.mount&&_.mount()}else for(let a of this.panels)a.update&&a.update(o)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:o=>EditorView.scrollMargins.of(e=>{let s=e.plugin(o);return s&&{top:s.top.scrollMargin(),bottom:s.bottom.scrollMargin()}})});class PanelGroup{constructor(e,s,a){this.view=e,this.top=s,this.container=a,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let s of this.panels)s.destroy&&e.indexOf(s)<0&&s.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let s=this.container||this.view.dom;s.insertBefore(this.dom,this.top?s.firstChild:null)}let e=this.dom.firstChild;for(let s of this.panels)if(s.dom.parentNode==this.dom){for(;e!=s.dom;)e=rm(e);e=e.nextSibling}else this.dom.insertBefore(s.dom,e);for(;e;)e=rm(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function rm(o){let e=o.nextSibling;return o.remove(),e}const showPanel=Facet.define({enables:panelPlugin});class GutterMarker extends RangeValue{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}GutterMarker.prototype.elementClass="";GutterMarker.prototype.toDOM=void 0;GutterMarker.prototype.mapMode=MapMode.TrackBefore;GutterMarker.prototype.startSide=GutterMarker.prototype.endSide=-1;GutterMarker.prototype.point=!0;const gutterLineClass=Facet.define(),defaults$1={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>RangeSet.empty,lineMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{}},activeGutters=Facet.define();function gutter(o){return[gutters(),activeGutters.of(Object.assign(Object.assign({},defaults$1),o))]}const unfixGutters=Facet.define({combine:o=>o.some(e=>e)});function gutters(o){let e=[gutterView];return o&&o.fixed===!1&&e.push(unfixGutters.of(!0)),e}const gutterView=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.prevViewport=o.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight+"px",this.gutters=o.state.facet(activeGutters).map(e=>new SingleGutterView(o,e));for(let e of this.gutters)this.dom.appendChild(e.dom);this.fixed=!o.state.facet(unfixGutters),this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),o.scrollDOM.insertBefore(this.dom,o.contentDOM)}update(o){if(this.updateGutters(o)){let e=this.prevViewport,s=o.view.viewport,a=Math.min(e.to,s.to)-Math.max(e.from,s.from);this.syncGutters(a<(s.to-s.from)*.8)}o.geometryChanged&&(this.dom.style.minHeight=this.view.contentHeight+"px"),this.view.state.facet(unfixGutters)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":""),this.prevViewport=o.view.viewport}syncGutters(o){let e=this.dom.nextSibling;o&&this.dom.remove();let s=RangeSet.iter(this.view.state.facet(gutterLineClass),this.view.viewport.from),a=[],c=this.gutters.map(h=>new UpdateContext(h,this.view.viewport,-this.view.documentPadding.top));for(let h of this.view.viewportLineBlocks){let d;if(Array.isArray(h.type)){for(let g of h.type)if(g.type==BlockType.Text){d=g;break}}else d=h.type==BlockType.Text?h:void 0;if(!!d){a.length&&(a=[]),advanceCursor(s,a,h.from);for(let g of c)g.line(this.view,d,a)}}for(let h of c)h.finish();o&&this.view.scrollDOM.insertBefore(this.dom,e)}updateGutters(o){let e=o.startState.facet(activeGutters),s=o.state.facet(activeGutters),a=o.docChanged||o.heightChanged||o.viewportChanged||!RangeSet.eq(o.startState.facet(gutterLineClass),o.state.facet(gutterLineClass),o.view.viewport.from,o.view.viewport.to);if(e==s)for(let c of this.gutters)c.update(o)&&(a=!0);else{a=!0;let c=[];for(let h of s){let d=e.indexOf(h);d<0?c.push(new SingleGutterView(this.view,h)):(this.gutters[d].update(o),c.push(this.gutters[d]))}for(let h of this.gutters)h.dom.remove(),c.indexOf(h)<0&&h.destroy();for(let h of c)this.dom.appendChild(h.dom);this.gutters=c}return a}destroy(){for(let o of this.gutters)o.destroy();this.dom.remove()}},{provide:o=>EditorView.scrollMargins.of(e=>{let s=e.plugin(o);return!s||s.gutters.length==0||!s.fixed?null:e.textDirection==Direction.LTR?{left:s.dom.offsetWidth}:{right:s.dom.offsetWidth}})});function asArray(o){return Array.isArray(o)?o:[o]}function advanceCursor(o,e,s){for(;o.value&&o.from<=s;)o.from==s&&e.push(o.value),o.next()}class UpdateContext{constructor(e,s,a){this.gutter=e,this.height=a,this.localMarkers=[],this.i=0,this.cursor=RangeSet.iter(e.markers,s.from)}line(e,s,a){this.localMarkers.length&&(this.localMarkers=[]),advanceCursor(this.cursor,this.localMarkers,s.from);let c=a.length?this.localMarkers.concat(a):this.localMarkers,h=this.gutter.config.lineMarker(e,s,c);h&&c.unshift(h);let d=this.gutter;if(c.length==0&&!d.config.renderEmptyElements)return;let g=s.top-this.height;if(this.i==d.elements.length){let _=new GutterElement(e,s.height,g,c);d.elements.push(_),d.dom.appendChild(_.dom)}else d.elements[this.i].update(e,s.height,g,c);this.height=s.bottom,this.i++}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let s=e.elements.pop();e.dom.removeChild(s.dom),s.destroy()}}}class SingleGutterView{constructor(e,s){this.view=e,this.config=s,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let a in s.domEventHandlers)this.dom.addEventListener(a,c=>{let h=e.lineBlockAtHeight(c.clientY-e.documentTop);s.domEventHandlers[a](e,h,c)&&c.preventDefault()});this.markers=asArray(s.markers(e)),s.initialSpacer&&(this.spacer=new GutterElement(e,0,0,[s.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let s=this.markers;if(this.markers=asArray(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let c=this.config.updateSpacer(this.spacer.markers[0],e);c!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[c])}let a=e.view.viewport;return!RangeSet.eq(this.markers,s,a.from,a.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class GutterElement{constructor(e,s,a,c){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,s,a,c)}update(e,s,a,c){this.height!=s&&(this.dom.style.height=(this.height=s)+"px"),this.above!=a&&(this.dom.style.marginTop=(this.above=a)?a+"px":""),sameMarkers(this.markers,c)||this.setMarkers(e,c)}setMarkers(e,s){let a="cm-gutterElement",c=this.dom.firstChild;for(let h=0,d=0;;){let g=d,_=hh(g,_,b)||d(g,_,b):d}return a}})}});class NumberMarker extends GutterMarker{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function formatNumber(o,e){return o.state.facet(lineNumberConfig).formatNumber(e,o.state)}const lineNumberGutter=activeGutters.compute([lineNumberConfig],o=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(lineNumberMarkers)},lineMarker(e,s,a){return a.some(c=>c.toDOM)?null:new NumberMarker(formatNumber(e,e.state.doc.lineAt(s.from).number))},lineMarkerChange:e=>e.startState.facet(lineNumberConfig)!=e.state.facet(lineNumberConfig),initialSpacer(e){return new NumberMarker(formatNumber(e,maxLineNumber(e.state.doc.lines)))},updateSpacer(e,s){let a=formatNumber(s.view,maxLineNumber(s.view.state.doc.lines));return a==e.number?e:new NumberMarker(a)},domEventHandlers:o.facet(lineNumberConfig).domEventHandlers}));function lineNumbers(o={}){return[lineNumberConfig.of(o),gutters(),lineNumberGutter]}function maxLineNumber(o){let e=9;for(;e{let e=[],s=-1;for(let a of o.selection.ranges)if(a.empty){let c=o.doc.lineAt(a.head).from;c>s&&(s=c,e.push(activeLineGutterMarker.range(c)))}return RangeSet.of(e)});function highlightActiveLineGutter(){return activeLineGutterHighlighter}const DefaultBufferLength=1024;let nextPropID=0;class Range{constructor(e,s){this.from=e,this.to=s}}class NodeProp{constructor(e={}){this.id=nextPropID++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")})}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=NodeType.match(e)),s=>{let a=e(s);return a===void 0?null:[this,a]}}}NodeProp.closedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.openedBy=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.group=new NodeProp({deserialize:o=>o.split(" ")});NodeProp.contextHash=new NodeProp({perNode:!0});NodeProp.lookAhead=new NodeProp({perNode:!0});NodeProp.mounted=new NodeProp({perNode:!0});const noProps=Object.create(null);class NodeType{constructor(e,s,a,c=0){this.name=e,this.props=s,this.id=a,this.flags=c}static define(e){let s=e.props&&e.props.length?Object.create(null):noProps,a=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),c=new NodeType(e.name||"",s,e.id,a);if(e.props){for(let h of e.props)if(Array.isArray(h)||(h=h(c)),h){if(h[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");s[h[0].id]=h[1]}}return c}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let s=this.prop(NodeProp.group);return s?s.indexOf(e)>-1:!1}return this.id==e}static match(e){let s=Object.create(null);for(let a in e)for(let c of a.split(" "))s[c]=e[a];return a=>{for(let c=a.prop(NodeProp.group),h=-1;h<(c?c.length:0);h++){let d=s[h<0?a.name:c[h]];if(d)return d}}}}NodeType.none=new NodeType("",Object.create(null),0,8);class NodeSet{constructor(e){this.types=e;for(let s=0;s=c&&(d.type.isAnonymous||s(d)!==!1)){if(d.firstChild())continue;g=!0}for(;g&&a&&!d.type.isAnonymous&&a(d),!d.nextSibling();){if(!d.parent())return;g=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let s in this.props)e.push([+s,this.props[s]]);return e}balance(e={}){return this.children.length<=8?this:balanceRange(NodeType.none,this.children,this.positions,0,this.children.length,0,this.length,(s,a,c)=>new Tree(this.type,s,a,c,this.propValues),e.makeTree||((s,a,c)=>new Tree(NodeType.none,s,a,c)))}static build(e){return buildTree(e)}}Tree.empty=new Tree(NodeType.none,[],[],0);class FlatBufferCursor{constructor(e,s){this.buffer=e,this.index=s}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new FlatBufferCursor(this.buffer,this.index)}}class TreeBuffer{constructor(e,s,a){this.buffer=e,this.length=s,this.set=a}get type(){return NodeType.none}toString(){let e=[];for(let s=0;s0));_=d[_+3]);return g}slice(e,s,a,c){let h=this.buffer,d=new Uint16Array(s-e);for(let g=e,_=0;g=e&&se;case 1:return s<=e&&a>e;case 2:return a>e;case 4:return!0}}function enterUnfinishedNodesBefore(o,e){let s=o.childBefore(e);for(;s;){let a=s.lastChild;if(!a||a.to!=s.to)break;a.type.isError&&a.from==a.to?(o=s,s=a.prevSibling):s=a}return o}function resolveNode(o,e,s,a){for(var c;o.from==o.to||(s<1?o.from>=e:o.from>e)||(s>-1?o.to<=e:o.to0?g.length:-1;e!=b;e+=s){let $=g[e],j=_[e]+d.from;if(!!checkSide(c,a,j,j+$.length)){if($ instanceof TreeBuffer){if(h&IterMode.ExcludeBuffers)continue;let _e=$.findChild(0,$.buffer.length,s,a-j,c);if(_e>-1)return new BufferNode(new BufferContext(d,$,e,j),null,_e)}else if(h&IterMode.IncludeAnonymous||!$.type.isAnonymous||hasChild($)){let _e;if(!(h&IterMode.IgnoreMounts)&&$.props&&(_e=$.prop(NodeProp.mounted))&&!_e.overlay)return new TreeNode(_e.tree,j,e,d);let et=new TreeNode($,j,e,d);return h&IterMode.IncludeAnonymous||!et.type.isAnonymous?et:et.nextChild(s<0?$.children.length-1:0,s,a,c)}}}if(h&IterMode.IncludeAnonymous||!d.type.isAnonymous||(d.index>=0?e=d.index+s:e=s<0?-1:d._parent._tree.children.length,d=d._parent,!d))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,s,a=0){let c;if(!(a&IterMode.IgnoreOverlays)&&(c=this._tree.prop(NodeProp.mounted))&&c.overlay){let h=e-this.from;for(let{from:d,to:g}of c.overlay)if((s>0?d<=h:d=h:g>h))return new TreeNode(c.tree,c.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,s,a)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}cursor(e=0){return new TreeCursor(this,e)}get tree(){return this._tree}toTree(){return this._tree}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}toString(){return this._tree.toString()}get node(){return this}matchContext(e){return matchNodeContext(this,e)}}function getChildren(o,e,s,a){let c=o.cursor(),h=[];if(!c.firstChild())return h;if(s!=null){for(;!c.type.is(s);)if(!c.nextSibling())return h}for(;;){if(a!=null&&c.type.is(a))return h;if(c.type.is(e)&&h.push(c.node),!c.nextSibling())return a==null?h:[]}}function matchNodeContext(o,e,s=e.length-1){for(let a=o.parent;s>=0;a=a.parent){if(!a)return!1;if(!a.type.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}class BufferContext{constructor(e,s,a,c){this.parent=e,this.buffer=s,this.index=a,this.start=c}}class BufferNode{constructor(e,s,a){this.context=e,this._parent=s,this.index=a,this.type=e.buffer.set.types[e.buffer.buffer[a]]}get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}child(e,s,a){let{buffer:c}=this.context,h=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.context.start,a);return h<0?null:new BufferNode(this.context,this,h)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,s,a=0){if(a&IterMode.ExcludeBuffers)return null;let{buffer:c}=this.context,h=c.findChild(this.index+4,c.buffer[this.index+3],s>0?1:-1,e-this.context.start,s);return h<0?null:new BufferNode(this.context,this,h)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,s=e.buffer[this.index+3];return s<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new BufferNode(this.context,this._parent,s):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,s=this._parent?this._parent.index+4:0;return this.index==s?this.externalSibling(-1):new BufferNode(this.context,this._parent,e.findChild(s,this.index,-1,0,4))}cursor(e=0){return new TreeCursor(this,e)}get tree(){return null}toTree(){let e=[],s=[],{buffer:a}=this.context,c=this.index+4,h=a.buffer[this.index+3];if(h>c){let d=a.buffer[this.index+1],g=a.buffer[this.index+2];e.push(a.slice(c,h,d,g)),s.push(0)}return new Tree(this.type,e,s,this.to-this.from)}resolve(e,s=0){return resolveNode(this,e,s,!1)}resolveInner(e,s=0){return resolveNode(this,e,s,!0)}enterUnfinishedNodesBefore(e){return enterUnfinishedNodesBefore(this,e)}toString(){return this.context.buffer.childString(this.index)}getChild(e,s=null,a=null){let c=getChildren(this,e,s,a);return c.length?c[0]:null}getChildren(e,s=null,a=null){return getChildren(this,e,s,a)}get node(){return this}matchContext(e){return matchNodeContext(this,e)}}class TreeCursor{constructor(e,s=0){if(this.mode=s,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof TreeNode)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let a=e._parent;a;a=a._parent)this.stack.unshift(a.index);this.bufferNode=e,this.yieldBuf(e.index)}}get name(){return this.type.name}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,s){this.index=e;let{start:a,buffer:c}=this.buffer;return this.type=s||c.set.types[c.buffer[e]],this.from=a+c.buffer[e+1],this.to=a+c.buffer[e+2],!0}yield(e){return e?e instanceof TreeNode?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,s,a){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,s,a,this.mode));let{buffer:c}=this.buffer,h=c.findChild(this.index+4,c.buffer[this.index+3],e,s-this.buffer.start,a);return h<0?!1:(this.stack.push(this.index),this.yieldBuf(h))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,s,a=this.mode){return this.buffer?a&IterMode.ExcludeBuffers?!1:this.enterChild(1,e,s):this.yield(this._tree.enter(e,s,a))}parent(){if(!this.buffer)return this.yieldNode(this.mode&IterMode.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&IterMode.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:s}=this.buffer,a=this.stack.length-1;if(e<0){let c=a<0?0:this.stack[a]+4;if(this.index!=c)return this.yieldBuf(s.findChild(c,this.index,-1,0,4))}else{let c=s.buffer[this.index+3];if(c<(a<0?s.buffer.length:s.buffer[this.stack[a]+3]))return this.yieldBuf(c)}return a<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let s,a,{buffer:c}=this;if(c){if(e>0){if(this.index-1)for(let h=s+e,d=e<0?-1:a._tree.children.length;h!=d;h+=e){let g=a._tree.children[h];if(this.mode&IterMode.IncludeAnonymous||g instanceof TreeBuffer||!g.type.isAnonymous||hasChild(g))return!1}return!0}move(e,s){if(s&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,s=0){for(;(this.from==this.to||(s<1?this.from>=e:this.from>e)||(s>-1?this.to<=e:this.to=0;){for(let d=e;d;d=d._parent)if(d.index==c){if(c==this.index)return d;s=d,a=h+1;break e}c=this.stack[--h]}}for(let c=a;c=0;h--){if(h<0)return matchNodeContext(this.node,e,c);let d=a[s.buffer[this.stack[h]]];if(!d.isAnonymous){if(e[c]&&e[c]!=d.name)return!1;c--}}return!0}}function hasChild(o){return o.children.some(e=>e instanceof TreeBuffer||!e.type.isAnonymous||hasChild(e))}function buildTree(o){var e;let{buffer:s,nodeSet:a,maxBufferLength:c=DefaultBufferLength,reused:h=[],minRepeatType:d=a.types.length}=o,g=Array.isArray(s)?new FlatBufferCursor(s,s.length):s,_=a.types,b=0,$=0;function j(ot,ut,ct,ht,lt){let{id:pt,start:ft,end:gt,size:yt}=g,mt=$;for(;yt<0;)if(g.next(),yt==-1){let dt=h[pt];ct.push(dt),ht.push(ft-ot);return}else if(yt==-3){b=pt;return}else if(yt==-4){$=pt;return}else throw new RangeError(`Unrecognized record size: ${yt}`);let Et=_[pt],Ot,St,At=ft-ot;if(gt-ft<=c&&(St=nt(g.pos-ut,lt))){let dt=new Uint16Array(St.size-St.skip),Dt=g.pos-St.size,Ct=dt.length;for(;g.pos>Dt;)Ct=st(St.start,dt,Ct);Ot=new TreeBuffer(dt,gt-St.start,a),At=St.start-ot}else{let dt=g.pos-yt;g.next();let Dt=[],Ct=[],xt=pt>=d?pt:-1,Tt=0,kt=gt;for(;g.pos>dt;)xt>=0&&g.id==xt&&g.size>=0?(g.end<=kt-c&&(et(Dt,Ct,ft,Tt,g.end,kt,xt,mt),Tt=Dt.length,kt=g.end),g.next()):j(ft,dt,Dt,Ct,xt);if(xt>=0&&Tt>0&&Tt-1&&Tt>0){let _t=_e(Et);Ot=balanceRange(Et,Dt,Ct,0,Dt.length,0,gt-ft,_t,_t)}else Ot=tt(Et,Dt,Ct,gt-ft,mt-gt)}ct.push(Ot),ht.push(At)}function _e(ot){return(ut,ct,ht)=>{let lt=0,pt=ut.length-1,ft,gt;if(pt>=0&&(ft=ut[pt])instanceof Tree){if(!pt&&ft.type==ot&&ft.length==ht)return ft;(gt=ft.prop(NodeProp.lookAhead))&&(lt=ct[pt]+ft.length+gt)}return tt(ot,ut,ct,ht,lt)}}function et(ot,ut,ct,ht,lt,pt,ft,gt){let yt=[],mt=[];for(;ot.length>ht;)yt.push(ot.pop()),mt.push(ut.pop()+ct-lt);ot.push(tt(a.types[ft],yt,mt,pt-lt,gt-pt)),ut.push(lt-ct)}function tt(ot,ut,ct,ht,lt=0,pt){if(b){let ft=[NodeProp.contextHash,b];pt=pt?[ft].concat(pt):[ft]}if(lt>25){let ft=[NodeProp.lookAhead,lt];pt=pt?[ft].concat(pt):[ft]}return new Tree(ot,ut,ct,ht,pt)}function nt(ot,ut){let ct=g.fork(),ht=0,lt=0,pt=0,ft=ct.end-c,gt={size:0,start:0,skip:0};e:for(let yt=ct.pos-ot;ct.pos>yt;){let mt=ct.size;if(ct.id==ut&&mt>=0){gt.size=ht,gt.start=lt,gt.skip=pt,pt+=4,ht+=4,ct.next();continue}let Et=ct.pos-mt;if(mt<0||Et=d?4:0,St=ct.start;for(ct.next();ct.pos>Et;){if(ct.size<0)if(ct.size==-3)Ot+=4;else break e;else ct.id>=d&&(Ot+=4);ct.next()}lt=St,ht+=mt,pt+=Ot}return(ut<0||ht==ot)&&(gt.size=ht,gt.start=lt,gt.skip=pt),gt.size>4?gt:void 0}function st(ot,ut,ct){let{id:ht,start:lt,end:pt,size:ft}=g;if(g.next(),ft>=0&&ht4){let yt=g.pos-(ft-4);for(;g.pos>yt;)ct=st(ot,ut,ct)}ut[--ct]=gt,ut[--ct]=pt-ot,ut[--ct]=lt-ot,ut[--ct]=ht}else ft==-3?b=ht:ft==-4&&($=ht);return ct}let rt=[],it=[];for(;g.pos>0;)j(o.start||0,o.bufferStart||0,rt,it,-1);let at=(e=o.length)!==null&&e!==void 0?e:rt.length?it[0]+rt[0].length:0;return new Tree(_[o.topID],rt.reverse(),it.reverse(),at)}const nodeSizeCache=new WeakMap;function nodeSize(o,e){if(!o.isAnonymous||e instanceof TreeBuffer||e.type!=o)return 1;let s=nodeSizeCache.get(e);if(s==null){s=1;for(let a of e.children){if(a.type!=o||!(a instanceof Tree)){s=1;break}s+=nodeSize(o,a)}nodeSizeCache.set(e,s)}return s}function balanceRange(o,e,s,a,c,h,d,g,_){let b=0;for(let tt=a;tt=$)break;ct+=ht}if(at==ot+1){if(ct>$){let ht=tt[ot];et(ht.children,ht.positions,0,ht.children.length,nt[ot]+it);continue}j.push(tt[ot])}else{let ht=nt[at-1]+tt[at-1].length-ut;j.push(balanceRange(o,tt,nt,ot,at,ut,ht,null,_))}_e.push(ut+it-h)}}return et(e,s,a,c,0),(g||_)(j,_e,d)}class NodeWeakMap{constructor(){this.map=new WeakMap}setBuffer(e,s,a){let c=this.map.get(e);c||this.map.set(e,c=new Map),c.set(s,a)}getBuffer(e,s){let a=this.map.get(e);return a&&a.get(s)}set(e,s){e instanceof BufferNode?this.setBuffer(e.context.buffer,e.index,s):e instanceof TreeNode&&this.map.set(e.tree,s)}get(e){return e instanceof BufferNode?this.getBuffer(e.context.buffer,e.index):e instanceof TreeNode?this.map.get(e.tree):void 0}cursorSet(e,s){e.buffer?this.setBuffer(e.buffer.buffer,e.index,s):this.map.set(e.tree,s)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class TreeFragment{constructor(e,s,a,c,h=!1,d=!1){this.from=e,this.to=s,this.tree=a,this.offset=c,this.open=(h?1:0)|(d?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,s=[],a=!1){let c=[new TreeFragment(0,e.length,e,0,!1,a)];for(let h of s)h.to>e.length&&c.push(h);return c}static applyChanges(e,s,a=128){if(!s.length)return e;let c=[],h=1,d=e.length?e[0]:null;for(let g=0,_=0,b=0;;g++){let $=g=a)for(;d&&d.from=_e.from||j<=_e.to||b){let et=Math.max(_e.from,_)-b,tt=Math.min(_e.to,j)-b;_e=et>=tt?null:new TreeFragment(et,tt,_e.tree,_e.offset+b,g>0,!!$)}if(_e&&c.push(_e),d.to>j)break;d=hnew Range(c.from,c.to)):[new Range(0,0)]:[new Range(0,e.length)],this.createParse(e,s||[],a)}parse(e,s,a){let c=this.startParse(e,s,a);for(;;){let h=c.advance();if(h)return h}}}class StringInput{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,s){return this.string.slice(e,s)}}new NodeProp({perNode:!0});let nextTagID=0;class Tag{constructor(e,s,a){this.set=e,this.base=s,this.modified=a,this.id=nextTagID++}static define(e){if(e!=null&&e.base)throw new Error("Can not derive from a modified tag");let s=new Tag([],null,[]);if(s.set.push(s),e)for(let a of e.set)s.set.push(a);return s}static defineModifier(){let e=new Modifier;return s=>s.modified.indexOf(e)>-1?s:Modifier.get(s.base||s,s.modified.concat(e).sort((a,c)=>a.id-c.id))}}let nextModifierID=0;class Modifier{constructor(){this.instances=[],this.id=nextModifierID++}static get(e,s){if(!s.length)return e;let a=s[0].instances.find(g=>g.base==e&&sameArray(s,g.modified));if(a)return a;let c=[],h=new Tag(c,e,s);for(let g of s)g.instances.push(h);let d=permute(s);for(let g of e.set)for(let _ of d)c.push(Modifier.get(g,_));return h}}function sameArray(o,e){return o.length==e.length&&o.every((s,a)=>s==e[a])}function permute(o){let e=[o];for(let s=0;s0&&j+3==c.length){d=1;break}let _e=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(g);if(!_e)throw new RangeError("Invalid path: "+c);if(h.push(_e[0]=="*"?"":_e[0][0]=='"'?JSON.parse(_e[0]):_e[0]),j+=_e[0].length,j==c.length)break;let et=c[j++];if(j==c.length&&et=="!"){d=0;break}if(et!="/")throw new RangeError("Invalid path: "+c);g=c.slice(j)}let _=h.length-1,b=h[_];if(!b)throw new RangeError("Invalid path: "+c);let $=new Rule(a,d,_>0?h.slice(0,_):null);e[b]=$.sort(e[b])}}return ruleNodeProp.add(e)}const ruleNodeProp=new NodeProp;class Rule{constructor(e,s,a,c){this.tags=e,this.mode=s,this.context=a,this.next=c}sort(e){return!e||e.depth{let d=c;for(let g of h)for(let _ of g.set){let b=s[_.id];if(b){d=d?d+" "+b:b;break}}return d},scope:a}}function highlightTags(o,e){let s=null;for(let a of o){let c=a.style(e);c&&(s=s?s+" "+c:c)}return s}function highlightTree(o,e,s,a=0,c=o.length){let h=new HighlightBuilder(a,Array.isArray(e)?e:[e],s);h.highlightRange(o.cursor(),a,c,"",h.highlighters),h.flush(c)}class HighlightBuilder{constructor(e,s,a){this.at=e,this.highlighters=s,this.span=a,this.class=""}startSpan(e,s){s!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=s)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,s,a,c,h){let{type:d,from:g,to:_}=e;if(g>=a||_<=s)return;d.isTop&&(h=this.highlighters.filter(et=>!et.scope||et.scope(d)));let b=c,$=d.prop(ruleNodeProp),j=!1;for(;$;){if(!$.context||e.matchContext($.context)){let et=highlightTags(h,$.tags);et&&(b&&(b+=" "),b+=et,$.mode==1?c+=(c?" ":"")+et:$.mode==0&&(j=!0));break}$=$.next}if(this.startSpan(e.from,b),j)return;let _e=e.tree&&e.tree.prop(NodeProp.mounted);if(_e&&_e.overlay){let et=e.node.enter(_e.overlay[0].from+g,1),tt=this.highlighters.filter(st=>!st.scope||st.scope(_e.tree.type)),nt=e.firstChild();for(let st=0,rt=g;;st++){let it=st<_e.overlay.length?_e.overlay[st]:null,at=it?it.from+g:_,ot=Math.max(s,rt),ut=Math.min(a,at);if(ot=at||!e.nextSibling())););if(!it||at>a)break;rt=it.to+g,rt>s&&(this.highlightRange(et.cursor(),Math.max(s,it.from+g),Math.min(a,rt),c,tt),this.startSpan(rt,b))}nt&&e.parent()}else if(e.firstChild()){do if(!(e.to<=s)){if(e.from>=a)break;this.highlightRange(e,s,a,c,h),this.startSpan(Math.min(a,e.to),b)}while(e.nextSibling());e.parent()}}}const t=Tag.define,comment=t(),name=t(),typeName=t(name),propertyName=t(name),literal=t(),string=t(literal),number=t(literal),content=t(),heading=t(content),keyword=t(),operator=t(),punctuation=t(),bracket=t(punctuation),meta=t(),tags={comment,lineComment:t(comment),blockComment:t(comment),docComment:t(comment),name,variableName:t(name),typeName,tagName:t(typeName),propertyName,attributeName:t(propertyName),className:t(name),labelName:t(name),namespace:t(name),macroName:t(name),literal,string,docString:t(string),character:t(string),attributeValue:t(string),number,integer:t(number),float:t(number),bool:t(literal),regexp:t(literal),escape:t(literal),color:t(literal),url:t(literal),keyword,self:t(keyword),null:t(keyword),atom:t(keyword),unit:t(keyword),modifier:t(keyword),operatorKeyword:t(keyword),controlKeyword:t(keyword),definitionKeyword:t(keyword),moduleKeyword:t(keyword),operator,derefOperator:t(operator),arithmeticOperator:t(operator),logicOperator:t(operator),bitwiseOperator:t(operator),compareOperator:t(operator),updateOperator:t(operator),definitionOperator:t(operator),typeOperator:t(operator),controlOperator:t(operator),punctuation,separator:t(punctuation),bracket,angleBracket:t(bracket),squareBracket:t(bracket),paren:t(bracket),brace:t(bracket),content,heading,heading1:t(heading),heading2:t(heading),heading3:t(heading),heading4:t(heading),heading5:t(heading),heading6:t(heading),contentSeparator:t(content),list:t(content),quote:t(content),emphasis:t(content),strong:t(content),link:t(content),monospace:t(content),strikethrough:t(content),inserted:t(),deleted:t(),changed:t(),invalid:t(),meta,documentMeta:t(meta),annotation:t(meta),processingInstruction:t(meta),definition:Tag.defineModifier(),constant:Tag.defineModifier(),function:Tag.defineModifier(),standard:Tag.defineModifier(),local:Tag.defineModifier(),special:Tag.defineModifier()};tagHighlighter([{tag:tags.link,class:"tok-link"},{tag:tags.heading,class:"tok-heading"},{tag:tags.emphasis,class:"tok-emphasis"},{tag:tags.strong,class:"tok-strong"},{tag:tags.keyword,class:"tok-keyword"},{tag:tags.atom,class:"tok-atom"},{tag:tags.bool,class:"tok-bool"},{tag:tags.url,class:"tok-url"},{tag:tags.labelName,class:"tok-labelName"},{tag:tags.inserted,class:"tok-inserted"},{tag:tags.deleted,class:"tok-deleted"},{tag:tags.literal,class:"tok-literal"},{tag:tags.string,class:"tok-string"},{tag:tags.number,class:"tok-number"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],class:"tok-string2"},{tag:tags.variableName,class:"tok-variableName"},{tag:tags.local(tags.variableName),class:"tok-variableName tok-local"},{tag:tags.definition(tags.variableName),class:"tok-variableName tok-definition"},{tag:tags.special(tags.variableName),class:"tok-variableName2"},{tag:tags.definition(tags.propertyName),class:"tok-propertyName tok-definition"},{tag:tags.typeName,class:"tok-typeName"},{tag:tags.namespace,class:"tok-namespace"},{tag:tags.className,class:"tok-className"},{tag:tags.macroName,class:"tok-macroName"},{tag:tags.propertyName,class:"tok-propertyName"},{tag:tags.operator,class:"tok-operator"},{tag:tags.comment,class:"tok-comment"},{tag:tags.meta,class:"tok-meta"},{tag:tags.invalid,class:"tok-invalid"},{tag:tags.punctuation,class:"tok-punctuation"}]);var _a;const languageDataProp=new NodeProp;function defineLanguageFacet(o){return Facet.define({combine:o?e=>e.concat(o):void 0})}class Language{constructor(e,s,a=[]){this.data=e,EditorState.prototype.hasOwnProperty("tree")||Object.defineProperty(EditorState.prototype,"tree",{get(){return syntaxTree(this)}}),this.parser=s,this.extension=[language.of(this),EditorState.languageData.of((c,h,d)=>c.facet(languageDataFacetAt(c,h,d)))].concat(a)}isActiveAt(e,s,a=-1){return languageDataFacetAt(e,s,a)==this.data}findRegions(e){let s=e.facet(language);if((s==null?void 0:s.data)==this.data)return[{from:0,to:e.doc.length}];if(!s||!s.allowsNesting)return[];let a=[],c=(h,d)=>{if(h.prop(languageDataProp)==this.data){a.push({from:d,to:d+h.length});return}let g=h.prop(NodeProp.mounted);if(g){if(g.tree.prop(languageDataProp)==this.data){if(g.overlay)for(let _ of g.overlay)a.push({from:_.from+d,to:_.to+d});else a.push({from:d,to:d+h.length});return}else if(g.overlay){let _=a.length;if(c(g.tree,g.overlay[0].from+d),a.length>_)return}}for(let _=0;_a.isTop?s:void 0)]}))}configure(e){return new LRLanguage(this.data,this.parser.configure(e))}get allowsNesting(){return this.parser.hasWrappers()}}function syntaxTree(o){let e=o.field(Language.state,!1);return e?e.tree:Tree.empty}class DocInput{constructor(e,s=e.length){this.doc=e,this.length=s,this.cursorPos=0,this.string="",this.cursor=e.iter()}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,s){let a=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,s):this.string.slice(e-a,s-a)}}let currentContext=null;class ParseContext{constructor(e,s,a=[],c,h,d,g,_){this.parser=e,this.state=s,this.fragments=a,this.tree=c,this.treeLen=h,this.viewport=d,this.skipped=g,this.scheduleOn=_,this.parse=null,this.tempSkipped=[]}static create(e,s,a){return new ParseContext(e,s,[],Tree.empty,0,a,[],null)}startParse(){return this.parser.startParse(new DocInput(this.state.doc),this.fragments)}work(e,s){return s!=null&&s>=this.state.doc.length&&(s=void 0),this.tree!=Tree.empty&&this.isDone(s!=null?s:this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var a;if(typeof e=="number"){let c=Date.now()+e;e=()=>Date.now()>c}for(this.parse||(this.parse=this.startParse()),s!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>s)&&s=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(s=this.parse.advance()););}),this.treeLen=e,this.tree=s,this.fragments=this.withoutTempSkipped(TreeFragment.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let s=currentContext;currentContext=this;try{return e()}finally{currentContext=s}}withoutTempSkipped(e){for(let s;s=this.tempSkipped.pop();)e=cutFragments(e,s.from,s.to);return e}changes(e,s){let{fragments:a,tree:c,treeLen:h,viewport:d,skipped:g}=this;if(this.takeTree(),!e.empty){let _=[];if(e.iterChangedRanges((b,$,j,_e)=>_.push({fromA:b,toA:$,fromB:j,toB:_e})),a=TreeFragment.applyChanges(a,_),c=Tree.empty,h=0,d={from:e.mapPos(d.from,-1),to:e.mapPos(d.to,1)},this.skipped.length){g=[];for(let b of this.skipped){let $=e.mapPos(b.from,1),j=e.mapPos(b.to,-1);$e.from&&(this.fragments=cutFragments(this.fragments,c,h),this.skipped.splice(a--,1))}return this.skipped.length>=s?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,s){this.skipped.push({from:e,to:s})}static getSkippingParser(e){return new class extends Parser{createParse(s,a,c){let h=c[0].from,d=c[c.length-1].to;return{parsedPos:h,advance(){let _=currentContext;if(_){for(let b of c)_.tempSkipped.push(b);e&&(_.scheduleOn=_.scheduleOn?Promise.all([_.scheduleOn,e]):e)}return this.parsedPos=d,new Tree(NodeType.none,[],[],d-h)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let s=this.fragments;return this.treeLen>=e&&s.length&&s[0].from==0&&s[0].to>=e}static get(){return currentContext}}function cutFragments(o,e,s){return TreeFragment.applyChanges(o,[{fromA:e,toA:s,fromB:e,toB:s}])}class LanguageState{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let s=this.context.changes(e.changes,e.state),a=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),s.viewport.to);return s.work(20,a)||s.takeTree(),new LanguageState(s)}static init(e){let s=Math.min(3e3,e.doc.length),a=ParseContext.create(e.facet(language).parser,e,{from:0,to:s});return a.work(20,s)||a.takeTree(),new LanguageState(a)}}Language.state=StateField.define({create:LanguageState.init,update(o,e){for(let s of e.effects)if(s.is(Language.setState))return s.value;return e.startState.facet(language)!=e.state.facet(language)?LanguageState.init(e.state):o.apply(e)}});let requestIdle=o=>{let e=setTimeout(()=>o(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(requestIdle=o=>{let e=-1,s=setTimeout(()=>{e=requestIdleCallback(o,{timeout:500-100})},100);return()=>e<0?clearTimeout(s):cancelIdleCallback(e)});const isInputPending=typeof navigator<"u"&&((_a=navigator.scheduling)===null||_a===void 0?void 0:_a.isInputPending)?()=>navigator.scheduling.isInputPending():null,parseWorker=ViewPlugin.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let s=this.view.state.field(Language.state).context;(s.updateViewport(e.view.viewport)||this.view.viewport.to>s.treeLen)&&this.scheduleWork(),e.docChanged&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(s)}scheduleWork(){if(this.working)return;let{state:e}=this.view,s=e.field(Language.state);(s.tree!=s.context.tree||!s.context.isDone(e.doc.length))&&(this.working=requestIdle(this.work))}work(e){this.working=null;let s=Date.now();if(this.chunkEndc+1e3,_=h.context.work(()=>isInputPending&&isInputPending()||Date.now()>d,c+(g?0:1e5));this.chunkBudget-=Date.now()-s,(_||this.chunkBudget<=0)&&(h.context.takeTree(),this.view.dispatch({effects:Language.setState.of(new LanguageState(h.context))})),this.chunkBudget>0&&!(_&&!g)&&this.scheduleWork(),this.checkAsyncSchedule(h.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(s=>logException(this.view.state,s)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),language=Facet.define({combine(o){return o.length?o[0]:null},enables:[Language.state,parseWorker]});class LanguageSupport{constructor(e,s=[]){this.language=e,this.support=s,this.extension=[e,s]}}const indentService=Facet.define(),indentUnit=Facet.define({combine:o=>{if(!o.length)return" ";if(!/^(?: +|\t+)$/.test(o[0]))throw new Error("Invalid indent unit: "+JSON.stringify(o[0]));return o[0]}});function getIndentUnit(o){let e=o.facet(indentUnit);return e.charCodeAt(0)==9?o.tabSize*e.length:e.length}function indentString(o,e){let s="",a=o.tabSize;if(o.facet(indentUnit).charCodeAt(0)==9)for(;e>=a;)s+=" ",e-=a;for(let c=0;c=a.from&&c<=a.to?h&&c==e?{text:"",from:e}:(s<0?c-1&&(h+=d-this.countColumn(a,a.search(/\S|$/))),h}countColumn(e,s=e.length){return countColumn(e,this.state.tabSize,s)}lineIndent(e,s=1){let{text:a,from:c}=this.lineAt(e,s),h=this.options.overrideIndentation;if(h){let d=h(c);if(d>-1)return d}return this.countColumn(a,a.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const indentNodeProp=new NodeProp;function syntaxIndentation(o,e,s){return indentFrom(e.resolveInner(s).enterUnfinishedNodesBefore(s),s,o)}function ignoreClosed(o){return o.pos==o.options.simulateBreak&&o.options.simulateDoubleBreak}function indentStrategy(o){let e=o.type.prop(indentNodeProp);if(e)return e;let s=o.firstChild,a;if(s&&(a=s.type.prop(NodeProp.closedBy))){let c=o.lastChild,h=c&&a.indexOf(c.name)>-1;return d=>delimitedStrategy(d,!0,1,void 0,h&&!ignoreClosed(d)?c.from:void 0)}return o.parent==null?topIndent:null}function indentFrom(o,e,s){for(;o;o=o.parent){let a=indentStrategy(o);if(a)return a(TreeIndentContext.create(s,e,o))}return null}function topIndent(){return 0}class TreeIndentContext extends IndentContext{constructor(e,s,a){super(e.state,e.options),this.base=e,this.pos=s,this.node=a}static create(e,s,a){return new TreeIndentContext(e,s,a)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){let e=this.state.doc.lineAt(this.node.from);for(;;){let s=this.node.resolve(e.from);for(;s.parent&&s.parent.from==s.from;)s=s.parent;if(isParent(s,this.node))break;e=this.state.doc.lineAt(s.from)}return this.lineIndent(e.from)}continue(){let e=this.node.parent;return e?indentFrom(e,this.pos,this.base):0}}function isParent(o,e){for(let s=e;s;s=s.parent)if(o==s)return!0;return!1}function bracketedAligned(o){let e=o.node,s=e.childAfter(e.from),a=e.lastChild;if(!s)return null;let c=o.options.simulateBreak,h=o.state.doc.lineAt(s.from),d=c==null||c<=h.from?h.to:Math.min(h.to,c);for(let g=s.to;;){let _=e.childAfter(g);if(!_||_==a)return null;if(!_.type.isSkipped)return _.fromdelimitedStrategy(a,e,s,o)}function delimitedStrategy(o,e,s,a,c){let h=o.textAfter,d=h.match(/^\s*/)[0].length,g=a&&h.slice(d,d+a.length)==a||c==o.pos+d,_=e?bracketedAligned(o):null;return _?g?o.column(_.from):o.column(_.to):o.baseIndent+(g?0:o.unit*s)}const flatIndent=o=>o.baseIndent;function continuedIndent({except:o,units:e=1}={}){return s=>{let a=o&&o.test(s.textAfter);return s.baseIndent+(a?0:e*s.unit)}}const DontIndentBeyond=200;function indentOnInput(){return EditorState.transactionFilter.of(o=>{if(!o.docChanged||!o.isUserEvent("input.type")&&!o.isUserEvent("input.complete"))return o;let e=o.startState.languageDataAt("indentOnInput",o.startState.selection.main.head);if(!e.length)return o;let s=o.newDoc,{head:a}=o.newSelection.main,c=s.lineAt(a);if(a>c.from+DontIndentBeyond)return o;let h=s.sliceString(c.from,a);if(!e.some(b=>b.test(h)))return o;let{state:d}=o,g=-1,_=[];for(let{head:b}of d.selection.ranges){let $=d.doc.lineAt(b);if($.from==g)continue;g=$.from;let j=getIndentation(d,$.from);if(j==null)continue;let _e=/^\s*/.exec($.text)[0],et=indentString(d,j);_e!=et&&_.push({from:$.from,to:$.from+_e.length,insert:et})}return _.length?[o,{changes:_,sequential:!0}]:o})}const foldService=Facet.define(),foldNodeProp=new NodeProp;function foldInside(o){let e=o.firstChild,s=o.lastChild;return e&&e.tos)continue;if(h&&d.from=e&&_.to>s&&(h=_)}}return h}function isUnfinished(o){let e=o.lastChild;return e&&e.to==o.to&&e.type.isError}function foldable(o,e,s){for(let a of o.facet(foldService)){let c=a(o,e,s);if(c)return c}return syntaxFolding(o,e,s)}function mapRange(o,e){let s=e.mapPos(o.from,1),a=e.mapPos(o.to,-1);return s>=a?void 0:{from:s,to:a}}const foldEffect=StateEffect.define({map:mapRange}),unfoldEffect=StateEffect.define({map:mapRange});function selectedLines(o){let e=[];for(let{head:s}of o.state.selection.ranges)e.some(a=>a.from<=s&&a.to>=s)||e.push(o.lineBlockAt(s));return e}const foldState=StateField.define({create(){return Decoration.none},update(o,e){o=o.map(e.changes);for(let s of e.effects)s.is(foldEffect)&&!foldExists(o,s.value.from,s.value.to)?o=o.update({add:[foldWidget.range(s.value.from,s.value.to)]}):s.is(unfoldEffect)&&(o=o.update({filter:(a,c)=>s.value.from!=a||s.value.to!=c,filterFrom:s.value.from,filterTo:s.value.to}));if(e.selection){let s=!1,{head:a}=e.selection.main;o.between(a,a,(c,h)=>{ca&&(s=!0)}),s&&(o=o.update({filterFrom:a,filterTo:a,filter:(c,h)=>h<=a||c>=a}))}return o},provide:o=>EditorView.decorations.from(o),toJSON(o,e){let s=[];return o.between(0,e.doc.length,(a,c)=>{s.push(a,c)}),s},fromJSON(o){if(!Array.isArray(o)||o.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let s=0;s{(!c||c.from>h)&&(c={from:h,to:d})}),c}function foldExists(o,e,s){let a=!1;return o.between(e,e,(c,h)=>{c==e&&h==s&&(a=!0)}),a}function maybeEnable(o,e){return o.field(foldState,!1)?e:e.concat(StateEffect.appendConfig.of(codeFolding()))}const foldCode=o=>{for(let e of selectedLines(o)){let s=foldable(o.state,e.from,e.to);if(s)return o.dispatch({effects:maybeEnable(o.state,[foldEffect.of(s),announceFold(o,s)])}),!0}return!1},unfoldCode=o=>{if(!o.state.field(foldState,!1))return!1;let e=[];for(let s of selectedLines(o)){let a=findFold(o.state,s.from,s.to);a&&e.push(unfoldEffect.of(a),announceFold(o,a,!1))}return e.length&&o.dispatch({effects:e}),e.length>0};function announceFold(o,e,s=!0){let a=o.state.doc.lineAt(e.from).number,c=o.state.doc.lineAt(e.to).number;return EditorView.announce.of(`${o.state.phrase(s?"Folded lines":"Unfolded lines")} ${a} ${o.state.phrase("to")} ${c}.`)}const foldAll=o=>{let{state:e}=o,s=[];for(let a=0;a{let e=o.state.field(foldState,!1);if(!e||!e.size)return!1;let s=[];return e.between(0,o.state.doc.length,(a,c)=>{s.push(unfoldEffect.of({from:a,to:c}))}),o.dispatch({effects:s}),!0},foldKeymap=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:foldCode},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:unfoldCode},{key:"Ctrl-Alt-[",run:foldAll},{key:"Ctrl-Alt-]",run:unfoldAll}],defaultConfig={placeholderDOM:null,placeholderText:"\u2026"},foldConfig=Facet.define({combine(o){return combineConfig(o,defaultConfig)}});function codeFolding(o){let e=[foldState,baseTheme$1$2];return o&&e.push(foldConfig.of(o)),e}const foldWidget=Decoration.replace({widget:new class extends WidgetType{toDOM(o){let{state:e}=o,s=e.facet(foldConfig),a=h=>{let d=o.lineBlockAt(o.posAtDOM(h.target)),g=findFold(o.state,d.from,d.to);g&&o.dispatch({effects:unfoldEffect.of(g)}),h.preventDefault()};if(s.placeholderDOM)return s.placeholderDOM(o,a);let c=document.createElement("span");return c.textContent=s.placeholderText,c.setAttribute("aria-label",e.phrase("folded code")),c.title=e.phrase("unfold"),c.className="cm-foldPlaceholder",c.onclick=a,c}}}),foldGutterDefaults={openText:"\u2304",closedText:"\u203A",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class FoldMarker extends GutterMarker{constructor(e,s){super(),this.config=e,this.open=s}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let s=document.createElement("span");return s.textContent=this.open?this.config.openText:this.config.closedText,s.title=e.state.phrase(this.open?"Fold line":"Unfold line"),s}}function foldGutter(o={}){let e=Object.assign(Object.assign({},foldGutterDefaults),o),s=new FoldMarker(e,!0),a=new FoldMarker(e,!1),c=ViewPlugin.fromClass(class{constructor(d){this.from=d.viewport.from,this.markers=this.buildMarkers(d)}update(d){(d.docChanged||d.viewportChanged||d.startState.facet(language)!=d.state.facet(language)||d.startState.field(foldState,!1)!=d.state.field(foldState,!1)||syntaxTree(d.startState)!=syntaxTree(d.state)||e.foldingChanged(d))&&(this.markers=this.buildMarkers(d.view))}buildMarkers(d){let g=new RangeSetBuilder;for(let _ of d.viewportLineBlocks){let b=findFold(d.state,_.from,_.to)?a:foldable(d.state,_.from,_.to)?s:null;b&&g.add(_.from,_.from,b)}return g.finish()}}),{domEventHandlers:h}=e;return[c,gutter({class:"cm-foldGutter",markers(d){var g;return((g=d.plugin(c))===null||g===void 0?void 0:g.markers)||RangeSet.empty},initialSpacer(){return new FoldMarker(e,!1)},domEventHandlers:Object.assign(Object.assign({},h),{click:(d,g,_)=>{if(h.click&&h.click(d,g,_))return!0;let b=findFold(d.state,g.from,g.to);if(b)return d.dispatch({effects:unfoldEffect.of(b)}),!0;let $=foldable(d.state,g.from,g.to);return $?(d.dispatch({effects:foldEffect.of($)}),!0):!1}})}),codeFolding()]}const baseTheme$1$2=EditorView.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class HighlightStyle{constructor(e,s){let a;function c(g){let _=StyleModule.newName();return(a||(a=Object.create(null)))["."+_]=g,_}const h=typeof s.all=="string"?s.all:s.all?c(s.all):void 0,d=s.scope;this.scope=d instanceof Language?g=>g.prop(languageDataProp)==d.data:d?g=>g==d:void 0,this.style=tagHighlighter(e.map(g=>({tag:g.tag,class:g.class||c(Object.assign({},g,{tag:null}))})),{all:h}).style,this.module=a?new StyleModule(a):null,this.themeType=s.themeType}static define(e,s){return new HighlightStyle(e,s||{})}}const highlighterFacet=Facet.define(),fallbackHighlighter=Facet.define({combine(o){return o.length?[o[0]]:null}});function getHighlighters(o){let e=o.facet(highlighterFacet);return e.length?e:o.facet(fallbackHighlighter)}function syntaxHighlighting(o,e){let s=[treeHighlighter],a;return o instanceof HighlightStyle&&(o.module&&s.push(EditorView.styleModule.of(o.module)),a=o.themeType),e!=null&&e.fallback?s.push(fallbackHighlighter.of(o)):a?s.push(highlighterFacet.computeN([EditorView.darkTheme],c=>c.facet(EditorView.darkTheme)==(a=="dark")?[o]:[])):s.push(highlighterFacet.of(o)),s}class TreeHighlighter{constructor(e){this.markCache=Object.create(null),this.tree=syntaxTree(e.state),this.decorations=this.buildDeco(e,getHighlighters(e.state))}update(e){let s=syntaxTree(e.state),a=getHighlighters(e.state),c=a!=getHighlighters(e.startState);s.length{a.add(d,g,this.markCache[_]||(this.markCache[_]=Decoration.mark({class:_})))},c,h);return a.finish()}}const treeHighlighter=Prec.high(ViewPlugin.fromClass(TreeHighlighter,{decorations:o=>o.decorations})),defaultHighlightStyle=HighlightStyle.define([{tag:tags.meta,color:"#7a757a"},{tag:tags.link,textDecoration:"underline"},{tag:tags.heading,textDecoration:"underline",fontWeight:"bold"},{tag:tags.emphasis,fontStyle:"italic"},{tag:tags.strong,fontWeight:"bold"},{tag:tags.strikethrough,textDecoration:"line-through"},{tag:tags.keyword,color:"#708"},{tag:[tags.atom,tags.bool,tags.url,tags.contentSeparator,tags.labelName],color:"#219"},{tag:[tags.literal,tags.inserted],color:"#164"},{tag:[tags.string,tags.deleted],color:"#a11"},{tag:[tags.regexp,tags.escape,tags.special(tags.string)],color:"#e40"},{tag:tags.definition(tags.variableName),color:"#00f"},{tag:tags.local(tags.variableName),color:"#30a"},{tag:[tags.typeName,tags.namespace],color:"#085"},{tag:tags.className,color:"#167"},{tag:[tags.special(tags.variableName),tags.macroName],color:"#256"},{tag:tags.definition(tags.propertyName),color:"#00c"},{tag:tags.comment,color:"#940"},{tag:tags.invalid,color:"#f00"}]),baseTheme$3=EditorView.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),DefaultScanDist=1e4,DefaultBrackets="()[]{}",bracketMatchingConfig=Facet.define({combine(o){return combineConfig(o,{afterCursor:!0,brackets:DefaultBrackets,maxScanDistance:DefaultScanDist,renderMatch:defaultRenderMatch})}}),matchingMark=Decoration.mark({class:"cm-matchingBracket"}),nonmatchingMark=Decoration.mark({class:"cm-nonmatchingBracket"});function defaultRenderMatch(o){let e=[],s=o.matched?matchingMark:nonmatchingMark;return e.push(s.range(o.start.from,o.start.to)),o.end&&e.push(s.range(o.end.from,o.end.to)),e}const bracketMatchingState=StateField.define({create(){return Decoration.none},update(o,e){if(!e.docChanged&&!e.selection)return o;let s=[],a=e.state.facet(bracketMatchingConfig);for(let c of e.state.selection.ranges){if(!c.empty)continue;let h=matchBrackets(e.state,c.head,-1,a)||c.head>0&&matchBrackets(e.state,c.head-1,1,a)||a.afterCursor&&(matchBrackets(e.state,c.head,1,a)||c.headEditorView.decorations.from(o)}),bracketMatchingUnique=[bracketMatchingState,baseTheme$3];function bracketMatching(o={}){return[bracketMatchingConfig.of(o),bracketMatchingUnique]}function matchingNodes(o,e,s){let a=o.prop(e<0?NodeProp.openedBy:NodeProp.closedBy);if(a)return a;if(o.name.length==1){let c=s.indexOf(o.name);if(c>-1&&c%2==(e<0?1:0))return[s[c+e]]}return null}function matchBrackets(o,e,s,a={}){let c=a.maxScanDistance||DefaultScanDist,h=a.brackets||DefaultBrackets,d=syntaxTree(o),g=d.resolveInner(e,s);for(let _=g;_;_=_.parent){let b=matchingNodes(_.type,s,h);if(b&&_.from<_.to)return matchMarkedBrackets(o,e,s,_,b,h)}return matchPlainBrackets(o,e,s,d,g.type,c,h)}function matchMarkedBrackets(o,e,s,a,c,h){let d=a.parent,g={from:a.from,to:a.to},_=0,b=d==null?void 0:d.cursor();if(b&&(s<0?b.childBefore(a.from):b.childAfter(a.to)))do if(s<0?b.to<=a.from:b.from>=a.to){if(_==0&&c.indexOf(b.type.name)>-1&&b.from0)return null;let b={from:s<0?e-1:e,to:s>0?e+1:e},$=o.doc.iterRange(e,s>0?o.doc.length:0),j=0;for(let _e=0;!$.next().done&&_e<=h;){let et=$.value;s<0&&(_e+=et.length);let tt=e+_e*s;for(let nt=s>0?0:et.length-1,st=s>0?et.length:-1;nt!=st;nt+=s){let rt=d.indexOf(et[nt]);if(!(rt<0||a.resolveInner(tt+nt,1).type!=c))if(rt%2==0==s>0)j++;else{if(j==1)return{start:b,end:{from:tt+nt,to:tt+nt+1},matched:rt>>1==_>>1};j--}}s>0&&(_e+=et.length)}return $.done?{start:b,matched:!1}:null}const noTokens=Object.create(null),typeArray=[NodeType.none],warned=[],defaultTable=Object.create(null);for(let[o,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])defaultTable[o]=createTokenType(noTokens,e);function warnForPart(o,e){warned.indexOf(o)>-1||(warned.push(o),console.warn(e))}function createTokenType(o,e){let s=null;for(let h of e.split(".")){let d=o[h]||tags[h];d?typeof d=="function"?s?s=d(s):warnForPart(h,`Modifier ${h} used at start of tag`):s?warnForPart(h,`Tag ${h} used as modifier`):s=d:warnForPart(h,`Unknown highlighting tag ${h}`)}if(!s)return 0;let a=e.replace(/ /g,"_"),c=NodeType.define({id:typeArray.length,name:a,props:[styleTags({[a]:s})]});return typeArray.push(c),c.id}const toggleComment=o=>{let e=getConfig(o.state);return e.line?toggleLineComment(o):e.block?toggleBlockCommentByLine(o):!1};function command(o,e){return({state:s,dispatch:a})=>{if(s.readOnly)return!1;let c=o(e,s);return c?(a(s.update(c)),!0):!1}}const toggleLineComment=command(changeLineComment,0),toggleBlockComment=command(changeBlockComment,0),toggleBlockCommentByLine=command((o,e)=>changeBlockComment(o,e,selectedLineRanges(e)),0);function getConfig(o,e=o.selection.main.head){let s=o.languageDataAt("commentTokens",e);return s.length?s[0]:{}}const SearchMargin=50;function findBlockComment(o,{open:e,close:s},a,c){let h=o.sliceDoc(a-SearchMargin,a),d=o.sliceDoc(c,c+SearchMargin),g=/\s*$/.exec(h)[0].length,_=/^\s*/.exec(d)[0].length,b=h.length-g;if(h.slice(b-e.length,b)==e&&d.slice(_,_+s.length)==s)return{open:{pos:a-g,margin:g&&1},close:{pos:c+_,margin:_&&1}};let $,j;c-a<=2*SearchMargin?$=j=o.sliceDoc(a,c):($=o.sliceDoc(a,a+SearchMargin),j=o.sliceDoc(c-SearchMargin,c));let _e=/^\s*/.exec($)[0].length,et=/\s*$/.exec(j)[0].length,tt=j.length-et-s.length;return $.slice(_e,_e+e.length)==e&&j.slice(tt,tt+s.length)==s?{open:{pos:a+_e+e.length,margin:/\s/.test($.charAt(_e+e.length))?1:0},close:{pos:c-et-s.length,margin:/\s/.test(j.charAt(tt-1))?1:0}}:null}function selectedLineRanges(o){let e=[];for(let s of o.selection.ranges){let a=o.doc.lineAt(s.from),c=s.to<=a.to?a:o.doc.lineAt(s.to),h=e.length-1;h>=0&&e[h].to>a.from?e[h].to=c.to:e.push({from:a.from,to:c.to})}return e}function changeBlockComment(o,e,s=e.selection.ranges){let a=s.map(h=>getConfig(e,h.from).block);if(!a.every(h=>h))return null;let c=s.map((h,d)=>findBlockComment(e,a[d],h.from,h.to));if(o!=2&&!c.every(h=>h))return{changes:e.changes(s.map((h,d)=>c[d]?[]:[{from:h.from,insert:a[d].open+" "},{from:h.to,insert:" "+a[d].close}]))};if(o!=1&&c.some(h=>h)){let h=[];for(let d=0,g;dc&&(h==d||d>$.from)){c=$.from;let j=getConfig(e,b).line;if(!j)continue;let _e=/^\s*/.exec($.text)[0].length,et=_e==$.length,tt=$.text.slice(_e,_e+j.length)==j?_e:-1;_e<$.text.length&&_e<_&&(_=_e),a.push({line:$,comment:tt,token:j,indent:_e,empty:et,single:!1})}b=$.to+1}if(_<1e9)for(let b=g;bh.comment<0&&(!h.empty||h.single))){let h=[];for(let{line:g,token:_,indent:b,empty:$,single:j}of a)(j||!$)&&h.push({from:g.from+b,insert:_+" "});let d=e.changes(h);return{changes:d,selection:e.selection.map(d,1)}}else if(o!=1&&a.some(h=>h.comment>=0)){let h=[];for(let{line:d,comment:g,token:_}of a)if(g>=0){let b=d.from+g,$=b+_.length;d.text[$-d.from]==" "&&$++,h.push({from:b,to:$})}return{changes:h}}return null}const fromHistory=Annotation.define(),isolateHistory=Annotation.define(),invertedEffects=Facet.define(),historyConfig=Facet.define({combine(o){return combineConfig(o,{minDepth:100,newGroupDelay:500},{minDepth:Math.max,newGroupDelay:Math.min})}});function changeEnd(o){let e=0;return o.iterChangedRanges((s,a)=>e=a),e}const historyField_=StateField.define({create(){return HistoryState.empty},update(o,e){let s=e.state.facet(historyConfig),a=e.annotation(fromHistory);if(a){let _=e.docChanged?EditorSelection.single(changeEnd(e.changes)):void 0,b=HistEvent.fromTransaction(e,_),$=a.side,j=$==0?o.undone:o.done;return b?j=updateBranch(j,j.length,s.minDepth,b):j=addSelection(j,e.startState.selection),new HistoryState($==0?a.rest:j,$==0?j:a.rest)}let c=e.annotation(isolateHistory);if((c=="full"||c=="before")&&(o=o.isolate()),e.annotation(Transaction.addToHistory)===!1)return e.changes.empty?o:o.addMapping(e.changes.desc);let h=HistEvent.fromTransaction(e),d=e.annotation(Transaction.time),g=e.annotation(Transaction.userEvent);return h?o=o.addChanges(h,d,g,s.newGroupDelay,s.minDepth):e.selection&&(o=o.addSelection(e.startState.selection,d,g,s.newGroupDelay)),(c=="full"||c=="after")&&(o=o.isolate()),o},toJSON(o){return{done:o.done.map(e=>e.toJSON()),undone:o.undone.map(e=>e.toJSON())}},fromJSON(o){return new HistoryState(o.done.map(HistEvent.fromJSON),o.undone.map(HistEvent.fromJSON))}});function history(o={}){return[historyField_,historyConfig.of(o),EditorView.domEventHandlers({beforeinput(e,s){let a=e.inputType=="historyUndo"?undo:e.inputType=="historyRedo"?redo:null;return a?(e.preventDefault(),a(s)):!1}})]}function cmd(o,e){return function({state:s,dispatch:a}){if(!e&&s.readOnly)return!1;let c=s.field(historyField_,!1);if(!c)return!1;let h=c.pop(o,s,e);return h?(a(h),!0):!1}}const undo=cmd(0,!1),redo=cmd(1,!1),undoSelection=cmd(0,!0),redoSelection=cmd(1,!0);class HistEvent{constructor(e,s,a,c,h){this.changes=e,this.effects=s,this.mapped=a,this.startSelection=c,this.selectionsAfter=h}setSelAfter(e){return new HistEvent(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,s,a;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(s=this.mapped)===null||s===void 0?void 0:s.toJSON(),startSelection:(a=this.startSelection)===null||a===void 0?void 0:a.toJSON(),selectionsAfter:this.selectionsAfter.map(c=>c.toJSON())}}static fromJSON(e){return new HistEvent(e.changes&&ChangeSet.fromJSON(e.changes),[],e.mapped&&ChangeDesc.fromJSON(e.mapped),e.startSelection&&EditorSelection.fromJSON(e.startSelection),e.selectionsAfter.map(EditorSelection.fromJSON))}static fromTransaction(e,s){let a=none$1;for(let c of e.startState.facet(invertedEffects)){let h=c(e);h.length&&(a=a.concat(h))}return!a.length&&e.changes.empty?null:new HistEvent(e.changes.invert(e.startState.doc),a,void 0,s||e.startState.selection,none$1)}static selection(e){return new HistEvent(void 0,none$1,void 0,void 0,e)}}function updateBranch(o,e,s,a){let c=e+1>s+20?e-s-1:0,h=o.slice(c,e);return h.push(a),h}function isAdjacent(o,e){let s=[],a=!1;return o.iterChangedRanges((c,h)=>s.push(c,h)),e.iterChangedRanges((c,h,d,g)=>{for(let _=0;_=b&&d<=$&&(a=!0)}}),a}function eqSelectionShape(o,e){return o.ranges.length==e.ranges.length&&o.ranges.filter((s,a)=>s.empty!=e.ranges[a].empty).length===0}function conc(o,e){return o.length?e.length?o.concat(e):o:e}const none$1=[],MaxSelectionsPerEvent=200;function addSelection(o,e){if(o.length){let s=o[o.length-1],a=s.selectionsAfter.slice(Math.max(0,s.selectionsAfter.length-MaxSelectionsPerEvent));return a.length&&a[a.length-1].eq(e)?o:(a.push(e),updateBranch(o,o.length-1,1e9,s.setSelAfter(a)))}else return[HistEvent.selection([e])]}function popSelection(o){let e=o[o.length-1],s=o.slice();return s[o.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),s}function addMappingToBranch(o,e){if(!o.length)return o;let s=o.length,a=none$1;for(;s;){let c=mapEvent(o[s-1],e,a);if(c.changes&&!c.changes.empty||c.effects.length){let h=o.slice(0,s);return h[s-1]=c,h}else e=c.mapped,s--,a=c.selectionsAfter}return a.length?[HistEvent.selection(a)]:none$1}function mapEvent(o,e,s){let a=conc(o.selectionsAfter.length?o.selectionsAfter.map(g=>g.map(e)):none$1,s);if(!o.changes)return HistEvent.selection(a);let c=o.changes.map(e),h=e.mapDesc(o.changes,!0),d=o.mapped?o.mapped.composeDesc(h):h;return new HistEvent(c,StateEffect.mapEffects(o.effects,e),d,o.startSelection.map(h),a)}const joinableUserEvent=/^(input\.type|delete)($|\.)/;class HistoryState{constructor(e,s,a=0,c=void 0){this.done=e,this.undone=s,this.prevTime=a,this.prevUserEvent=c}isolate(){return this.prevTime?new HistoryState(this.done,this.undone):this}addChanges(e,s,a,c,h){let d=this.done,g=d[d.length-1];return g&&g.changes&&!g.changes.empty&&e.changes&&(!a||joinableUserEvent.test(a))&&(!g.selectionsAfter.length&&s-this.prevTime0&&s-this.prevTimes.empty?o.moveByChar(s,e):rangeEnd(s,e))}function ltrAtCursor(o){return o.textDirectionAt(o.state.selection.main.head)==Direction.LTR}const cursorCharLeft=o=>cursorByChar(o,!ltrAtCursor(o)),cursorCharRight=o=>cursorByChar(o,ltrAtCursor(o));function cursorByGroup(o,e){return moveSel(o,s=>s.empty?o.moveByGroup(s,e):rangeEnd(s,e))}const cursorGroupLeft=o=>cursorByGroup(o,!ltrAtCursor(o)),cursorGroupRight=o=>cursorByGroup(o,ltrAtCursor(o));function interestingNode(o,e,s){if(e.type.prop(s))return!0;let a=e.to-e.from;return a&&(a>2||/[^\s,.;:]/.test(o.sliceDoc(e.from,e.to)))||e.firstChild}function moveBySyntax(o,e,s){let a=syntaxTree(o).resolveInner(e.head),c=s?NodeProp.closedBy:NodeProp.openedBy;for(let _=e.head;;){let b=s?a.childAfter(_):a.childBefore(_);if(!b)break;interestingNode(o,b,c)?a=b:_=s?b.to:b.from}let h=a.type.prop(c),d,g;return h&&(d=s?matchBrackets(o,a.from,1):matchBrackets(o,a.to,-1))&&d.matched?g=s?d.end.to:d.end.from:g=s?a.to:a.from,EditorSelection.cursor(g,s?-1:1)}const cursorSyntaxLeft=o=>moveSel(o,e=>moveBySyntax(o.state,e,!ltrAtCursor(o))),cursorSyntaxRight=o=>moveSel(o,e=>moveBySyntax(o.state,e,ltrAtCursor(o)));function cursorByLine(o,e){return moveSel(o,s=>{if(!s.empty)return rangeEnd(s,e);let a=o.moveVertically(s,e);return a.head!=s.head?a:o.moveToLineBoundary(s,e)})}const cursorLineUp=o=>cursorByLine(o,!1),cursorLineDown=o=>cursorByLine(o,!0);function pageHeight(o){return Math.max(o.defaultLineHeight,Math.min(o.dom.clientHeight,innerHeight)-5)}function cursorByPage(o,e){let{state:s}=o,a=updateSel(s.selection,g=>g.empty?o.moveVertically(g,e,pageHeight(o)):rangeEnd(g,e));if(a.eq(s.selection))return!1;let c=o.coordsAtPos(s.selection.main.head),h=o.scrollDOM.getBoundingClientRect(),d;return c&&c.top>h.top&&c.bottomcursorByPage(o,!1),cursorPageDown=o=>cursorByPage(o,!0);function moveByLineBoundary(o,e,s){let a=o.lineBlockAt(e.head),c=o.moveToLineBoundary(e,s);if(c.head==e.head&&c.head!=(s?a.to:a.from)&&(c=o.moveToLineBoundary(e,s,!1)),!s&&c.head==a.from&&a.length){let h=/^\s*/.exec(o.state.sliceDoc(a.from,Math.min(a.from+100,a.to)))[0].length;h&&e.head!=a.from+h&&(c=EditorSelection.cursor(a.from+h))}return c}const cursorLineBoundaryForward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!0)),cursorLineBoundaryBackward=o=>moveSel(o,e=>moveByLineBoundary(o,e,!1)),cursorLineStart=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from,1)),cursorLineEnd=o=>moveSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to,-1));function toMatchingBracket(o,e,s){let a=!1,c=updateSel(o.selection,h=>{let d=matchBrackets(o,h.head,-1)||matchBrackets(o,h.head,1)||h.head>0&&matchBrackets(o,h.head-1,1)||h.headtoMatchingBracket(o,e,!1);function extendSel(o,e){let s=updateSel(o.state.selection,a=>{let c=e(a);return EditorSelection.range(a.anchor,c.head,c.goalColumn)});return s.eq(o.state.selection)?!1:(o.dispatch(setSel(o.state,s)),!0)}function selectByChar(o,e){return extendSel(o,s=>o.moveByChar(s,e))}const selectCharLeft=o=>selectByChar(o,!ltrAtCursor(o)),selectCharRight=o=>selectByChar(o,ltrAtCursor(o));function selectByGroup(o,e){return extendSel(o,s=>o.moveByGroup(s,e))}const selectGroupLeft=o=>selectByGroup(o,!ltrAtCursor(o)),selectGroupRight=o=>selectByGroup(o,ltrAtCursor(o)),selectSyntaxLeft=o=>extendSel(o,e=>moveBySyntax(o.state,e,!ltrAtCursor(o))),selectSyntaxRight=o=>extendSel(o,e=>moveBySyntax(o.state,e,ltrAtCursor(o)));function selectByLine(o,e){return extendSel(o,s=>o.moveVertically(s,e))}const selectLineUp=o=>selectByLine(o,!1),selectLineDown=o=>selectByLine(o,!0);function selectByPage(o,e){return extendSel(o,s=>o.moveVertically(s,e,pageHeight(o)))}const selectPageUp=o=>selectByPage(o,!1),selectPageDown=o=>selectByPage(o,!0),selectLineBoundaryForward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!0)),selectLineBoundaryBackward=o=>extendSel(o,e=>moveByLineBoundary(o,e,!1)),selectLineStart=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).from)),selectLineEnd=o=>extendSel(o,e=>EditorSelection.cursor(o.lineBlockAt(e.head).to)),cursorDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:0})),!0),cursorDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.doc.length})),!0),selectDocStart=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:0})),!0),selectDocEnd=({state:o,dispatch:e})=>(e(setSel(o,{anchor:o.selection.main.anchor,head:o.doc.length})),!0),selectAll=({state:o,dispatch:e})=>(e(o.update({selection:{anchor:0,head:o.doc.length},userEvent:"select"})),!0),selectLine=({state:o,dispatch:e})=>{let s=selectedLineBlocks(o).map(({from:a,to:c})=>EditorSelection.range(a,Math.min(c+1,o.doc.length)));return e(o.update({selection:EditorSelection.create(s),userEvent:"select"})),!0},selectParentSyntax=({state:o,dispatch:e})=>{let s=updateSel(o.selection,a=>{var c;let h=syntaxTree(o).resolveInner(a.head,1);for(;!(h.from=a.to||h.to>a.to&&h.from<=a.from||!(!((c=h.parent)===null||c===void 0)&&c.parent));)h=h.parent;return EditorSelection.range(h.to,h.from)});return e(setSel(o,s)),!0},simplifySelection=({state:o,dispatch:e})=>{let s=o.selection,a=null;return s.ranges.length>1?a=EditorSelection.create([s.main]):s.main.empty||(a=EditorSelection.create([EditorSelection.cursor(s.main.head)])),a?(e(setSel(o,a)),!0):!1};function deleteBy({state:o,dispatch:e},s){if(o.readOnly)return!1;let a="delete.selection",c=o.changeByRange(h=>{let{from:d,to:g}=h;if(d==g){let _=s(d);_d&&(a="delete.forward"),d=Math.min(d,_),g=Math.max(g,_)}return d==g?{range:h}:{changes:{from:d,to:g},range:EditorSelection.cursor(d)}});return c.changes.empty?!1:(e(o.update(c,{scrollIntoView:!0,userEvent:a,effects:a=="delete.selection"?EditorView.announce.of(o.phrase("Selection deleted")):void 0})),!0)}function skipAtomic(o,e,s){if(o instanceof EditorView)for(let a of o.state.facet(EditorView.atomicRanges).map(c=>c(o)))a.between(e,e,(c,h)=>{ce&&(e=s?h:c)});return e}const deleteByChar=(o,e)=>deleteBy(o,s=>{let{state:a}=o,c=a.doc.lineAt(s),h,d;if(!e&&s>c.from&&sdeleteByChar(o,!1),deleteCharForward=o=>deleteByChar(o,!0),deleteByGroup=(o,e)=>deleteBy(o,s=>{let a=s,{state:c}=o,h=c.doc.lineAt(a),d=c.charCategorizer(a);for(let g=null;;){if(a==(e?h.to:h.from)){a==s&&h.number!=(e?c.doc.lines:1)&&(a+=e?1:-1);break}let _=findClusterBreak(h.text,a-h.from,e)+h.from,b=h.text.slice(Math.min(a,_)-h.from,Math.max(a,_)-h.from),$=d(b);if(g!=null&&$!=g)break;(b!=" "||a!=s)&&(g=$),a=_}return skipAtomic(o,a,e)}),deleteGroupBackward=o=>deleteByGroup(o,!1),deleteGroupForward=o=>deleteByGroup(o,!0),deleteToLineEnd=o=>deleteBy(o,e=>{let s=o.lineBlockAt(e).to;return skipAtomic(o,edeleteBy(o,e=>{let s=o.lineBlockAt(e).from;return skipAtomic(o,e>s?s:Math.max(0,e-1),!1)}),splitLine=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>({changes:{from:a.from,to:a.to,insert:Text.of(["",""])},range:EditorSelection.cursor(a.from)}));return e(o.update(s,{scrollIntoView:!0,userEvent:"input"})),!0},transposeChars=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=o.changeByRange(a=>{if(!a.empty||a.from==0||a.from==o.doc.length)return{range:a};let c=a.from,h=o.doc.lineAt(c),d=c==h.from?c-1:findClusterBreak(h.text,c-h.from,!1)+h.from,g=c==h.to?c+1:findClusterBreak(h.text,c-h.from,!0)+h.from;return{changes:{from:d,to:g,insert:o.doc.slice(c,g).append(o.doc.slice(d,c))},range:EditorSelection.cursor(g)}});return s.changes.empty?!1:(e(o.update(s,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function selectedLineBlocks(o){let e=[],s=-1;for(let a of o.selection.ranges){let c=o.doc.lineAt(a.from),h=o.doc.lineAt(a.to);if(!a.empty&&a.to==h.from&&(h=o.doc.lineAt(a.to-1)),s>=c.number){let d=e[e.length-1];d.to=h.to,d.ranges.push(a)}else e.push({from:c.from,to:h.to,ranges:[a]});s=h.number+1}return e}function moveLine(o,e,s){if(o.readOnly)return!1;let a=[],c=[];for(let h of selectedLineBlocks(o)){if(s?h.to==o.doc.length:h.from==0)continue;let d=o.doc.lineAt(s?h.to+1:h.from-1),g=d.length+1;if(s){a.push({from:h.to,to:d.to},{from:h.from,insert:d.text+o.lineBreak});for(let _ of h.ranges)c.push(EditorSelection.range(Math.min(o.doc.length,_.anchor+g),Math.min(o.doc.length,_.head+g)))}else{a.push({from:d.from,to:h.from},{from:h.to,insert:o.lineBreak+d.text});for(let _ of h.ranges)c.push(EditorSelection.range(_.anchor-g,_.head-g))}}return a.length?(e(o.update({changes:a,scrollIntoView:!0,selection:EditorSelection.create(c,o.selection.mainIndex),userEvent:"move.line"})),!0):!1}const moveLineUp=({state:o,dispatch:e})=>moveLine(o,e,!1),moveLineDown=({state:o,dispatch:e})=>moveLine(o,e,!0);function copyLine(o,e,s){if(o.readOnly)return!1;let a=[];for(let c of selectedLineBlocks(o))s?a.push({from:c.from,insert:o.doc.slice(c.from,c.to)+o.lineBreak}):a.push({from:c.to,insert:o.lineBreak+o.doc.slice(c.from,c.to)});return e(o.update({changes:a,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const copyLineUp=({state:o,dispatch:e})=>copyLine(o,e,!1),copyLineDown=({state:o,dispatch:e})=>copyLine(o,e,!0),deleteLine=o=>{if(o.state.readOnly)return!1;let{state:e}=o,s=e.changes(selectedLineBlocks(e).map(({from:c,to:h})=>(c>0?c--:ho.moveVertically(c,!0)).map(s);return o.dispatch({changes:s,selection:a,scrollIntoView:!0,userEvent:"delete.line"}),!0};function isBetweenBrackets(o,e){if(/\(\)|\[\]|\{\}/.test(o.sliceDoc(e-1,e+1)))return{from:e,to:e};let s=syntaxTree(o).resolveInner(e),a=s.childBefore(e),c=s.childAfter(e),h;return a&&c&&a.to<=e&&c.from>=e&&(h=a.type.prop(NodeProp.closedBy))&&h.indexOf(c.name)>-1&&o.doc.lineAt(a.to).from==o.doc.lineAt(c.from).from?{from:a.to,to:c.from}:null}const insertNewlineAndIndent=newlineAndIndent(!1),insertBlankLine=newlineAndIndent(!0);function newlineAndIndent(o){return({state:e,dispatch:s})=>{if(e.readOnly)return!1;let a=e.changeByRange(c=>{let{from:h,to:d}=c,g=e.doc.lineAt(h),_=!o&&h==d&&isBetweenBrackets(e,h);o&&(h=d=(d<=g.to?g:e.doc.lineAt(d)).to);let b=new IndentContext(e,{simulateBreak:h,simulateDoubleBreak:!!_}),$=getIndentation(b,h);for($==null&&($=/^\s*/.exec(e.doc.lineAt(h).text)[0].length);dg.from&&h{let c=[];for(let d=a.from;d<=a.to;){let g=o.doc.lineAt(d);g.number>s&&(a.empty||a.to>g.from)&&(e(g,c,a),s=g.number),d=g.to+1}let h=o.changes(c);return{changes:c,range:EditorSelection.range(h.mapPos(a.anchor,1),h.mapPos(a.head,1))}})}const indentSelection=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let s=Object.create(null),a=new IndentContext(o,{overrideIndentation:h=>{let d=s[h];return d==null?-1:d}}),c=changeBySelectedLine(o,(h,d,g)=>{let _=getIndentation(a,h.from);if(_==null)return;/\S/.test(h.text)||(_=0);let b=/^\s*/.exec(h.text)[0],$=indentString(o,_);(b!=$||g.fromo.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{a.push({from:s.from,insert:o.facet(indentUnit)})}),{userEvent:"input.indent"})),!0),indentLess=({state:o,dispatch:e})=>o.readOnly?!1:(e(o.update(changeBySelectedLine(o,(s,a)=>{let c=/^\s*/.exec(s.text)[0];if(!c)return;let h=countColumn(c,o.tabSize),d=0,g=indentString(o,Math.max(0,h-getIndentUnit(o)));for(;d({mac:o.key,run:o.run,shift:o.shift}))),defaultKeymap=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:cursorSyntaxLeft,shift:selectSyntaxLeft},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:cursorSyntaxRight,shift:selectSyntaxRight},{key:"Alt-ArrowUp",run:moveLineUp},{key:"Shift-Alt-ArrowUp",run:copyLineUp},{key:"Alt-ArrowDown",run:moveLineDown},{key:"Shift-Alt-ArrowDown",run:copyLineDown},{key:"Escape",run:simplifySelection},{key:"Mod-Enter",run:insertBlankLine},{key:"Alt-l",mac:"Ctrl-l",run:selectLine},{key:"Mod-i",run:selectParentSyntax,preventDefault:!0},{key:"Mod-[",run:indentLess},{key:"Mod-]",run:indentMore},{key:"Mod-Alt-\\",run:indentSelection},{key:"Shift-Mod-k",run:deleteLine},{key:"Shift-Mod-\\",run:cursorMatchingBracket},{key:"Mod-/",run:toggleComment},{key:"Alt-A",run:toggleBlockComment}].concat(standardKeymap),indentWithTab={key:"Tab",run:indentMore,shift:indentLess};function crelt(){var o=arguments[0];typeof o=="string"&&(o=document.createElement(o));var e=1,s=arguments[1];if(s&&typeof s=="object"&&s.nodeType==null&&!Array.isArray(s)){for(var a in s)if(Object.prototype.hasOwnProperty.call(s,a)){var c=s[a];typeof c=="string"?o.setAttribute(a,c):c!=null&&(o[a]=c)}e++}for(;eo.normalize("NFKD"):o=>o;class SearchCursor{constructor(e,s,a=0,c=e.length,h){this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(a,c),this.bufferStart=a,this.normalize=h?d=>h(basicNormalize(d)):basicNormalize,this.query=this.normalize(s)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return codePointAt(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let s=fromCodePoint(e),a=this.bufferStart+this.bufferPos;this.bufferPos+=codePointSize(e);let c=this.normalize(s);for(let h=0,d=a;;h++){let g=c.charCodeAt(h),_=this.match(g,d);if(_)return this.value=_,this;if(h==c.length-1)break;d==a&&hthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let s=this.matchPos<=this.to&&this.re.exec(this.curLine);if(s){let a=this.curLineStart+s.index,c=a+s[0].length;if(this.matchPos=c+(a==c?1:0),a==this.curLine.length&&this.nextLine(),athis.value.to)return this.value={from:a,to:c,match:s},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=a||c.to<=s){let g=new FlattenedDoc(s,e.sliceString(s,a));return flattened.set(e,g),g}if(c.from==s&&c.to==a)return c;let{text:h,from:d}=c;return d>s&&(h=e.sliceString(s,d)+h,d=s),c.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,s=this.re.exec(this.flat.text);if(s&&!s[0]&&s.index==e&&(this.re.lastIndex=e+1,s=this.re.exec(this.flat.text)),s&&this.flat.tothis.flat.text.length-10&&(s=null),s){let a=this.flat.from+s.index,c=a+s[0].length;return this.value={from:a,to:c,match:s},this.matchPos=c+(a==c?1:0),this}else{if(this.flat.to==this.to)return this.done=!0,this;this.flat=FlattenedDoc.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}}typeof Symbol<"u"&&(RegExpCursor.prototype[Symbol.iterator]=MultilineRegExpCursor.prototype[Symbol.iterator]=function(){return this});function validRegExp(o){try{return new RegExp(o,baseFlags),!0}catch{return!1}}function createLineDialog(o){let e=crelt("input",{class:"cm-textfield",name:"line"}),s=crelt("form",{class:"cm-gotoLine",onkeydown:c=>{c.keyCode==27?(c.preventDefault(),o.dispatch({effects:dialogEffect.of(!1)}),o.focus()):c.keyCode==13&&(c.preventDefault(),a())},onsubmit:c=>{c.preventDefault(),a()}},crelt("label",o.state.phrase("Go to line"),": ",e)," ",crelt("button",{class:"cm-button",type:"submit"},o.state.phrase("go")));function a(){let c=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(e.value);if(!c)return;let{state:h}=o,d=h.doc.lineAt(h.selection.main.head),[,g,_,b,$]=c,j=b?+b.slice(1):0,_e=_?+_:d.number;if(_&&$){let tt=_e/100;g&&(tt=tt*(g=="-"?-1:1)+d.number/h.doc.lines),_e=Math.round(h.doc.lines*tt)}else _&&g&&(_e=_e*(g=="-"?-1:1)+d.number);let et=h.doc.line(Math.max(1,Math.min(h.doc.lines,_e)));o.dispatch({effects:dialogEffect.of(!1),selection:EditorSelection.cursor(et.from+Math.max(0,Math.min(j,et.length))),scrollIntoView:!0}),o.focus()}return{dom:s}}const dialogEffect=StateEffect.define(),dialogField=StateField.define({create(){return!0},update(o,e){for(let s of e.effects)s.is(dialogEffect)&&(o=s.value);return o},provide:o=>showPanel.from(o,e=>e?createLineDialog:null)}),gotoLine=o=>{let e=getPanel(o,createLineDialog);if(!e){let s=[dialogEffect.of(!0)];o.state.field(dialogField,!1)==null&&s.push(StateEffect.appendConfig.of([dialogField,baseTheme$1$1])),o.dispatch({effects:s}),e=getPanel(o,createLineDialog)}return e&&e.dom.querySelector("input").focus(),!0},baseTheme$1$1=EditorView.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px","& label":{fontSize:"80%"}}}),defaultHighlightOptions={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},highlightConfig=Facet.define({combine(o){return combineConfig(o,defaultHighlightOptions,{highlightWordAroundCursor:(e,s)=>e||s,minSelectionLength:Math.min,maxMatches:Math.min})}});function highlightSelectionMatches(o){let e=[defaultTheme,matchHighlighter];return o&&e.push(highlightConfig.of(o)),e}const matchDeco=Decoration.mark({class:"cm-selectionMatch"}),mainMatchDeco=Decoration.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function insideWordBoundaries(o,e,s,a){return(s==0||o(e.sliceDoc(s-1,s))!=CharCategory.Word)&&(a==e.doc.length||o(e.sliceDoc(a,a+1))!=CharCategory.Word)}function insideWord(o,e,s,a){return o(e.sliceDoc(s,s+1))==CharCategory.Word&&o(e.sliceDoc(a-1,a))==CharCategory.Word}const matchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.decorations=this.getDeco(o)}update(o){(o.selectionSet||o.docChanged||o.viewportChanged)&&(this.decorations=this.getDeco(o.view))}getDeco(o){let e=o.state.facet(highlightConfig),{state:s}=o,a=s.selection;if(a.ranges.length>1)return Decoration.none;let c=a.main,h,d=null;if(c.empty){if(!e.highlightWordAroundCursor)return Decoration.none;let _=s.wordAt(c.head);if(!_)return Decoration.none;d=s.charCategorizer(c.head),h=s.sliceDoc(_.from,_.to)}else{let _=c.to-c.from;if(_200)return Decoration.none;if(e.wholeWords){if(h=s.sliceDoc(c.from,c.to),d=s.charCategorizer(c.head),!(insideWordBoundaries(d,s,c.from,c.to)&&insideWord(d,s,c.from,c.to)))return Decoration.none}else if(h=s.sliceDoc(c.from,c.to).trim(),!h)return Decoration.none}let g=[];for(let _ of o.visibleRanges){let b=new SearchCursor(s.doc,h,_.from,_.to);for(;!b.next().done;){let{from:$,to:j}=b.value;if((!d||insideWordBoundaries(d,s,$,j))&&(c.empty&&$<=c.from&&j>=c.to?g.push(mainMatchDeco.range($,j)):($>=c.to||j<=c.from)&&g.push(matchDeco.range($,j)),g.length>e.maxMatches))return Decoration.none}}return Decoration.set(g)}},{decorations:o=>o.decorations}),defaultTheme=EditorView.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),selectWord=({state:o,dispatch:e})=>{let{selection:s}=o,a=EditorSelection.create(s.ranges.map(c=>o.wordAt(c.head)||EditorSelection.cursor(c.head)),s.mainIndex);return a.eq(s)?!1:(e(o.update({selection:a})),!0)};function findNextOccurrence(o,e){let{main:s,ranges:a}=o.selection,c=o.wordAt(s.head),h=c&&c.from==s.from&&c.to==s.to;for(let d=!1,g=new SearchCursor(o.doc,e,a[a.length-1].to);;)if(g.next(),g.done){if(d)return null;g=new SearchCursor(o.doc,e,0,Math.max(0,a[a.length-1].from-1)),d=!0}else{if(d&&a.some(_=>_.from==g.value.from))continue;if(h){let _=o.wordAt(g.value.from);if(!_||_.from!=g.value.from||_.to!=g.value.to)continue}return g.value}}const selectNextOccurrence=({state:o,dispatch:e})=>{let{ranges:s}=o.selection;if(s.some(h=>h.from===h.to))return selectWord({state:o,dispatch:e});let a=o.sliceDoc(s[0].from,s[0].to);if(o.selection.ranges.some(h=>o.sliceDoc(h.from,h.to)!=a))return!1;let c=findNextOccurrence(o,a);return c?(e(o.update({selection:o.selection.addRange(EditorSelection.range(c.from,c.to),!1),effects:EditorView.scrollIntoView(c.to)})),!0):!1},searchConfigFacet=Facet.define({combine(o){var e;return{top:o.reduce((s,a)=>s!=null?s:a.top,void 0)||!1,caseSensitive:o.reduce((s,a)=>s!=null?s:a.caseSensitive,void 0)||!1,createPanel:((e=o.find(s=>s.createPanel))===null||e===void 0?void 0:e.createPanel)||(s=>new SearchPanel(s))}}});class SearchQuery{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||validRegExp(this.search)),this.unquoted=e.literal?this.search:this.search.replace(/\\([nrt\\])/g,(s,a)=>a=="n"?` -`:a=="r"?"\r":a=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp}create(){return this.regexp?new RegExpQuery(this):new StringQuery(this)}getCursor(e,s=0,a=e.length){return this.regexp?regexpCursor(this,e,s,a):stringCursor(this,e,s,a)}}class QueryType{constructor(e){this.spec=e}}function stringCursor(o,e,s,a){return new SearchCursor(e,o.unquoted,s,a,o.caseSensitive?void 0:c=>c.toLowerCase())}class StringQuery extends QueryType{constructor(e){super(e)}nextMatch(e,s,a){let c=stringCursor(this.spec,e,a,e.length).nextOverlapping();return c.done&&(c=stringCursor(this.spec,e,0,s).nextOverlapping()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=a;;){let h=Math.max(s,c-1e4-this.spec.unquoted.length),d=stringCursor(this.spec,e,h,c),g=null;for(;!d.nextOverlapping().done;)g=d.value;if(g)return g;if(h==s)return null;c-=1e4}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace}matchAll(e,s){let a=stringCursor(this.spec,e,0,e.length),c=[];for(;!a.next().done;){if(c.length>=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let h=stringCursor(this.spec,e,Math.max(0,s-this.spec.unquoted.length),Math.min(a+this.spec.unquoted.length,e.length));for(;!h.next().done;)c(h.value.from,h.value.to)}}function regexpCursor(o,e,s,a){return new RegExpCursor(e,o.search,o.caseSensitive?void 0:{ignoreCase:!0},s,a)}class RegExpQuery extends QueryType{nextMatch(e,s,a){let c=regexpCursor(this.spec,e,a,e.length).next();return c.done&&(c=regexpCursor(this.spec,e,0,s).next()),c.done?null:c.value}prevMatchInRange(e,s,a){for(let c=1;;c++){let h=Math.max(s,a-c*1e4),d=regexpCursor(this.spec,e,h,a),g=null;for(;!d.next().done;)g=d.value;if(g&&(h==s||g.from>h+10))return g;if(h==s)return null}}prevMatch(e,s,a){return this.prevMatchInRange(e,0,s)||this.prevMatchInRange(e,a,e.length)}getReplacement(e){return this.spec.replace.replace(/\$([$&\d+])/g,(s,a)=>a=="$"?"$":a=="&"?e.match[0]:a!="0"&&+a=s)return null;c.push(a.value)}return c}highlight(e,s,a,c){let h=regexpCursor(this.spec,e,Math.max(0,s-250),Math.min(a+250,e.length));for(;!h.next().done;)c(h.value.from,h.value.to)}}const setSearchQuery=StateEffect.define(),togglePanel$1=StateEffect.define(),searchState=StateField.define({create(o){return new SearchState(defaultQuery(o).create(),null)},update(o,e){for(let s of e.effects)s.is(setSearchQuery)?o=new SearchState(s.value.create(),o.panel):s.is(togglePanel$1)&&(o=new SearchState(o.query,s.value?createSearchPanel:null));return o},provide:o=>showPanel.from(o,e=>e.panel)});class SearchState{constructor(e,s){this.query=e,this.panel=s}}const matchMark=Decoration.mark({class:"cm-searchMatch"}),selectedMatchMark=Decoration.mark({class:"cm-searchMatch cm-searchMatch-selected"}),searchHighlighter=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.decorations=this.highlight(o.state.field(searchState))}update(o){let e=o.state.field(searchState);(e!=o.startState.field(searchState)||o.docChanged||o.selectionSet||o.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:o,panel:e}){if(!e||!o.spec.valid)return Decoration.none;let{view:s}=this,a=new RangeSetBuilder;for(let c=0,h=s.visibleRanges,d=h.length;ch[c+1].from-2*250;)_=h[++c].to;o.highlight(s.state.doc,g,_,(b,$)=>{let j=s.state.selection.ranges.some(_e=>_e.from==b&&_e.to==$);a.add(b,$,j?selectedMatchMark:matchMark)})}return a.finish()}},{decorations:o=>o.decorations});function searchCommand(o){return e=>{let s=e.state.field(searchState,!1);return s&&s.query.spec.valid?o(e,s):openSearchPanel(e)}}const findNext=searchCommand((o,{query:e})=>{let{to:s}=o.state.selection.main,a=e.nextMatch(o.state.doc,s,s);return a?(o.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0,effects:announceMatch(o,a),userEvent:"select.search"}),!0):!1}),findPrevious=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a}=s.selection.main,c=e.prevMatch(s.doc,a,a);return c?(o.dispatch({selection:{anchor:c.from,head:c.to},scrollIntoView:!0,effects:announceMatch(o,c),userEvent:"select.search"}),!0):!1}),selectMatches=searchCommand((o,{query:e})=>{let s=e.matchAll(o.state.doc,1e3);return!s||!s.length?!1:(o.dispatch({selection:EditorSelection.create(s.map(a=>EditorSelection.range(a.from,a.to))),userEvent:"select.search.matches"}),!0)}),selectSelectionMatches=({state:o,dispatch:e})=>{let s=o.selection;if(s.ranges.length>1||s.main.empty)return!1;let{from:a,to:c}=s.main,h=[],d=0;for(let g=new SearchCursor(o.doc,o.sliceDoc(a,c));!g.next().done;){if(h.length>1e3)return!1;g.value.from==a&&(d=h.length),h.push(EditorSelection.range(g.value.from,g.value.to))}return e(o.update({selection:EditorSelection.create(h,d),userEvent:"select.search.matches"})),!0},replaceNext=searchCommand((o,{query:e})=>{let{state:s}=o,{from:a,to:c}=s.selection.main;if(s.readOnly)return!1;let h=e.nextMatch(s.doc,a,a);if(!h)return!1;let d=[],g,_,b=[];if(h.from==a&&h.to==c&&(_=s.toText(e.getReplacement(h)),d.push({from:h.from,to:h.to,insert:_}),h=e.nextMatch(s.doc,h.from,h.to),b.push(EditorView.announce.of(s.phrase("replaced match on line $",s.doc.lineAt(a).number)+"."))),h){let $=d.length==0||d[0].from>=h.to?0:h.to-h.from-_.length;g={anchor:h.from-$,head:h.to-$},b.push(announceMatch(o,h))}return o.dispatch({changes:d,selection:g,scrollIntoView:!!g,effects:b,userEvent:"input.replace"}),!0}),replaceAll=searchCommand((o,{query:e})=>{if(o.state.readOnly)return!1;let s=e.matchAll(o.state.doc,1e9).map(c=>{let{from:h,to:d}=c;return{from:h,to:d,insert:e.getReplacement(c)}});if(!s.length)return!1;let a=o.state.phrase("replaced $ matches",s.length)+".";return o.dispatch({changes:s,effects:EditorView.announce.of(a),userEvent:"input.replace.all"}),!0});function createSearchPanel(o){return o.state.facet(searchConfigFacet).createPanel(o)}function defaultQuery(o,e){var s;let a=o.selection.main,c=a.empty||a.to>a.from+100?"":o.sliceDoc(a.from,a.to),h=(s=e==null?void 0:e.caseSensitive)!==null&&s!==void 0?s:o.facet(searchConfigFacet).caseSensitive;return e&&!c?e:new SearchQuery({search:c.replace(/\n/g,"\\n"),caseSensitive:h})}const openSearchPanel=o=>{let e=o.state.field(searchState,!1);if(e&&e.panel){let s=getPanel(o,createSearchPanel);if(!s)return!1;let a=s.dom.querySelector("[main-field]");if(a&&a!=o.root.activeElement){let c=defaultQuery(o.state,e.query.spec);c.valid&&o.dispatch({effects:setSearchQuery.of(c)}),a.focus(),a.select()}}else o.dispatch({effects:[togglePanel$1.of(!0),e?setSearchQuery.of(defaultQuery(o.state,e.query.spec)):StateEffect.appendConfig.of(searchExtensions)]});return!0},closeSearchPanel=o=>{let e=o.state.field(searchState,!1);if(!e||!e.panel)return!1;let s=getPanel(o,createSearchPanel);return s&&s.dom.contains(o.root.activeElement)&&o.focus(),o.dispatch({effects:togglePanel$1.of(!1)}),!0},searchKeymap=[{key:"Mod-f",run:openSearchPanel,scope:"editor search-panel"},{key:"F3",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:findNext,shift:findPrevious,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:closeSearchPanel,scope:"editor search-panel"},{key:"Mod-Shift-l",run:selectSelectionMatches},{key:"Alt-g",run:gotoLine},{key:"Mod-d",run:selectNextOccurrence,preventDefault:!0}];class SearchPanel{constructor(e){this.view=e;let s=this.query=e.state.field(searchState).query.spec;this.commit=this.commit.bind(this),this.searchField=crelt("input",{value:s.search,placeholder:phrase(e,"Find"),"aria-label":phrase(e,"Find"),class:"cm-textfield",name:"search","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=crelt("input",{value:s.replace,placeholder:phrase(e,"Replace"),"aria-label":phrase(e,"Replace"),class:"cm-textfield",name:"replace",onchange:this.commit,onkeyup:this.commit}),this.caseField=crelt("input",{type:"checkbox",name:"case",checked:s.caseSensitive,onchange:this.commit}),this.reField=crelt("input",{type:"checkbox",name:"re",checked:s.regexp,onchange:this.commit});function a(c,h,d){return crelt("button",{class:"cm-button",name:c,onclick:h,type:"button"},d)}this.dom=crelt("div",{onkeydown:c=>this.keydown(c),class:"cm-search"},[this.searchField,a("next",()=>findNext(e),[phrase(e,"next")]),a("prev",()=>findPrevious(e),[phrase(e,"previous")]),a("select",()=>selectMatches(e),[phrase(e,"all")]),crelt("label",null,[this.caseField,phrase(e,"match case")]),crelt("label",null,[this.reField,phrase(e,"regexp")]),...e.state.readOnly?[]:[crelt("br"),this.replaceField,a("replace",()=>replaceNext(e),[phrase(e,"replace")]),a("replaceAll",()=>replaceAll(e),[phrase(e,"replace all")]),crelt("button",{name:"close",onclick:()=>closeSearchPanel(e),"aria-label":phrase(e,"close"),type:"button"},["\xD7"])]])}commit(){let e=new SearchQuery({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:setSearchQuery.of(e)}))}keydown(e){runScopeHandlers(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?findPrevious:findNext)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),replaceNext(this.view))}update(e){for(let s of e.transactions)for(let a of s.effects)a.is(setSearchQuery)&&!a.value.eq(this.query)&&this.setQuery(a.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(searchConfigFacet).top}}function phrase(o,e){return o.state.phrase(e)}const AnnounceMargin=30,Break=/[\s\.,:;?!]/;function announceMatch(o,{from:e,to:s}){let a=o.state.doc.lineAt(e),c=o.state.doc.lineAt(s).to,h=Math.max(a.from,e-AnnounceMargin),d=Math.min(c,s+AnnounceMargin),g=o.state.sliceDoc(h,d);if(h!=a.from){for(let _=0;_g.length-AnnounceMargin;_--)if(!Break.test(g[_-1])&&Break.test(g[_])){g=g.slice(0,_);break}}return EditorView.announce.of(`${o.state.phrase("current match")}. ${g} ${o.state.phrase("on line")} ${a.number}.`)}const baseTheme$2=EditorView.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),searchExtensions=[searchState,Prec.lowest(searchHighlighter),baseTheme$2];class CompletionContext{constructor(e,s,a){this.state=e,this.pos=s,this.explicit=a,this.abortListeners=[]}tokenBefore(e){let s=syntaxTree(this.state).resolveInner(this.pos,-1);for(;s&&e.indexOf(s.name)<0;)s=s.parent;return s?{from:s.from,to:this.pos,text:this.state.sliceDoc(s.from,this.pos),type:s.type}:null}matchBefore(e){let s=this.state.doc.lineAt(this.pos),a=Math.max(s.from,this.pos-250),c=s.text.slice(a-s.from,this.pos-s.from),h=c.search(ensureAnchor(e,!1));return h<0?null:{from:a+h,to:this.pos,text:c.slice(h)}}get aborted(){return this.abortListeners==null}addEventListener(e,s){e=="abort"&&this.abortListeners&&this.abortListeners.push(s)}}function toSet(o){let e=Object.keys(o).join(""),s=/\w/.test(e);return s&&(e=e.replace(/\w/g,"")),`[${s?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function prefixMatch(o){let e=Object.create(null),s=Object.create(null);for(let{label:c}of o){e[c[0]]=!0;for(let h=1;htypeof c=="string"?{label:c}:c),[s,a]=e.every(c=>/^\w+$/.test(c.label))?[/\w*$/,/\w+$/]:prefixMatch(e);return c=>{let h=c.matchBefore(a);return h||c.explicit?{from:h?h.from:c.pos,options:e,validFor:s}:null}}function ifNotIn(o,e){return s=>{for(let a=syntaxTree(s.state).resolveInner(s.pos,-1);a;a=a.parent)if(o.indexOf(a.name)>-1)return null;return e(s)}}class Option{constructor(e,s,a){this.completion=e,this.source=s,this.match=a}}function cur(o){return o.selection.main.head}function ensureAnchor(o,e){var s;let{source:a}=o,c=e&&a[0]!="^",h=a[a.length-1]!="$";return!c&&!h?o:new RegExp(`${c?"^":""}(?:${a})${h?"$":""}`,(s=o.flags)!==null&&s!==void 0?s:o.ignoreCase?"i":"")}function insertCompletionText(o,e,s,a){return Object.assign(Object.assign({},o.changeByRange(c=>{if(c==o.selection.main)return{changes:{from:s,to:a,insert:e},range:EditorSelection.cursor(s+e.length)};let h=a-s;return!c.empty||h&&o.sliceDoc(c.from-h,c.from)!=o.sliceDoc(s,a)?{range:c}:{changes:{from:c.from-h,to:c.from,insert:e},range:EditorSelection.cursor(c.from-h+e.length)}})),{userEvent:"input.complete"})}function applyCompletion(o,e){const s=e.completion.apply||e.completion.label;let a=e.source;typeof s=="string"?o.dispatch(insertCompletionText(o.state,s,a.from,a.to)):s(o,e.completion,a.from,a.to)}const SourceCache=new WeakMap;function asSource(o){if(!Array.isArray(o))return o;let e=SourceCache.get(o);return e||SourceCache.set(o,e=completeFromList(o)),e}class FuzzyMatcher{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[];for(let s=0;s=48&&ut<=57||ut>=97&&ut<=122?2:ut>=65&&ut<=90?1:0:(ct=fromCodePoint(ut))!=ct.toLowerCase()?1:ct!=ct.toUpperCase()?2:0;(!it||ht==1&&st||ot==0&&ht!=0)&&(s[j]==ut||a[j]==ut&&(_e=!0)?d[j++]=it:d.length&&(rt=!1)),ot=ht,it+=codePointSize(ut)}return j==_&&d[0]==0&&rt?this.result(-100+(_e?-200:0),d,e):et==_&&tt==0?[-200-e.length,0,nt]:g>-1?[-700-e.length,g,g+this.pattern.length]:et==_?[-200+-700-e.length,tt,nt]:j==_?this.result(-100+(_e?-200:0)+-700+(rt?0:-1100),d,e):s.length==2?null:this.result((c[0]?-700:0)+-200+-1100,c,e)}result(e,s,a){let c=[e-a.length],h=1;for(let d of s){let g=d+(this.astral?codePointSize(codePointAt(a,d)):1);h>1&&c[h-1]==d?c[h-1]=g:(c[h++]=d,c[h++]=g)}return c}}const completionConfig=Facet.define({combine(o){return combineConfig(o,{activateOnTyping:!0,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],compareCompletions:(e,s)=>e.label.localeCompare(s.label)},{defaultKeymap:(e,s)=>e&&s,closeOnBlur:(e,s)=>e&&s,icons:(e,s)=>e&&s,optionClass:(e,s)=>a=>joinClass(e(a),s(a)),addToOptions:(e,s)=>e.concat(s)})}});function joinClass(o,e){return o?e?o+" "+e:o:e}function optionContent(o){let e=o.addToOptions.slice();return o.icons&&e.push({render(s){let a=document.createElement("div");return a.classList.add("cm-completionIcon"),s.type&&a.classList.add(...s.type.split(/\s+/g).map(c=>"cm-completionIcon-"+c)),a.setAttribute("aria-hidden","true"),a},position:20}),e.push({render(s,a,c){let h=document.createElement("span");h.className="cm-completionLabel";let{label:d}=s,g=0;for(let _=1;_g&&h.appendChild(document.createTextNode(d.slice(g,b)));let j=h.appendChild(document.createElement("span"));j.appendChild(document.createTextNode(d.slice(b,$))),j.className="cm-completionMatchedText",g=$}return gs.position-a.position).map(s=>s.render)}function rangeAroundSelected(o,e,s){if(o<=s)return{from:0,to:o};if(e<0&&(e=0),e<=o>>1){let c=Math.floor(e/s);return{from:c*s,to:(c+1)*s}}let a=Math.floor((o-e)/s);return{from:o-(a+1)*s,to:o-a*s}}class CompletionTooltip{constructor(e,s){this.view=e,this.stateField=s,this.info=null,this.placeInfo={read:()=>this.measureInfo(),write:g=>this.positionInfo(g),key:this};let a=e.state.field(s),{options:c,selected:h}=a.open,d=e.state.facet(completionConfig);this.optionContent=optionContent(d),this.optionClass=d.optionClass,this.range=rangeAroundSelected(c.length,h,d.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.dom.addEventListener("mousedown",g=>{for(let _=g.target,b;_&&_!=this.dom;_=_.parentNode)if(_.nodeName=="LI"&&(b=/-(\d+)$/.exec(_.id))&&+b[1]{this.info&&this.view.requestMeasure(this.placeInfo)})}mount(){this.updateSel()}update(e){e.state.field(this.stateField)!=e.startState.field(this.stateField)&&this.updateSel()}positioned(){this.info&&this.view.requestMeasure(this.placeInfo)}updateSel(){let e=this.view.state.field(this.stateField),s=e.open;if((s.selected=this.range.to)&&(this.range=rangeAroundSelected(s.options.length,s.selected,this.view.state.facet(completionConfig).maxRenderedOptions),this.list.remove(),this.list=this.dom.appendChild(this.createListBox(s.options,e.id,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfo)})),this.updateSelectedOption(s.selected)){this.info&&(this.info.remove(),this.info=null);let{completion:a}=s.options[s.selected],{info:c}=a;if(!c)return;let h=typeof c=="string"?document.createTextNode(c):c(a);if(!h)return;"then"in h?h.then(d=>{d&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(d)}).catch(d=>logException(this.view.state,d,"completion info")):this.addInfoPane(h)}}addInfoPane(e){let s=this.info=document.createElement("div");s.className="cm-tooltip cm-completionInfo",s.appendChild(e),this.dom.appendChild(s),this.view.requestMeasure(this.placeInfo)}updateSelectedOption(e){let s=null;for(let a=this.list.firstChild,c=this.range.from;a;a=a.nextSibling,c++)c==e?a.hasAttribute("aria-selected")||(a.setAttribute("aria-selected","true"),s=a):a.hasAttribute("aria-selected")&&a.removeAttribute("aria-selected");return s&&scrollIntoView(this.list,s),s}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let s=this.dom.getBoundingClientRect(),a=this.info.getBoundingClientRect(),c=e.getBoundingClientRect();if(c.top>Math.min(innerHeight,s.bottom)-10||c.bottomnew CompletionTooltip(e,o)}function scrollIntoView(o,e){let s=o.getBoundingClientRect(),a=e.getBoundingClientRect();a.tops.bottom&&(o.scrollTop+=a.bottom-s.bottom)}function score(o){return(o.boost||0)*100+(o.apply?10:0)+(o.info?5:0)+(o.type?1:0)}function sortOptions(o,e){let s=[],a=0;for(let g of o)if(g.hasResult())if(g.result.filter===!1){let _=g.result.getMatch;for(let b of g.result.options){let $=[1e9-a++];if(_)for(let j of _(b))$.push(j);s.push(new Option(b,g,$))}}else{let _=new FuzzyMatcher(e.sliceDoc(g.from,g.to)),b;for(let $ of g.result.options)(b=_.match($.label))&&($.boost!=null&&(b[0]+=$.boost),s.push(new Option($,g,b)))}let c=[],h=null,d=e.facet(completionConfig).compareCompletions;for(let g of s.sort((_,b)=>b.match[0]-_.match[0]||d(_.completion,b.completion)))!h||h.label!=g.completion.label||h.detail!=g.completion.detail||h.type!=null&&g.completion.type!=null&&h.type!=g.completion.type||h.apply!=g.completion.apply?c.push(g):score(g.completion)>score(h)&&(c[c.length-1]=g),h=g.completion;return c}class CompletionDialog{constructor(e,s,a,c,h){this.options=e,this.attrs=s,this.tooltip=a,this.timestamp=c,this.selected=h}setSelected(e,s){return e==this.selected||e>=this.options.length?this:new CompletionDialog(this.options,makeAttrs(s,e),this.tooltip,this.timestamp,e)}static build(e,s,a,c,h){let d=sortOptions(e,s);if(!d.length)return null;let g=s.facet(completionConfig).selectOnOpen?0:-1;if(c&&c.selected!=g&&c.selected!=-1){let _=c.options[c.selected].completion;for(let b=0;bb.hasResult()?Math.min(_,b.from):_,1e8),create:completionTooltip(completionState),above:h.aboveCursor},c?c.timestamp:Date.now(),g)}map(e){return new CompletionDialog(this.options,this.attrs,Object.assign(Object.assign({},this.tooltip),{pos:e.mapPos(this.tooltip.pos)}),this.timestamp,this.selected)}}class CompletionState{constructor(e,s,a){this.active=e,this.id=s,this.open=a}static start(){return new CompletionState(none,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:s}=e,a=s.facet(completionConfig),h=(a.override||s.languageDataAt("autocomplete",cur(s)).map(asSource)).map(g=>(this.active.find(b=>b.source==g)||new ActiveSource(g,this.active.some(b=>b.state!=0)?1:0)).update(e,a));h.length==this.active.length&&h.every((g,_)=>g==this.active[_])&&(h=this.active);let d=e.selection||h.some(g=>g.hasResult()&&e.changes.touchesRange(g.from,g.to))||!sameResults(h,this.active)?CompletionDialog.build(h,s,this.id,this.open,a):this.open&&e.docChanged?this.open.map(e.changes):this.open;!d&&h.every(g=>g.state!=1)&&h.some(g=>g.hasResult())&&(h=h.map(g=>g.hasResult()?new ActiveSource(g.source,0):g));for(let g of e.effects)g.is(setSelectedEffect)&&(d=d&&d.setSelected(g.value,this.id));return h==this.active&&d==this.open?this:new CompletionState(h,this.id,d)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:baseAttrs}}function sameResults(o,e){if(o==e)return!0;for(let s=0,a=0;;){for(;s-1&&(s["aria-activedescendant"]=o+"-"+e),s}const none=[];function getUserEvent(o){return o.isUserEvent("input.type")?"input":o.isUserEvent("delete.backward")?"delete":null}class ActiveSource{constructor(e,s,a=-1){this.source=e,this.state=s,this.explicitPos=a}hasResult(){return!1}update(e,s){let a=getUserEvent(e),c=this;a?c=c.handleUserEvent(e,a,s):e.docChanged?c=c.handleChange(e):e.selection&&c.state!=0&&(c=new ActiveSource(c.source,0));for(let h of e.effects)if(h.is(startCompletionEffect))c=new ActiveSource(c.source,1,h.value?cur(e.state):-1);else if(h.is(closeCompletionEffect))c=new ActiveSource(c.source,0);else if(h.is(setActiveEffect))for(let d of h.value)d.source==c.source&&(c=d);return c}handleUserEvent(e,s,a){return s=="delete"||!a.activateOnTyping?this.map(e.changes):new ActiveSource(this.source,1)}handleChange(e){return e.changes.touchesRange(cur(e.startState))?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty||this.explicitPos<0?this:new ActiveSource(this.source,this.state,e.mapPos(this.explicitPos))}}class ActiveResult extends ActiveSource{constructor(e,s,a,c,h){super(e,2,s),this.result=a,this.from=c,this.to=h}hasResult(){return!0}handleUserEvent(e,s,a){var c;let h=e.changes.mapPos(this.from),d=e.changes.mapPos(this.to,1),g=cur(e.state);if((this.explicitPos<0?g<=h:gd||s=="delete"&&cur(e.startState)==this.from)return new ActiveSource(this.source,s=="input"&&a.activateOnTyping?1:0);let _=this.explicitPos<0?-1:e.changes.mapPos(this.explicitPos),b;return checkValid(this.result.validFor,e.state,h,d)?new ActiveResult(this.source,_,this.result,h,d):this.result.update&&(b=this.result.update(this.result,h,d,new CompletionContext(e.state,g,_>=0)))?new ActiveResult(this.source,_,b,b.from,(c=b.to)!==null&&c!==void 0?c:cur(e.state)):new ActiveSource(this.source,1,_)}handleChange(e){return e.changes.touchesRange(this.from,this.to)?new ActiveSource(this.source,0):this.map(e.changes)}map(e){return e.empty?this:new ActiveResult(this.source,this.explicitPos<0?-1:e.mapPos(this.explicitPos),this.result,e.mapPos(this.from),e.mapPos(this.to,1))}}function checkValid(o,e,s,a){if(!o)return!1;let c=e.sliceDoc(s,a);return typeof o=="function"?o(c,s,a,e):ensureAnchor(o,!0).test(c)}const startCompletionEffect=StateEffect.define(),closeCompletionEffect=StateEffect.define(),setActiveEffect=StateEffect.define({map(o,e){return o.map(s=>s.map(e))}}),setSelectedEffect=StateEffect.define(),completionState=StateField.define({create(){return CompletionState.start()},update(o,e){return o.update(e)},provide:o=>[showTooltip.from(o,e=>e.tooltip),EditorView.contentAttributes.from(o,e=>e.attrs)]}),CompletionInteractMargin=75;function moveCompletionSelection(o,e="option"){return s=>{let a=s.state.field(completionState,!1);if(!a||!a.open||Date.now()-a.open.timestamp-1?a.open.selected+c*(o?1:-1):o?0:d-1;return g<0?g=e=="page"?0:d-1:g>=d&&(g=e=="page"?d-1:0),s.dispatch({effects:setSelectedEffect.of(g)}),!0}}const acceptCompletion=o=>{let e=o.state.field(completionState,!1);return o.state.readOnly||!e||!e.open||Date.now()-e.open.timestampo.state.field(completionState,!1)?(o.dispatch({effects:startCompletionEffect.of(!0)}),!0):!1,closeCompletion=o=>{let e=o.state.field(completionState,!1);return!e||!e.active.some(s=>s.state!=0)?!1:(o.dispatch({effects:closeCompletionEffect.of(null)}),!0)};class RunningQuery{constructor(e,s){this.active=e,this.context=s,this.time=Date.now(),this.updates=[],this.done=void 0}}const DebounceTime=50,MaxUpdateCount=50,MinAbortTime=1e3,completionPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.composing=0;for(let e of o.state.field(completionState).active)e.state==1&&this.startQuery(e)}update(o){let e=o.state.field(completionState);if(!o.selectionSet&&!o.docChanged&&o.startState.field(completionState)==e)return;let s=o.transactions.some(a=>(a.selection||a.docChanged)&&!getUserEvent(a));for(let a=0;aMaxUpdateCount&&Date.now()-c.time>MinAbortTime){for(let h of c.context.abortListeners)try{h()}catch(d){logException(this.view.state,d)}c.context.abortListeners=null,this.running.splice(a--,1)}else c.updates.push(...o.transactions)}if(this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),this.debounceUpdate=e.active.some(a=>a.state==1&&!this.running.some(c=>c.active.source==a.source))?setTimeout(()=>this.startUpdate(),DebounceTime):-1,this.composing!=0)for(let a of o.transactions)getUserEvent(a)=="input"?this.composing=2:this.composing==2&&a.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1;let{state:o}=this.view,e=o.field(completionState);for(let s of e.active)s.state==1&&!this.running.some(a=>a.active.source==s.source)&&this.startQuery(s)}startQuery(o){let{state:e}=this.view,s=cur(e),a=new CompletionContext(e,s,o.explicitPos==s),c=new RunningQuery(o,a);this.running.push(c),Promise.resolve(o.source(a)).then(h=>{c.context.aborted||(c.done=h||null,this.scheduleAccept())},h=>{this.view.dispatch({effects:closeCompletionEffect.of(null)}),logException(this.view.state,h)})}scheduleAccept(){this.running.every(o=>o.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),DebounceTime))}accept(){var o;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],s=this.view.state.facet(completionConfig);for(let a=0;ad.source==c.active.source);if(h&&h.state==1)if(c.done==null){let d=new ActiveSource(c.active.source,0);for(let g of c.updates)d=d.update(g,s);d.state!=1&&e.push(d)}else this.startQuery(h)}e.length&&this.view.dispatch({effects:setActiveEffect.of(e)})}},{eventHandlers:{blur(){let o=this.view.state.field(completionState,!1);o&&o.tooltip&&this.view.state.facet(completionConfig).closeOnBlur&&this.view.dispatch({effects:closeCompletionEffect.of(null)})},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:startCompletionEffect.of(!1)}),20),this.composing=0}}}),baseTheme$1=EditorView.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",listStyle:"none",margin:0,padding:0,"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer",padding:"1px 3px",lineHeight:1.2}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"\xB7\xB7\xB7"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"300px"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'\u0192'"}},".cm-completionIcon-class":{"&:after":{content:"'\u25CB'"}},".cm-completionIcon-interface":{"&:after":{content:"'\u25CC'"}},".cm-completionIcon-variable":{"&:after":{content:"'\u{1D465}'"}},".cm-completionIcon-constant":{"&:after":{content:"'\u{1D436}'"}},".cm-completionIcon-type":{"&:after":{content:"'\u{1D461}'"}},".cm-completionIcon-enum":{"&:after":{content:"'\u222A'"}},".cm-completionIcon-property":{"&:after":{content:"'\u25A1'"}},".cm-completionIcon-keyword":{"&:after":{content:"'\u{1F511}\uFE0E'"}},".cm-completionIcon-namespace":{"&:after":{content:"'\u25A2'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class FieldPos{constructor(e,s,a,c){this.field=e,this.line=s,this.from=a,this.to=c}}class FieldRange{constructor(e,s,a){this.field=e,this.from=s,this.to=a}map(e){let s=e.mapPos(this.from,-1,MapMode.TrackDel),a=e.mapPos(this.to,1,MapMode.TrackDel);return s==null||a==null?null:new FieldRange(this.field,s,a)}}class Snippet{constructor(e,s){this.lines=e,this.fieldPositions=s}instantiate(e,s){let a=[],c=[s],h=e.doc.lineAt(s),d=/^\s*/.exec(h.text)[0];for(let _ of this.lines){if(a.length){let b=d,$=/^\t*/.exec(_)[0].length;for(let j=0;j<$;j++)b+=e.facet(indentUnit);c.push(s+b.length-$),_=b+_.slice($)}a.push(_),s+=_.length+1}let g=this.fieldPositions.map(_=>new FieldRange(_.field,c[_.line]+_.from,c[_.line]+_.to));return{text:a,ranges:g}}static parse(e){let s=[],a=[],c=[],h;for(let d of e.split(/\r\n?|\n/)){for(;h=/[#$]\{(?:(\d+)(?::([^}]*))?|([^}]*))\}/.exec(d);){let g=h[1]?+h[1]:null,_=h[2]||h[3]||"",b=-1;for(let $=0;$=b&&j.field++}c.push(new FieldPos(b,a.length,h.index,h.index+_.length)),d=d.slice(0,h.index)+_+d.slice(h.index+h[0].length)}for(let g;g=/([$#])\\{/.exec(d);){d=d.slice(0,g.index)+g[1]+"{"+d.slice(g.index+g[0].length);for(let _ of c)_.line==a.length&&_.from>g.index&&(_.from--,_.to--)}a.push(d)}return new Snippet(a,c)}}let fieldMarker=Decoration.widget({widget:new class extends WidgetType{toDOM(){let o=document.createElement("span");return o.className="cm-snippetFieldPosition",o}ignoreEvent(){return!1}}}),fieldRange=Decoration.mark({class:"cm-snippetField"});class ActiveSnippet{constructor(e,s){this.ranges=e,this.active=s,this.deco=Decoration.set(e.map(a=>(a.from==a.to?fieldMarker:fieldRange).range(a.from,a.to)))}map(e){let s=[];for(let a of this.ranges){let c=a.map(e);if(!c)return null;s.push(c)}return new ActiveSnippet(s,this.active)}selectionInsideField(e){return e.ranges.every(s=>this.ranges.some(a=>a.field==this.active&&a.from<=s.from&&a.to>=s.to))}}const setActive=StateEffect.define({map(o,e){return o&&o.map(e)}}),moveToField=StateEffect.define(),snippetState=StateField.define({create(){return null},update(o,e){for(let s of e.effects){if(s.is(setActive))return s.value;if(s.is(moveToField)&&o)return new ActiveSnippet(o.ranges,s.value)}return o&&e.docChanged&&(o=o.map(e.changes)),o&&e.selection&&!o.selectionInsideField(e.selection)&&(o=null),o},provide:o=>EditorView.decorations.from(o,e=>e?e.deco:Decoration.none)});function fieldSelection(o,e){return EditorSelection.create(o.filter(s=>s.field==e).map(s=>EditorSelection.range(s.from,s.to)))}function snippet(o){let e=Snippet.parse(o);return(s,a,c,h)=>{let{text:d,ranges:g}=e.instantiate(s.state,c),_={changes:{from:c,to:h,insert:Text.of(d)},scrollIntoView:!0};if(g.length&&(_.selection=fieldSelection(g,0)),g.length>1){let b=new ActiveSnippet(g,0),$=_.effects=[setActive.of(b)];s.state.field(snippetState,!1)===void 0&&$.push(StateEffect.appendConfig.of([snippetState,addSnippetKeymap,snippetPointerHandler,baseTheme$1]))}s.dispatch(s.state.update(_))}}function moveField(o){return({state:e,dispatch:s})=>{let a=e.field(snippetState,!1);if(!a||o<0&&a.active==0)return!1;let c=a.active+o,h=o>0&&!a.ranges.some(d=>d.field==c+o);return s(e.update({selection:fieldSelection(a.ranges,c),effects:setActive.of(h?null:new ActiveSnippet(a.ranges,c))})),!0}}const clearSnippet=({state:o,dispatch:e})=>o.field(snippetState,!1)?(e(o.update({effects:setActive.of(null)})),!0):!1,nextSnippetField=moveField(1),prevSnippetField=moveField(-1),defaultSnippetKeymap=[{key:"Tab",run:nextSnippetField,shift:prevSnippetField},{key:"Escape",run:clearSnippet}],snippetKeymap=Facet.define({combine(o){return o.length?o[0]:defaultSnippetKeymap}}),addSnippetKeymap=Prec.highest(keymap.compute([snippetKeymap],o=>o.facet(snippetKeymap)));function snippetCompletion(o,e){return Object.assign(Object.assign({},e),{apply:snippet(o)})}const snippetPointerHandler=EditorView.domEventHandlers({mousedown(o,e){let s=e.state.field(snippetState,!1),a;if(!s||(a=e.posAtCoords({x:o.clientX,y:o.clientY}))==null)return!1;let c=s.ranges.find(h=>h.from<=a&&h.to>=a);return!c||c.field==s.active?!1:(e.dispatch({selection:fieldSelection(s.ranges,c.field),effects:setActive.of(s.ranges.some(h=>h.field>c.field)?new ActiveSnippet(s.ranges,c.field):null)}),!0)}}),defaults={brackets:["(","[","{","'",'"'],before:")]}:;>"},closeBracketEffect=StateEffect.define({map(o,e){let s=e.mapPos(o,-1,MapMode.TrackAfter);return s==null?void 0:s}}),skipBracketEffect=StateEffect.define({map(o,e){return e.mapPos(o)}}),closedBracket=new class extends RangeValue{};closedBracket.startSide=1;closedBracket.endSide=-1;const bracketState=StateField.define({create(){return RangeSet.empty},update(o,e){if(e.selection){let s=e.state.doc.lineAt(e.selection.main.head).from,a=e.startState.doc.lineAt(e.startState.selection.main.head).from;s!=e.changes.mapPos(a,-1)&&(o=RangeSet.empty)}o=o.map(e.changes);for(let s of e.effects)s.is(closeBracketEffect)?o=o.update({add:[closedBracket.range(s.value,s.value+1)]}):s.is(skipBracketEffect)&&(o=o.update({filter:a=>a!=s.value}));return o}});function closeBrackets(){return[inputHandler,bracketState]}const definedClosing="()[]{}<>";function closing(o){for(let e=0;e{if((android$1?o.composing:o.compositionStarted)||o.state.readOnly)return!1;let c=o.state.selection.main;if(a.length>2||a.length==2&&codePointSize(codePointAt(a,0))==1||e!=c.from||s!=c.to)return!1;let h=insertBracket(o.state,a);return h?(o.dispatch(h),!0):!1}),deleteBracketPair=({state:o,dispatch:e})=>{if(o.readOnly)return!1;let a=config(o,o.selection.main.head).brackets||defaults.brackets,c=null,h=o.changeByRange(d=>{if(d.empty){let g=prevChar(o.doc,d.head);for(let _ of a)if(_==g&&nextChar(o.doc,d.head)==closing(codePointAt(_,0)))return{changes:{from:d.head-_.length,to:d.head+_.length},range:EditorSelection.cursor(d.head-_.length),userEvent:"delete.backward"}}return{range:c=d}});return c||e(o.update(h,{scrollIntoView:!0})),!c},closeBracketsKeymap=[{key:"Backspace",run:deleteBracketPair}];function insertBracket(o,e){let s=config(o,o.selection.main.head),a=s.brackets||defaults.brackets;for(let c of a){let h=closing(codePointAt(c,0));if(e==c)return h==c?handleSame(o,c,a.indexOf(c+c+c)>-1):handleOpen(o,c,h,s.before||defaults.before);if(e==h&&closedBracketAt(o,o.selection.main.from))return handleClose(o,c,h)}return null}function closedBracketAt(o,e){let s=!1;return o.field(bracketState).between(0,o.doc.length,a=>{a==e&&(s=!0)}),s}function nextChar(o,e){let s=o.sliceString(e,e+2);return s.slice(0,codePointSize(codePointAt(s,0)))}function prevChar(o,e){let s=o.sliceString(e-2,e);return codePointSize(codePointAt(s,0))==s.length?s:s.slice(1)}function handleOpen(o,e,s,a){let c=null,h=o.changeByRange(d=>{if(!d.empty)return{changes:[{insert:e,from:d.from},{insert:s,from:d.to}],effects:closeBracketEffect.of(d.to+e.length),range:EditorSelection.range(d.anchor+e.length,d.head+e.length)};let g=nextChar(o.doc,d.head);return!g||/\s/.test(g)||a.indexOf(g)>-1?{changes:{insert:e+s,from:d.head},effects:closeBracketEffect.of(d.head+e.length),range:EditorSelection.cursor(d.head+e.length)}:{range:c=d}});return c?null:o.update(h,{scrollIntoView:!0,userEvent:"input.type"})}function handleClose(o,e,s){let a=null,c=o.selection.ranges.map(h=>h.empty&&nextChar(o.doc,h.head)==s?EditorSelection.cursor(h.head+s.length):a=h);return a?null:o.update({selection:EditorSelection.create(c,o.selection.mainIndex),scrollIntoView:!0,effects:o.selection.ranges.map(({from:h})=>skipBracketEffect.of(h))})}function handleSame(o,e,s){let a=null,c=o.changeByRange(h=>{if(!h.empty)return{changes:[{insert:e,from:h.from},{insert:e,from:h.to}],effects:closeBracketEffect.of(h.to+e.length),range:EditorSelection.range(h.anchor+e.length,h.head+e.length)};let d=h.head,g=nextChar(o.doc,d);if(g==e){if(nodeStart(o,d))return{changes:{insert:e+e,from:d},effects:closeBracketEffect.of(d+e.length),range:EditorSelection.cursor(d+e.length)};if(closedBracketAt(o,d)){let _=s&&o.sliceDoc(d,d+e.length*3)==e+e+e;return{range:EditorSelection.cursor(d+e.length*(_?3:1)),effects:skipBracketEffect.of(d)}}}else{if(s&&o.sliceDoc(d-2*e.length,d)==e+e&&nodeStart(o,d-2*e.length))return{changes:{insert:e+e+e+e,from:d},effects:closeBracketEffect.of(d+e.length),range:EditorSelection.cursor(d+e.length)};if(o.charCategorizer(d)(g)!=CharCategory.Word){let _=o.sliceDoc(d-1,d);if(_!=e&&o.charCategorizer(d)(_)!=CharCategory.Word&&!probablyInString(o,d,e))return{changes:{insert:e+e,from:d},effects:closeBracketEffect.of(d+e.length),range:EditorSelection.cursor(d+e.length)}}}return{range:a=h}});return a?null:o.update(c,{scrollIntoView:!0,userEvent:"input.type"})}function nodeStart(o,e){let s=syntaxTree(o).resolveInner(e+1);return s.parent&&s.from==e}function probablyInString(o,e,s){let a=syntaxTree(o).resolveInner(e,-1);for(let c=0;c<5;c++){if(o.sliceDoc(a.from,a.from+s.length)==s){let d=a.firstChild;for(;d&&d.from==a.from&&d.to-d.from>s.length;){if(o.sliceDoc(d.to-s.length,d.to)==s)return!1;d=d.firstChild}return!0}let h=a.to==e&&a.parent;if(!h)break;a=h}return!1}function autocompletion(o={}){return[completionState,completionConfig.of(o),completionPlugin,completionKeymapExt,baseTheme$1]}const completionKeymap=[{key:"Ctrl-Space",run:startCompletion},{key:"Escape",run:closeCompletion},{key:"ArrowDown",run:moveCompletionSelection(!0)},{key:"ArrowUp",run:moveCompletionSelection(!1)},{key:"PageDown",run:moveCompletionSelection(!0,"page")},{key:"PageUp",run:moveCompletionSelection(!1,"page")},{key:"Enter",run:acceptCompletion}],completionKeymapExt=Prec.highest(keymap.computeN([completionConfig],o=>o.facet(completionConfig).defaultKeymap?[completionKeymap]:[]));class SelectedDiagnostic{constructor(e,s,a){this.from=e,this.to=s,this.diagnostic=a}}class LintState{constructor(e,s,a){this.diagnostics=e,this.panel=s,this.selected=a}static init(e,s,a){let c=e,h=a.facet(lintConfig).markerFilter;h&&(c=h(c));let d=Decoration.set(c.map(g=>g.from==g.to||g.from==g.to-1&&a.doc.lineAt(g.from).to==g.from?Decoration.widget({widget:new DiagnosticWidget(g),diagnostic:g}).range(g.from):Decoration.mark({attributes:{class:"cm-lintRange cm-lintRange-"+g.severity},diagnostic:g}).range(g.from,g.to)),!0);return new LintState(d,s,findDiagnostic(d))}}function findDiagnostic(o,e=null,s=0){let a=null;return o.between(s,1e9,(c,h,{spec:d})=>{if(!(e&&d.diagnostic!=e))return a=new SelectedDiagnostic(c,h,d.diagnostic),!1}),a}function hideTooltip(o,e){return!!(o.effects.some(s=>s.is(setDiagnosticsEffect))||o.changes.touchesRange(e.pos))}function maybeEnableLint(o,e){return o.field(lintState,!1)?e:e.concat(StateEffect.appendConfig.of([lintState,EditorView.decorations.compute([lintState],s=>{let{selected:a,panel:c}=s.field(lintState);return!a||!c||a.from==a.to?Decoration.none:Decoration.set([activeMark.range(a.from,a.to)])}),hoverTooltip(lintTooltip,{hideOn:hideTooltip}),baseTheme]))}function setDiagnostics(o,e){return{effects:maybeEnableLint(o,[setDiagnosticsEffect.of(e)])}}const setDiagnosticsEffect=StateEffect.define(),togglePanel=StateEffect.define(),movePanelSelection=StateEffect.define(),lintState=StateField.define({create(){return new LintState(Decoration.none,null,null)},update(o,e){if(e.docChanged){let s=o.diagnostics.map(e.changes),a=null;if(o.selected){let c=e.changes.mapPos(o.selected.from,1);a=findDiagnostic(s,o.selected.diagnostic,c)||findDiagnostic(s,null,c)}o=new LintState(s,o.panel,a)}for(let s of e.effects)s.is(setDiagnosticsEffect)?o=LintState.init(s.value,o.panel,e.state):s.is(togglePanel)?o=new LintState(o.diagnostics,s.value?LintPanel.open:null,o.selected):s.is(movePanelSelection)&&(o=new LintState(o.diagnostics,o.panel,s.value));return o},provide:o=>[showPanel.from(o,e=>e.panel),EditorView.decorations.from(o,e=>e.diagnostics)]}),activeMark=Decoration.mark({class:"cm-lintRange cm-lintRange-active"});function lintTooltip(o,e,s){let{diagnostics:a}=o.state.field(lintState),c=[],h=2e8,d=0;a.between(e-(s<0?1:0),e+(s>0?1:0),(_,b,{spec:$})=>{e>=_&&e<=b&&(_==b||(e>_||s>0)&&(erenderDiagnostic(o,s,!1)))}const openLintPanel=o=>{let e=o.state.field(lintState,!1);(!e||!e.panel)&&o.dispatch({effects:maybeEnableLint(o.state,[togglePanel.of(!0)])});let s=getPanel(o,LintPanel.open);return s&&s.dom.querySelector(".cm-panel-lint ul").focus(),!0},closeLintPanel=o=>{let e=o.state.field(lintState,!1);return!e||!e.panel?!1:(o.dispatch({effects:togglePanel.of(!1)}),!0)},nextDiagnostic=o=>{let e=o.state.field(lintState,!1);if(!e)return!1;let s=o.state.selection.main,a=e.diagnostics.iter(s.to+1);return!a.value&&(a=e.diagnostics.iter(0),!a.value||a.from==s.from&&a.to==s.to)?!1:(o.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0}),!0)},lintKeymap=[{key:"Mod-Shift-m",run:openLintPanel},{key:"F8",run:nextDiagnostic}],lintPlugin=ViewPlugin.fromClass(class{constructor(o){this.view=o,this.timeout=-1,this.set=!0;let{delay:e}=o.state.facet(lintConfig);this.lintTime=Date.now()+e,this.run=this.run.bind(this),this.timeout=setTimeout(this.run,e)}run(){let o=Date.now();if(oPromise.resolve(a(this.view)))).then(a=>{let c=a.reduce((h,d)=>h.concat(d));this.view.state.doc==e.doc&&this.view.dispatch(setDiagnostics(this.view.state,c))},a=>{logException(this.view.state,a)})}}update(o){let e=o.state.facet(lintConfig);(o.docChanged||e!=o.startState.facet(lintConfig))&&(this.lintTime=Date.now()+e.delay,this.set||(this.set=!0,this.timeout=setTimeout(this.run,e.delay)))}force(){this.set&&(this.lintTime=Date.now(),this.run())}destroy(){clearTimeout(this.timeout)}}),lintConfig=Facet.define({combine(o){return Object.assign({sources:o.map(e=>e.source)},combineConfig(o.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null}))},enables:lintPlugin});function assignKeys(o){let e=[];if(o)e:for(let{name:s}of o){for(let a=0;ah.toLowerCase()==c.toLowerCase())){e.push(c);continue e}}e.push("")}return e}function renderDiagnostic(o,e,s){var a;let c=s?assignKeys(e.actions):[];return crelt("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},crelt("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage():e.message),(a=e.actions)===null||a===void 0?void 0:a.map((h,d)=>{let g=j=>{j.preventDefault();let _e=findDiagnostic(o.state.field(lintState).diagnostics,e);_e&&h.apply(o,_e.from,_e.to)},{name:_}=h,b=c[d]?_.indexOf(c[d]):-1,$=b<0?_:[_.slice(0,b),crelt("u",_.slice(b,b+1)),_.slice(b+1)];return crelt("button",{type:"button",class:"cm-diagnosticAction",onclick:g,onmousedown:g,"aria-label":` Action: ${_}${b<0?"":` (access key "${c[d]})"`}.`},$)}),e.source&&crelt("div",{class:"cm-diagnosticSource"},e.source))}class DiagnosticWidget extends WidgetType{constructor(e){super(),this.diagnostic=e}eq(e){return e.diagnostic==this.diagnostic}toDOM(){return crelt("span",{class:"cm-lintPoint cm-lintPoint-"+this.diagnostic.severity})}}class PanelItem{constructor(e,s){this.diagnostic=s,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=renderDiagnostic(e,s,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class LintPanel{constructor(e){this.view=e,this.items=[];let s=c=>{if(c.keyCode==27)closeLintPanel(this.view),this.view.focus();else if(c.keyCode==38||c.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(c.keyCode==40||c.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(c.keyCode==36)this.moveSelection(0);else if(c.keyCode==35)this.moveSelection(this.items.length-1);else if(c.keyCode==13)this.view.focus();else if(c.keyCode>=65&&c.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:h}=this.items[this.selectedIndex],d=assignKeys(h.actions);for(let g=0;g{for(let h=0;hcloseLintPanel(this.view)},"\xD7")),this.update()}get selectedIndex(){let e=this.view.state.field(lintState).selected;if(!e)return-1;for(let s=0;s{let b=-1,$;for(let j=a;ja&&(this.items.splice(a,b-a),c=!0)),s&&$.diagnostic==s.diagnostic?$.dom.hasAttribute("aria-selected")||($.dom.setAttribute("aria-selected","true"),h=$):$.dom.hasAttribute("aria-selected")&&$.dom.removeAttribute("aria-selected"),a++});a({sel:h.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:d,panel:g})=>{d.topg.bottom&&(this.list.scrollTop+=d.bottom-g.bottom)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),c&&this.sync()}sync(){let e=this.list.firstChild;function s(){let a=e;e=a.nextSibling,a.remove()}for(let a of this.items)if(a.dom.parentNode==this.list){for(;e!=a.dom;)s();e=a.dom.nextSibling}else this.list.insertBefore(a.dom,e);for(;e;)s()}moveSelection(e){if(this.selectedIndex<0)return;let s=this.view.state.field(lintState),a=findDiagnostic(s.diagnostics,this.items[e].diagnostic);!a||this.view.dispatch({selection:{anchor:a.from,head:a.to},scrollIntoView:!0,effects:movePanelSelection.of(a)})}static open(e){return new LintPanel(e)}}function svg(o,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(o)}')`}function underline(o){return svg(``,'width="6" height="3"')}const baseTheme=EditorView.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:underline("#d11")},".cm-lintRange-warning":{backgroundImage:underline("orange")},".cm-lintRange-info":{backgroundImage:underline("#999")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});var basicSetup=function o(e){e===void 0&&(e={});var s=[];e.closeBracketsKeymap!==!1&&(s=s.concat(closeBracketsKeymap)),e.defaultKeymap!==!1&&(s=s.concat(defaultKeymap)),e.searchKeymap!==!1&&(s=s.concat(searchKeymap)),e.historyKeymap!==!1&&(s=s.concat(historyKeymap)),e.foldKeymap!==!1&&(s=s.concat(foldKeymap)),e.completionKeymap!==!1&&(s=s.concat(completionKeymap)),e.lintKeymap!==!1&&(s=s.concat(lintKeymap));var a=[];return e.lineNumbers!==!1&&a.push(lineNumbers()),e.highlightActiveLineGutter!==!1&&a.push(highlightActiveLineGutter()),e.highlightSpecialChars!==!1&&a.push(highlightSpecialChars()),e.history!==!1&&a.push(history()),e.foldGutter!==!1&&a.push(foldGutter()),e.drawSelection!==!1&&a.push(drawSelection()),e.dropCursor!==!1&&a.push(dropCursor()),e.allowMultipleSelections!==!1&&a.push(EditorState.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&a.push(indentOnInput()),e.syntaxHighlighting!==!1&&a.push(syntaxHighlighting(defaultHighlightStyle,{fallback:!0})),e.bracketMatching!==!1&&a.push(bracketMatching()),e.closeBrackets!==!1&&a.push(closeBrackets()),e.autocompletion!==!1&&a.push(autocompletion()),e.rectangularSelection!==!1&&a.push(rectangularSelection()),e.crosshairCursor!==!1&&a.push(crosshairCursor()),e.highlightActiveLine!==!1&&a.push(highlightActiveLine()),e.highlightSelectionMatches!==!1&&a.push(highlightSelectionMatches()),a.concat([keymap.of(s.flat())]).filter(Boolean)};const chalky="#e5c07b",coral="#e06c75",cyan="#56b6c2",invalid="#ffffff",ivory="#abb2bf",stone="#7d8799",malibu="#61afef",sage="#98c379",whiskey="#d19a66",violet="#c678dd",darkBackground="#21252b",highlightBackground="#2c313a",background="#282c34",tooltipBackground="#353a42",selection="#3E4451",cursor="#528bff",oneDarkTheme=EditorView.theme({"&":{color:ivory,backgroundColor:background},".cm-content":{caretColor:cursor},".cm-cursor, .cm-dropCursor":{borderLeftColor:cursor},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:selection},".cm-panels":{backgroundColor:darkBackground,color:ivory},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:highlightBackground},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847",outline:"1px solid #515a6b"},".cm-gutters":{backgroundColor:background,color:stone,border:"none"},".cm-activeLineGutter":{backgroundColor:highlightBackground},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:tooltipBackground},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:highlightBackground,color:ivory}}},{dark:!0}),oneDarkHighlightStyle=HighlightStyle.define([{tag:tags.keyword,color:violet},{tag:[tags.name,tags.deleted,tags.character,tags.propertyName,tags.macroName],color:coral},{tag:[tags.function(tags.variableName),tags.labelName],color:malibu},{tag:[tags.color,tags.constant(tags.name),tags.standard(tags.name)],color:whiskey},{tag:[tags.definition(tags.name),tags.separator],color:ivory},{tag:[tags.typeName,tags.className,tags.number,tags.changed,tags.annotation,tags.modifier,tags.self,tags.namespace],color:chalky},{tag:[tags.operator,tags.operatorKeyword,tags.url,tags.escape,tags.regexp,tags.link,tags.special(tags.string)],color:cyan},{tag:[tags.meta,tags.comment],color:stone},{tag:tags.strong,fontWeight:"bold"},{tag:tags.emphasis,fontStyle:"italic"},{tag:tags.strikethrough,textDecoration:"line-through"},{tag:tags.link,color:stone,textDecoration:"underline"},{tag:tags.heading,fontWeight:"bold",color:coral},{tag:[tags.atom,tags.bool,tags.special(tags.variableName)],color:whiskey},{tag:[tags.processingInstruction,tags.string,tags.inserted],color:sage},{tag:tags.invalid,color:invalid}]),oneDark=[oneDarkTheme,syntaxHighlighting(oneDarkHighlightStyle)];var getStatistics=o=>({line:o.state.doc.lineAt(o.state.selection.main.from),lineCount:o.state.doc.lines,lineBreak:o.state.lineBreak,length:o.state.doc.length,readOnly:o.state.readOnly,tabSize:o.state.tabSize,selection:o.state.selection,selectionAsSingle:o.state.selection.asSingle().main,ranges:o.state.selection.ranges,selectionCode:o.state.sliceDoc(o.state.selection.main.from,o.state.selection.main.to),selections:o.state.selection.ranges.map(e=>o.state.sliceDoc(e.from,e.to)),selectedText:o.state.selection.ranges.some(e=>!e.empty)});function useCodeMirror(o){var{value:e,selection:s,onChange:a,onStatistics:c,onCreateEditor:h,onUpdate:d,extensions:g=[],autoFocus:_,theme:b="light",height:$="",minHeight:j="",maxHeight:_e="",placeholder:et="",width:tt="",minWidth:nt="",maxWidth:st="",editable:rt=!0,readOnly:it=!1,indentWithTab:at=!0,basicSetup:ot=!0,root:ut}=o,[ct,ht]=react.exports.useState(),[lt,pt]=react.exports.useState(),[ft,gt]=react.exports.useState(),yt=EditorView.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),mt=EditorView.theme({"&":{height:$,minHeight:j,maxHeight:_e,width:tt,minWidth:nt,maxWidth:st}}),Et=EditorView.updateListener.of(St=>{if(St.docChanged&&typeof a=="function"){var At=St.state.doc,dt=At.toString();a(dt,St)}c&&c(getStatistics(St))}),Ot=[Et,mt];switch(at&&Ot.unshift(keymap.of([indentWithTab])),ot&&(typeof ot=="boolean"?Ot.unshift(basicSetup()):Ot.unshift(basicSetup(ot))),et&&Ot.unshift(placeholder(et)),b){case"light":Ot.push(yt);break;case"dark":Ot.push(oneDark);break;default:Ot.push(b);break}return rt===!1&&Ot.push(EditorView.editable.of(!1)),it&&Ot.push(EditorState.readOnly.of(!0)),d&&typeof d=="function"&&Ot.push(EditorView.updateListener.of(d)),Ot=Ot.concat(g),react.exports.useEffect(()=>{if(ct&&!ft){var St=EditorState.create({doc:e,selection:s,extensions:Ot});if(gt(St),!lt){var At=new EditorView({state:St,parent:ct,root:ut});pt(At),h&&h(At,St)}}return()=>{lt&&(gt(void 0),pt(void 0))}},[ct,ft]),react.exports.useEffect(()=>ht(o.container),[o.container]),react.exports.useEffect(()=>()=>{lt&&(lt.destroy(),pt(void 0))},[lt]),react.exports.useEffect(()=>{_&<&<.focus()},[_,lt]),react.exports.useEffect(()=>{lt&<.dispatch({effects:StateEffect.reconfigure.of(Ot)})},[b,g,$,j,_e,tt,nt,st,et,rt,it,at,ot,a,d]),react.exports.useEffect(()=>{var St=lt?lt.state.doc.toString():"";lt&&e!==St&<.dispatch({changes:{from:0,to:St.length,insert:e||""}})},[e,lt]),{state:ft,setState:gt,view:lt,setView:pt,container:ct,setContainer:ht}}var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var f=react.exports,k=Symbol.for("react.element"),l=Symbol.for("react.fragment"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function q(o,e,s){var a,c={},h=null,d=null;s!==void 0&&(h=""+s),e.key!==void 0&&(h=""+e.key),e.ref!==void 0&&(d=e.ref);for(a in e)m.call(e,a)&&!p.hasOwnProperty(a)&&(c[a]=e[a]);if(o&&o.defaultProps)for(a in e=o.defaultProps,e)c[a]===void 0&&(c[a]=e[a]);return{$$typeof:k,type:o,key:h,ref:d,props:c,_owner:n.current}}reactJsxRuntime_production_min.Fragment=l;reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;(function(o){o.exports=reactJsxRuntime_production_min})(jsxRuntime);const Fragment=jsxRuntime.exports.Fragment,jsx=jsxRuntime.exports.jsx,jsxs=jsxRuntime.exports.jsxs;var _excluded=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root"],ReactCodeMirror=react.exports.forwardRef((o,e)=>{var{className:s,value:a="",selection:c,extensions:h=[],onChange:d,onStatistics:g,onCreateEditor:_,onUpdate:b,autoFocus:$,theme:j="light",height:_e,minHeight:et,maxHeight:tt,width:nt,minWidth:st,maxWidth:rt,basicSetup:it,placeholder:at,indentWithTab:ot,editable:ut,readOnly:ct,root:ht}=o,lt=_objectWithoutPropertiesLoose(o,_excluded),pt=react.exports.useRef(null),{state:ft,view:gt,container:yt,setContainer:mt}=useCodeMirror({container:pt.current,root:ht,value:a,autoFocus:$,theme:j,height:_e,minHeight:et,maxHeight:tt,width:nt,minWidth:st,maxWidth:rt,basicSetup:it,placeholder:at,indentWithTab:ot,editable:ut,readOnly:ct,selection:c,onChange:d,onStatistics:g,onCreateEditor:_,onUpdate:b,extensions:h});if(react.exports.useImperativeHandle(e,()=>({editor:pt.current,state:ft,view:gt}),[pt,yt,ft,gt]),typeof a!="string")throw new Error("value must be typeof string but got "+typeof a);var Et=typeof j=="string"?"cm-theme-"+j:"cm-theme";return jsx("div",_extends({ref:pt,className:""+Et+(s?" "+s:"")},lt))});ReactCodeMirror.displayName="CodeMirror";class Stack{constructor(e,s,a,c,h,d,g,_,b,$=0,j){this.p=e,this.stack=s,this.state=a,this.reducePos=c,this.pos=h,this.score=d,this.buffer=g,this.bufferBase=_,this.curContext=b,this.lookAhead=$,this.parent=j}toString(){return`[${this.stack.filter((e,s)=>s%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,s,a=0){let c=e.parser.context;return new Stack(e,[],s,a,a,0,[],0,c?new StackContext(c,c.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,s){this.stack.push(this.state,s,this.bufferBase+this.buffer.length),this.state=e}reduce(e){let s=e>>19,a=e&65535,{parser:c}=this.p,h=c.dynamicPrecedence(a);if(h&&(this.score+=h),s==0){this.pushState(c.getGoto(this.state,a,!0),this.reducePos),ad;)this.stack.pop();this.reduceContext(a,g)}storeNode(e,s,a,c=4,h=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&d.buffer[g-4]==0&&d.buffer[g-1]>-1){if(s==a)return;if(d.buffer[g-2]>=s){d.buffer[g-2]=a;return}}}if(!h||this.pos==a)this.buffer.push(e,s,a,c);else{let d=this.buffer.length;if(d>0&&this.buffer[d-4]!=0)for(;d>0&&this.buffer[d-2]>a;)this.buffer[d]=this.buffer[d-4],this.buffer[d+1]=this.buffer[d-3],this.buffer[d+2]=this.buffer[d-2],this.buffer[d+3]=this.buffer[d-1],d-=4,c>4&&(c-=4);this.buffer[d]=e,this.buffer[d+1]=s,this.buffer[d+2]=a,this.buffer[d+3]=c}}shift(e,s,a){let c=this.pos;if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let h=e,{parser:d}=this.p;(a>this.pos||s<=d.maxNode)&&(this.pos=a,d.stateFlag(h,1)||(this.reducePos=a)),this.pushState(h,c),this.shiftContext(s,c),s<=d.maxNode&&this.buffer.push(s,c,a,4)}else this.pos=a,this.shiftContext(s,c),s<=this.p.parser.maxNode&&this.buffer.push(s,c,a,4)}apply(e,s,a){e&65536?this.reduce(e):this.shift(e,s,a)}useNode(e,s){let a=this.p.reused.length-1;(a<0||this.p.reused[a]!=e)&&(this.p.reused.push(e),a++);let c=this.pos;this.reducePos=this.pos=c+e.length,this.pushState(s,c),this.buffer.push(a,c,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,s=e.buffer.length;for(;s>0&&e.buffer[s-2]>e.reducePos;)s-=4;let a=e.buffer.slice(s),c=e.bufferBase+s;for(;e&&c==e.bufferBase;)e=e.parent;return new Stack(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,a,c,this.curContext,this.lookAhead,e)}recoverByDelete(e,s){let a=e<=this.p.parser.maxNode;a&&this.storeNode(e,this.pos,s,4),this.storeNode(0,this.pos,s,a?8:4),this.pos=this.reducePos=s,this.score-=190}canShift(e){for(let s=new SimulatedStack(this);;){let a=this.p.parser.stateSlot(s.state,4)||this.p.parser.hasAction(s.state,e);if((a&65536)==0)return!0;if(a==0)return!1;s.reduce(a)}}recoverByInsert(e){if(this.stack.length>=300)return[];let s=this.p.parser.nextStates(this.state);if(s.length>4<<1||this.stack.length>=120){let c=[];for(let h=0,d;h_&1&&g==d)||c.push(s[h],d)}s=c}let a=[];for(let c=0;c>19,c=e&65535,h=this.stack.length-a*3;if(h<0||s.getGoto(this.stack[h],c,!1)<0)return!1;this.storeNode(0,this.reducePos,this.reducePos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let s=0;sthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class StackContext{constructor(e,s){this.tracker=e,this.context=s,this.hash=e.strict?e.hash(s):0}}var Recover;(function(o){o[o.Insert=200]="Insert",o[o.Delete=190]="Delete",o[o.Reduce=100]="Reduce",o[o.MaxNext=4]="MaxNext",o[o.MaxInsertStackDepth=300]="MaxInsertStackDepth",o[o.DampenInsertStackDepth=120]="DampenInsertStackDepth"})(Recover||(Recover={}));class SimulatedStack{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let s=e&65535,a=e>>19;a==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(a-1)*3;let c=this.start.p.parser.getGoto(this.stack[this.base-3],s,!0);this.state=c}}class StackBufferCursor{constructor(e,s,a){this.stack=e,this.pos=s,this.index=a,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,s=e.bufferBase+e.buffer.length){return new StackBufferCursor(e,s,s-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new StackBufferCursor(this.stack,this.pos,this.index)}}class CachedToken{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const nullToken=new CachedToken;class InputStream{constructor(e,s){this.input=e,this.ranges=s,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=nullToken,this.rangeIndex=0,this.pos=this.chunkPos=s[0].from,this.range=s[0],this.end=s[s.length-1].to,this.readNext()}resolveOffset(e,s){let a=this.range,c=this.rangeIndex,h=this.pos+e;for(;ha.to:h>=a.to;){if(c==this.ranges.length-1)return null;let d=this.ranges[++c];h+=d.from-a.to,a=d}return h}peek(e){let s=this.chunkOff+e,a,c;if(s>=0&&s=this.chunk2Pos&&ag.to&&(this.chunk2=this.chunk2.slice(0,g.to-a)),c=this.chunk2.charCodeAt(0)}}return a>=this.token.lookAhead&&(this.token.lookAhead=a+1),c}acceptToken(e,s=0){let a=s?this.resolveOffset(s,-1):this.pos;if(a==null||a=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,s){if(s?(this.token=s,s.start=e,s.lookAhead=e+1,s.value=s.extended=-1):this.token=nullToken,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&s<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,s-this.chunkPos);if(e>=this.chunk2Pos&&s<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,s-this.chunk2Pos);if(e>=this.range.from&&s<=this.range.to)return this.input.read(e,s);let a="";for(let c of this.ranges){if(c.from>=s)break;c.to>e&&(a+=this.input.read(Math.max(c.from,e),Math.min(c.to,s)))}return a}}class TokenGroup{constructor(e,s){this.data=e,this.id=s}token(e,s){readToken(this.data,e,s,this.id)}}TokenGroup.prototype.contextual=TokenGroup.prototype.fallback=TokenGroup.prototype.extend=!1;class ExternalTokenizer{constructor(e,s={}){this.token=e,this.contextual=!!s.contextual,this.fallback=!!s.fallback,this.extend=!!s.extend}}function readToken(o,e,s,a){let c=0,h=1<0){let et=o[_e];if(g.allows(et)&&(e.token.value==-1||e.token.value==et||d.overrides(et,e.token.value))){e.acceptToken(et);break}}let b=e.next,$=0,j=o[c+2];if(e.next<0&&j>$&&o[_+j*3-3]==65535){c=o[_+j*3-1];continue e}for(;$>1,et=_+_e+(_e<<1),tt=o[et],nt=o[et+1];if(b=nt)$=_e+1;else{c=o[et+2],e.advance();continue e}}break}}function decodeArray(o,e=Uint16Array){if(typeof o!="string")return o;let s=null;for(let a=0,c=0;a=92&&d--,d>=34&&d--;let _=d-32;if(_>=46&&(_-=46,g=!0),h+=_,g)break;h*=46}s?s[c++]=h:s=new e(h)}return s}const verbose=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG);let stackIDs=null;var Safety;(function(o){o[o.Margin=25]="Margin"})(Safety||(Safety={}));function cutAt(o,e,s){let a=o.cursor(IterMode.IncludeAnonymous);for(a.moveTo(e);;)if(!(s<0?a.childBefore(e):a.childAfter(e)))for(;;){if((s<0?a.toe)&&!a.type.isError)return s<0?Math.max(0,Math.min(a.to-1,e-25)):Math.min(o.length,Math.max(a.from+1,e+25));if(s<0?a.prevSibling():a.nextSibling())break;if(!a.parent())return s<0?0:o.length}}class FragmentCursor{constructor(e,s){this.fragments=e,this.nodeSet=s,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?cutAt(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?cutAt(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=d,null;if(h instanceof Tree){if(d==e){if(d=Math.max(this.safeFrom,e)&&(this.trees.push(h),this.start.push(d),this.index.push(0))}else this.index[s]++,this.nextStart=d+h.length}}}class TokenCache{constructor(e,s){this.stream=s,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(a=>new CachedToken)}getActions(e){let s=0,a=null,{parser:c}=e.p,{tokenizers:h}=c,d=c.stateSlot(e.state,3),g=e.curContext?e.curContext.hash:0,_=0;for(let b=0;bj.end+25&&(_=Math.max(j.lookAhead,_)),j.value!=0)){let _e=s;if(j.extended>-1&&(s=this.addActions(e,j.extended,j.end,s)),s=this.addActions(e,j.value,j.end,s),!$.extend&&(a=j,s>_e))break}}for(;this.actions.length>s;)this.actions.pop();return _&&e.setLookAhead(_),!a&&e.pos==this.stream.end&&(a=new CachedToken,a.value=e.p.parser.eofTerm,a.start=a.end=e.pos,s=this.addActions(e,a.value,a.end,s)),this.mainToken=a,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let s=new CachedToken,{pos:a,p:c}=e;return s.start=a,s.end=Math.min(a+1,c.stream.end),s.value=a==c.stream.end?c.parser.eofTerm:0,s}updateCachedToken(e,s,a){if(s.token(this.stream.reset(a.pos,e),a),e.value>-1){let{parser:c}=a.p;for(let h=0;h=0&&a.p.parser.dialect.allows(d>>1)){(d&1)==0?e.value=d>>1:e.extended=d>>1;break}}}else e.value=0,e.end=Math.min(a.p.stream.end,a.pos+1)}putAction(e,s,a,c){for(let h=0;he.bufferLength*4?new FragmentCursor(a,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,s=this.minStackPos,a=this.stacks=[],c,h;for(let d=0;ds)a.push(g);else{if(this.advanceStack(g,a,e))continue;{c||(c=[],h=[]),c.push(g);let _=this.tokens.getMainToken(g);h.push(_.value,_.end)}}break}}if(!a.length){let d=c&&findFinished(c);if(d)return this.stackToTree(d);if(this.parser.strict)throw verbose&&c&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+s);this.recovering||(this.recovering=5)}if(this.recovering&&c){let d=this.stoppedAt!=null&&c[0].pos>this.stoppedAt?c[0]:this.runRecovery(c,h,a);if(d)return this.stackToTree(d.forceAll())}if(this.recovering){let d=this.recovering==1?1:this.recovering*3;if(a.length>d)for(a.sort((g,_)=>_.score-g.score);a.length>d;)a.pop();a.some(g=>g.reducePos>s)&&this.recovering--}else if(a.length>1){e:for(let d=0;d500&&b.buffer.length>500)if((g.score-b.score||g.buffer.length-b.buffer.length)>0)a.splice(_--,1);else{a.splice(d--,1);continue e}}}}this.minStackPos=a[0].pos;for(let d=1;d ":"";if(this.stoppedAt!=null&&c>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let b=e.curContext&&e.curContext.tracker.strict,$=b?e.curContext.hash:0;for(let j=this.fragments.nodeAt(c);j;){let _e=this.parser.nodeSet.types[j.type.id]==j.type?h.getGoto(e.state,j.type.id):-1;if(_e>-1&&j.length&&(!b||(j.prop(NodeProp.contextHash)||0)==$))return e.useNode(j,_e),verbose&&console.log(d+this.stackID(e)+` (via reuse of ${h.getName(j.type.id)})`),!0;if(!(j instanceof Tree)||j.children.length==0||j.positions[0]>0)break;let et=j.children[0];if(et instanceof Tree&&j.positions[0]==0)j=et;else break}}let g=h.stateSlot(e.state,4);if(g>0)return e.reduce(g),verbose&&console.log(d+this.stackID(e)+` (via always-reduce ${h.getName(g&65535)})`),!0;if(e.stack.length>=15e3)for(;e.stack.length>9e3&&e.forceReduce(););let _=this.tokens.getActions(e);for(let b=0;b<_.length;){let $=_[b++],j=_[b++],_e=_[b++],et=b==_.length||!a,tt=et?e:e.split();if(tt.apply($,j,_e),verbose&&console.log(d+this.stackID(tt)+` (via ${($&65536)==0?"shift":`reduce of ${h.getName($&65535)}`} for ${h.getName(j)} @ ${c}${tt==e?"":", split"})`),et)return!0;tt.pos>c?s.push(tt):a.push(tt)}return!1}advanceFully(e,s){let a=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>a)return pushStackDedup(e,s),!0}}runRecovery(e,s,a){let c=null,h=!1;for(let d=0;d ":"";if(g.deadEnd&&(h||(h=!0,g.restart(),verbose&&console.log($+this.stackID(g)+" (restarted)"),this.advanceFully(g,a))))continue;let j=g.split(),_e=$;for(let et=0;j.forceReduce()&&et<10&&(verbose&&console.log(_e+this.stackID(j)+" (via force-reduce)"),!this.advanceFully(j,a));et++)verbose&&(_e=this.stackID(j)+" -> ");for(let et of g.recoverByInsert(_))verbose&&console.log($+this.stackID(et)+" (via recover-insert)"),this.advanceFully(et,a);this.stream.end>g.pos?(b==g.pos&&(b++,_=0),g.recoverByDelete(_,b),verbose&&console.log($+this.stackID(g)+` (via recover-delete ${this.parser.getName(_)})`),pushStackDedup(g,a)):(!c||c.scoreo;class ContextTracker{constructor(e){this.start=e.start,this.shift=e.shift||id,this.reduce=e.reduce||id,this.reuse=e.reuse||id,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class LRParser extends Parser{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (${14})`);let s=e.nodeNames.split(" ");this.minRepeatTerm=s.length;for(let g=0;ge.topRules[g][1]),c=[];for(let g=0;g=0)h($,_,g[b++]);else{let j=g[b+-$];for(let _e=-$;_e>0;_e--)h(g[b++],_,j);b++}}}this.nodeSet=new NodeSet(s.map((g,_)=>NodeType.define({name:_>=this.minRepeatTerm?void 0:g,id:_,props:c[_],top:a.indexOf(_)>-1,error:_==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(_)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=DefaultBufferLength;let d=decodeArray(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let g=0;gtypeof g=="number"?new TokenGroup(d,g):g),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,s,a){let c=new Parse(this,e,s,a);for(let h of this.wrappers)c=h(c,e,s,a);return c}getGoto(e,s,a=!1){let c=this.goto;if(s>=c[0])return-1;for(let h=c[s+1];;){let d=c[h++],g=d&1,_=c[h++];if(g&&a)return _;for(let b=h+(d>>1);h0}validAction(e,s){if(s==this.stateSlot(e,4))return!0;for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else return!1;if(s==pair(this.data,a+1))return!0}}nextStates(e){let s=[];for(let a=this.stateSlot(e,1);;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pair(this.data,a+2);else break;if((this.data[a+2]&1)==0){let c=this.data[a+1];s.some((h,d)=>d&1&&h==c)||s.push(this.data[a],c)}}return s}overrides(e,s){let a=findOffset(this.data,this.tokenPrecTable,s);return a<0||findOffset(this.data,this.tokenPrecTable,e){let c=e.tokenizers.find(h=>h.from==a);return c?c.to:a})),e.specializers&&(s.specializers=this.specializers.slice(),s.specializerSpecs=this.specializerSpecs.map((a,c)=>{let h=e.specializers.find(g=>g.from==a.external);if(!h)return a;let d=Object.assign(Object.assign({},a),{external:h.to});return s.specializers[c]=getSpecializer(d),d})),e.contextTracker&&(s.context=e.contextTracker),e.dialect&&(s.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(s.strict=e.strict),e.wrap&&(s.wrappers=s.wrappers.concat(e.wrap)),e.bufferLength!=null&&(s.bufferLength=e.bufferLength),s}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let s=this.dynamicPrecedences;return s==null?0:s[e]||0}parseDialect(e){let s=Object.keys(this.dialects),a=s.map(()=>!1);if(e)for(let h of e.split(" ")){let d=s.indexOf(h);d>=0&&(a[d]=!0)}let c=null;for(let h=0;ha)&&s.p.parser.stateFlag(s.state,2)&&(!e||e.scoreo.external(s,a)<<1|e}return o.get}const TSExtends=1,noSemi=281,incdec=2,incdecPrefix=3,templateContent=282,InterpolationStart=4,templateEnd=283,insertSemi=284,spaces=286,newline=287,LineComment=5,BlockComment=6,Dialect_ts=1,space=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288],braceR=125,braceL=123,semicolon=59,slash=47,star=42,plus=43,minus=45,dollar=36,backtick=96,backslash=92,trackNewline=new ContextTracker({start:!1,shift(o,e){return e==LineComment||e==BlockComment||e==spaces?o:e==newline},strict:!1}),insertSemicolon=new ExternalTokenizer((o,e)=>{let{next:s}=o;(s==braceR||s==-1||e.context)&&e.canShift(insertSemi)&&o.acceptToken(insertSemi)},{contextual:!0,fallback:!0}),noSemicolon=new ExternalTokenizer((o,e)=>{let{next:s}=o,a;space.indexOf(s)>-1||s==slash&&((a=o.peek(1))==slash||a==star)||s!=braceR&&s!=semicolon&&s!=-1&&!e.context&&e.canShift(noSemi)&&o.acceptToken(noSemi)},{contextual:!0}),incdecToken=new ExternalTokenizer((o,e)=>{let{next:s}=o;if((s==plus||s==minus)&&(o.advance(),s==o.next)){o.advance();let a=!e.context&&e.canShift(incdec);o.acceptToken(a?incdec:incdecPrefix)}},{contextual:!0}),template=new ExternalTokenizer(o=>{for(let e=!1,s=0;;s++){let{next:a}=o;if(a<0){s&&o.acceptToken(templateContent);break}else if(a==backtick){s?o.acceptToken(templateContent):o.acceptToken(templateEnd,1);break}else if(a==braceL&&e){s==1?o.acceptToken(InterpolationStart,1):o.acceptToken(templateContent,-1);break}else if(a==10&&s){o.advance(),o.acceptToken(templateContent);break}else a==backslash&&o.advance();e=a==dollar,o.advance()}}),tsExtends=new ExternalTokenizer((o,e)=>{if(!(o.next!=101||!e.dialectEnabled(Dialect_ts))){o.advance();for(let s=0;s<6;s++){if(o.next!="xtends".charCodeAt(s))return;o.advance()}o.next>=57&&o.next<=65||o.next>=48&&o.next<=90||o.next==95||o.next>=97&&o.next<=122||o.next>160||o.acceptToken(TSExtends)}}),jsHighlight=styleTags({"get set async static":tags.modifier,"for while do if else switch try catch finally return throw break continue default case":tags.controlKeyword,"in of await yield void typeof delete instanceof":tags.operatorKeyword,"let var const function class extends":tags.definitionKeyword,"import export from":tags.moduleKeyword,"with debugger as new":tags.keyword,TemplateString:tags.special(tags.string),super:tags.atom,BooleanLiteral:tags.bool,this:tags.self,null:tags.null,Star:tags.modifier,VariableName:tags.variableName,"CallExpression/VariableName TaggedTemplateExpression/VariableName":tags.function(tags.variableName),VariableDefinition:tags.definition(tags.variableName),Label:tags.labelName,PropertyName:tags.propertyName,PrivatePropertyName:tags.special(tags.propertyName),"CallExpression/MemberExpression/PropertyName":tags.function(tags.propertyName),"FunctionDeclaration/VariableDefinition":tags.function(tags.definition(tags.variableName)),"ClassDeclaration/VariableDefinition":tags.definition(tags.className),PropertyDefinition:tags.definition(tags.propertyName),PrivatePropertyDefinition:tags.definition(tags.special(tags.propertyName)),UpdateOp:tags.updateOperator,LineComment:tags.lineComment,BlockComment:tags.blockComment,Number:tags.number,String:tags.string,ArithOp:tags.arithmeticOperator,LogicOp:tags.logicOperator,BitOp:tags.bitwiseOperator,CompareOp:tags.compareOperator,RegExp:tags.regexp,Equals:tags.definitionOperator,Arrow:tags.function(tags.punctuation),": Spread":tags.punctuation,"( )":tags.paren,"[ ]":tags.squareBracket,"{ }":tags.brace,"InterpolationStart InterpolationEnd":tags.special(tags.brace),".":tags.derefOperator,", ;":tags.separator,TypeName:tags.typeName,TypeDefinition:tags.definition(tags.typeName),"type enum interface implements namespace module declare":tags.definitionKeyword,"abstract global Privacy readonly override":tags.modifier,"is keyof unique infer":tags.operatorKeyword,JSXAttributeValue:tags.attributeValue,JSXText:tags.content,"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag":tags.angleBracket,"JSXIdentifier JSXNameSpacedName":tags.tagName,"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName":tags.attributeName}),spec_identifier={__proto__:null,export:18,as:23,from:29,default:32,async:37,function:38,this:48,true:56,false:56,void:66,typeof:70,null:86,super:88,new:122,await:139,yield:141,delete:142,class:152,extends:154,public:197,private:197,protected:197,readonly:199,instanceof:220,in:222,const:224,import:256,keyof:307,unique:311,infer:317,is:351,abstract:371,implements:373,type:375,let:378,var:380,interface:387,enum:391,namespace:397,module:399,declare:403,global:407,for:428,of:437,while:440,with:444,do:448,if:452,else:454,switch:458,case:464,try:470,catch:474,finally:478,return:482,throw:486,break:490,continue:494,debugger:498},spec_word={__proto__:null,async:109,get:111,set:113,public:161,private:161,protected:161,static:163,abstract:165,override:167,readonly:173,new:355},spec_LessThan={__proto__:null,"<":129},parser=LRParser.deserialize({version:14,states:"$8SO`QdOOO'QQ(C|O'#ChO'XOWO'#DVO)dQdO'#D]O)tQdO'#DhO){QdO'#DrO-xQdO'#DxOOQO'#E]'#E]O.]Q`O'#E[O.bQ`O'#E[OOQ(C['#Ef'#EfO0aQ(C|O'#ItO2wQ(C|O'#IuO3eQ`O'#EzO3jQ!bO'#FaOOQ(C['#FS'#FSO3rO#tO'#FSO4QQ&jO'#FhO5bQ`O'#FgOOQ(C['#Iu'#IuOOQ(CW'#It'#ItOOQS'#J^'#J^O5gQ`O'#HpO5lQ(ChO'#HqOOQS'#Ih'#IhOOQS'#Hr'#HrQ`QdOOO){QdO'#DjO5tQ`O'#G[O5yQ&jO'#CmO6XQ`O'#EZO6dQ`O'#EgO6iQ,UO'#FRO7TQ`O'#G[O7YQ`O'#G`O7eQ`O'#G`O7sQ`O'#GcO7sQ`O'#GdO7sQ`O'#GfO5tQ`O'#GiO8dQ`O'#GlO9rQ`O'#CdO:SQ`O'#GyO:[Q`O'#HPO:[Q`O'#HRO`QdO'#HTO:[Q`O'#HVO:[Q`O'#HYO:aQ`O'#H`O:fQ(CjO'#HfO){QdO'#HhO:qQ(CjO'#HjO:|Q(CjO'#HlO5lQ(ChO'#HnO){QdO'#DWOOOW'#Ht'#HtO;XOWO,59qOOQ(C[,59q,59qO=jQtO'#ChO=tQdO'#HuO>XQ`O'#IvO@WQtO'#IvO'dQdO'#IvO@_Q`O,59wO@uQ7[O'#DbOAnQ`O'#E]OA{Q`O'#JROBWQ`O'#JQOBWQ`O'#JQOB`Q`O,5:yOBeQ`O'#JPOBlQaO'#DyO5yQ&jO'#EZOBzQ`O'#EZOCVQpO'#FROOQ(C[,5:S,5:SOC_QdO,5:SOE]Q(C|O,5:^OEyQ`O,5:dOFdQ(ChO'#JOO7YQ`O'#I}OFkQ`O'#I}OFsQ`O,5:xOFxQ`O'#I}OGWQdO,5:vOIWQ&jO'#EWOJeQ`O,5:vOKwQ&jO'#DlOLOQdO'#DqOLYQ7[O,5;PO){QdO,5;POOQS'#Er'#ErOOQS'#Et'#EtO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;RO){QdO,5;ROOQS'#Ex'#ExOLbQdO,5;cOOQ(C[,5;h,5;hOOQ(C[,5;i,5;iONbQ`O,5;iOOQ(C[,5;j,5;jO){QdO'#IPONgQ(ChO,5[OOQS'#Ik'#IkOOQS,5>],5>]OOQS-E;p-E;pO!+kQ(C|O,5:UOOQ(CX'#Cp'#CpO!,[Q&kO,5Q,5>QO){QdO,5>QO5lQ(ChO,5>SOOQS,5>U,5>UO!8cQ`O,5>UOOQS,5>W,5>WO!8cQ`O,5>WOOQS,5>Y,5>YO!8hQpO,59rOOOW-E;r-E;rOOQ(C[1G/]1G/]O!8mQtO,5>aO'dQdO,5>aOOQO,5>f,5>fO!8wQdO'#HuOOQO-E;s-E;sO!9UQ`O,5?bO!9^QtO,5?bO!9eQ`O,5?lOOQ(C[1G/c1G/cO!9mQ!bO'#DTOOQO'#Ix'#IxO){QdO'#IxO!:[Q!bO'#IxO!:yQ!bO'#DcO!;[Q7[O'#DcO!=gQdO'#DcO!=nQ`O'#IwO!=vQ`O,59|O!={Q`O'#EaO!>ZQ`O'#JSO!>cQ`O,5:zO!>yQ7[O'#DcO){QdO,5?mO!?TQ`O'#HzOOQO-E;x-E;xO!9eQ`O,5?lOOQ(CW1G0e1G0eO!@aQ7[O'#D|OOQ(C[,5:e,5:eO){QdO,5:eOIWQ&jO,5:eO!@hQaO,5:eO:aQ`O,5:uO!-OQ!bO,5:uO!-WQ&jO,5:uO5yQ&jO,5:uOOQ(C[1G/n1G/nOOQ(C[1G0O1G0OOOQ(CW'#EV'#EVO){QdO,5?jO!@sQ(ChO,5?jO!AUQ(ChO,5?jO!A]Q`O,5?iO!AeQ`O'#H|O!A]Q`O,5?iOOQ(CW1G0d1G0dO7YQ`O,5?iOOQ(C[1G0b1G0bO!BPQ(C|O1G0bO!CRQ(CyO,5:rOOQ(C]'#Fq'#FqO!CoQ(C}O'#IqOGWQdO1G0bO!EqQ,VO'#IyO!E{Q`O,5:WO!FQQtO'#IzO){QdO'#IzO!F[Q`O,5:]OOQ(C]'#DT'#DTOOQ(C[1G0k1G0kO!FaQ`O1G0kO!HrQ(C|O1G0mO!HyQ(C|O1G0mO!K^Q(C|O1G0mO!KeQ(C|O1G0mO!MlQ(C|O1G0mO!NPQ(C|O1G0mO#!pQ(C|O1G0mO#!wQ(C|O1G0mO#%[Q(C|O1G0mO#%cQ(C|O1G0mO#'WQ(C|O1G0mO#*QQMlO'#ChO#+{QMlO1G0}O#-vQMlO'#IuOOQ(C[1G1T1G1TO#.ZQ(C|O,5>kOOQ(CW-E;}-E;}O#.zQ(C}O1G0mOOQ(C[1G0m1G0mO#1PQ(C|O1G1QO#1pQ!bO,5;sO#1uQ!bO,5;tO#1zQ!bO'#F[O#2`Q`O'#FZOOQO'#JW'#JWOOQO'#H}'#H}O#2eQ!bO1G1]OOQ(C[1G1]1G1]OOOO1G1f1G1fO#2sQMlO'#ItO#2}Q`O,5;}OLbQdO,5;}OOOO-E;|-E;|OOQ(C[1G1Y1G1YOOQ(C[,5PQtO1G1VOOQ(C[1G1X1G1XO5tQ`O1G2}O#>WQ`O1G2}O#>]Q`O1G2}O#>bQ`O1G2}OOQS1G2}1G2}O#>gQ&kO1G2bO7YQ`O'#JQO7YQ`O'#EaO7YQ`O'#IWO#>xQ(ChO,5?yOOQS1G2f1G2fO!0VQ`O1G2lOIWQ&jO1G2iO#?TQ`O1G2iOOQS1G2j1G2jOIWQ&jO1G2jO#?YQaO1G2jO#?bQ7[O'#GhOOQS1G2l1G2lO!'VQ7[O'#IYO!0[QpO1G2oOOQS1G2o1G2oOOQS,5=Y,5=YO#?jQ&kO,5=[O5tQ`O,5=[O#6SQ`O,5=_O5bQ`O,5=_O!-OQ!bO,5=_O!-WQ&jO,5=_O5yQ&jO,5=_O#?{Q`O'#JaO#@WQ`O,5=`OOQS1G.j1G.jO#@]Q(ChO1G.jO#@hQ`O1G.jO#@mQ`O1G.jO5lQ(ChO1G.jO#@uQtO,5@OO#APQ`O,5@OO#A[QdO,5=gO#AcQ`O,5=gO7YQ`O,5@OOOQS1G3P1G3PO`QdO1G3POOQS1G3V1G3VOOQS1G3X1G3XO:[Q`O1G3ZO#AhQdO1G3]O#EcQdO'#H[OOQS1G3`1G3`O#EpQ`O'#HbO:aQ`O'#HdOOQS1G3f1G3fO#ExQdO1G3fO5lQ(ChO1G3lOOQS1G3n1G3nOOQ(CW'#Fx'#FxO5lQ(ChO1G3pO5lQ(ChO1G3rOOOW1G/^1G/^O#IvQpO,5aO#JYQ`O1G4|O#JbQ`O1G5WO#JjQ`O,5?dOLbQdO,5:{O7YQ`O,5:{O:aQ`O,59}OLbQdO,59}O!-OQ!bO,59}O#JoQMlO,59}OOQO,5:{,5:{O#JyQ7[O'#HvO#KaQ`O,5?cOOQ(C[1G/h1G/hO#KiQ7[O'#H{O#K}Q`O,5?nOOQ(CW1G0f1G0fO!;[Q7[O,59}O#LVQtO1G5XO7YQ`O,5>fOOQ(CW'#ES'#ESO#LaQ(DjO'#ETO!@XQ7[O'#D}OOQO'#Hy'#HyO#L{Q7[O,5:hOOQ(C[,5:h,5:hO#MSQ7[O'#D}O#MeQ7[O'#D}O#MlQ7[O'#EYO#MoQ7[O'#ETO#M|Q7[O'#ETO!@XQ7[O'#ETO#NaQ`O1G0PO#NfQqO1G0POOQ(C[1G0P1G0PO){QdO1G0POIWQ&jO1G0POOQ(C[1G0a1G0aO:aQ`O1G0aO!-OQ!bO1G0aO!-WQ&jO1G0aO#NmQ(C|O1G5UO){QdO1G5UO#N}Q(ChO1G5UO$ `Q`O1G5TO7YQ`O,5>hOOQO,5>h,5>hO$ hQ`O,5>hOOQO-E;z-E;zO$ `Q`O1G5TO$ vQ(C}O,59jO$#xQ(C}O,5m,5>mO$-rQ`O,5>mOOQ(C]1G2P1G2PP$-wQ`O'#IRPOQ(C]-Eo,5>oOOQO-Ep,5>pOOQO-Ex,5>xOOQO-E<[-E<[OOQ(C[7+&q7+&qO$6OQ`O7+(iO5lQ(ChO7+(iO5tQ`O7+(iO$6TQ`O7+(iO$6YQaO7+'|OOQ(CW,5>r,5>rOOQ(CW-Et,5>tOOQO-EO,5>OOOQS7+)Q7+)QOOQS7+)W7+)WOOQS7+)[7+)[OOQS7+)^7+)^OOQO1G5O1G5OO$:nQMlO1G0gO$:xQ`O1G0gOOQO1G/i1G/iO$;TQMlO1G/iO:aQ`O1G/iOLbQdO'#DcOOQO,5>b,5>bOOQO-E;t-E;tOOQO,5>g,5>gOOQO-E;y-E;yO!-OQ!bO1G/iO:aQ`O,5:iOOQO,5:o,5:oO){QdO,5:oO$;_Q(ChO,5:oO$;jQ(ChO,5:oO!-OQ!bO,5:iOOQO-E;w-E;wOOQ(C[1G0S1G0SO!@XQ7[O,5:iO$;xQ7[O,5:iO$PQ`O7+*oO$>XQ(C}O1G2[O$@^Q(C}O1G2^O$BcQ(C}O1G1yO$DnQ,VO,5>cOOQO-E;u-E;uO$DxQtO,5>dO){QdO,5>dOOQO-E;v-E;vO$ESQ`O1G5QO$E[QMlO1G0bO$GcQMlO1G0mO$GjQMlO1G0mO$IkQMlO1G0mO$IrQMlO1G0mO$KgQMlO1G0mO$KzQMlO1G0mO$NXQMlO1G0mO$N`QMlO1G0mO%!aQMlO1G0mO%!hQMlO1G0mO%$]QMlO1G0mO%$pQ(C|O<kOOOO7+'T7+'TOOOW1G/R1G/ROOQ(C]1G4X1G4XOJjQ&jO7+'zO%*VQ`O,5>lO5tQ`O,5>lOOQO-EnO%+dQ`O,5>nOIWQ&jO,5>nOOQO-Ew,5>wO%.vQ`O,5>wO%.{Q`O,5>wOOQO-EvOOQO-EqOOQO-EsOOQO-E{AN>{OOQOAN>uAN>uO%3rQ(C|OAN>{O:aQ`OAN>uO){QdOAN>{O!-OQ!bOAN>uO&)wQ(ChOAN>{O&*SQ(C}OG26lOOQ(CWG26bG26bOOQS!$( t!$( tOOQO<QQ`O'#E[O&>YQ`O'#EzO&>_Q`O'#EgO&>dQ`O'#JRO&>oQ`O'#JPO&>zQ`O,5:vO&?PQ,VO,5aO!O&PO~Ox&SO!W&^O!X&VO!Y&VO'^$dO~O]&TOk&TO!Q&WO'g&QO!S'kP!S'vP~P@dO!O'sX!R'sX!]'sX!c'sX'p'sX~O!{'sX#W#PX!S'sX~PA]O!{&_O!O'uX!R'uX~O!R&`O!O'tX~O!O&cO~O!{#eO~PA]OP&gO!T&dO!o&fO']$bO~Oc&lO!d$ZO']$bO~Ou$oO!d$nO~O!S&mO~P`Ou!{Ov!{Ox!|O!b!yO!d!zO'fQOQ!faZ!faj!fa!R!fa!a!fa!j!fa#[!fa#]!fa#^!fa#_!fa#`!fa#a!fa#b!fa#c!fa#e!fa#g!fa#i!fa#j!fa'p!fa'w!fa'x!fa~O_!fa'W!fa!O!fa!c!fan!fa!T!fa%Q!fa!]!fa~PCfO!c&nO~O!]!wO!{&pO'p&oO!R'rX_'rX'W'rX~O!c'rX~PFOO!R&tO!c'qX~O!c&vO~Ox$uO!T$vO#V&wO']$bO~OQTORTO]cOb!kOc!jOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!TSO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!n!iO#t!lO#x^O']9aO'fQO'oYO'|aO~O]#qOh$QOj#rOk#qOl#qOq$ROs9tOx#yO!T#zO!_;eO!d#vO#V9}O#t$VO$_9wO$a9zO$d$WO']&{O'b$PO'f#sO~O#W&}O~O]#qOh$QOj#rOk#qOl#qOq$ROs$SOx#yO!T#zO!_$XO!d#vO#V$YO#t$VO$_$TO$a$UO$d$WO']&{O'b$PO'f#sO~O'a'mP~PJjO!Q'RO!c'nP~P){O'g'TO'oYO~OQ9^OR9^O]cOb;`Oc!jOhcOj9^OkcOlcOq9^Os9^OxRO{cO|cO}cO!T!bO!_9`O!dUO!g9^O!h9^O!i9^O!j9^O!k9^O!n!iO#t!lO#x^O']'cO'fQO'oYO'|;^O~O!d!zO~O!R#bO_$]a'W$]a!c$]a!O$]a!T$]a%Q$]a!]$]a~O#d'jO~PIWO!]'lO!T'yX#w'yX#z'yX$R'yX~Ou'mO~P! YOu'mO!T'yX#w'yX#z'yX$R'yX~O!T'oO#w'sO#z'nO$R'tO~O!Q'wO~PLbO#z#fO$R'zO~OP$eXu$eXx$eX!b$eX'w$eX'x$eX~OPfX!RfX!{fX'afX'a$eX~P!!rOk'|O~OS'}O'U(OO'V(QO~OP(ZOu(SOx(TO'w(VO'x(XO~O'a(RO~P!#{O'a([O~O]#qOh$QOj#rOk#qOl#qOq$ROs9tOx#yO!T#zO!_;eO!d#vO#V9}O#t$VO$_9wO$a9zO$d$WO'b$PO'f#sO~O!Q(`O'](]O!c'}P~P!$jO#W(bO~O!d(cO~O!Q(hO'](eO!O(OP~P!$jOj(uOx(mO!W(sO!X(lO!Y(lO!d(cO!x(tO$w(oO'^$dO'g(jO~O!S(rO~P!&jO!b!yOP'eXu'eXx'eX'w'eX'x'eX!R'eX!{'eX~O'a'eX#m'eX~P!'cOP(xO!{(wO!R'dX'a'dX~O!R(yO'a'cX~O']${O'a'cP~O'](|O~O!d)RO~O']&{O~Ox$uO!Q!rO!T$vO#U!uO#V!rO']$bO!c'qP~O!]!wO#W)VO~OQ#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO#j#ZO'fQO'p#[O'w!}O'x#OO~O_!^a!R!^a'W!^a!O!^a!c!^an!^a!T!^a%Q!^a!]!^a~P!)wOP)_O!T&dO!o)^O%Q)]O'b$PO~O!])aO!T'`X_'`X!R'`X'W'`X~O!d$ZO'b$PO~O!d$ZO']$bO'b$PO~O!]!wO#W&}O~O])lO%R)mO'])iO!S(VP~O!R)nO^(UX~O'g'TO~OZ)rO~O^)sO~O!T$lO']$bO'^$dO^(UP~Ox$uO!Q)xO!R&`O!T$vO']$bO!O'tP~O]&ZOk&ZO!Q)yO'g'TO!S'vP~O!R)zO_(RX'W(RX~O!{*OO'b$PO~OP*RO!T#zO'b$PO~O!T*TO~Ou*VO!TSO~O!n*[O~Oc*aO~O'](|O!S(TP~Oc$jO~O%RtO']${O~P8wOZ*gO^*fO~OQTORTO]cObnOcmOhcOjTOkcOlcOqTOsTOxRO{cO|cO}cO!_kO!dUO!gTO!hTO!iTO!jTO!kTO!nlO#x^O%PqO'fQO'oYO'|aO~O!T!bO#t!lO']9aO~P!1_O^*fO_$^O'W$^O~O_*kO#d*mO%T*mO%U*mO~P){O!d%`O~O%t*rO~O!T*tO~O&V*vO&X*wOQ&SaR&SaX&Sa]&Sa_&Sab&Sac&Sah&Saj&Sak&Sal&Saq&Sas&Sax&Sa{&Sa|&Sa}&Sa!T&Sa!_&Sa!d&Sa!g&Sa!h&Sa!i&Sa!j&Sa!k&Sa!n&Sa#d&Sa#t&Sa#x&Sa%P&Sa%R&Sa%T&Sa%U&Sa%X&Sa%Z&Sa%^&Sa%_&Sa%a&Sa%n&Sa%t&Sa%v&Sa%x&Sa%z&Sa%}&Sa&T&Sa&Z&Sa&]&Sa&_&Sa&a&Sa&c&Sa'S&Sa']&Sa'f&Sa'o&Sa'|&Sa!S&Sa%{&Sa`&Sa&Q&Sa~O']*|O~On+PO~O!O&ia!R&ia~P!)wO!Q+TO!O&iX!R&iX~P){O!R%zO!O'ja~O!O'ja~P>aO!R&`O!O'ta~O!RwX!R!ZX!SwX!S!ZX!]wX!]!ZX!d!ZX!{wX'b!ZX~O!]+YO!{+XO!R#TX!R'lX!S#TX!S'lX!]'lX!d'lX'b'lX~O!]+[O!d$ZO'b$PO!R!VX!S!VX~O]&ROk&ROx&SO'g(jO~OQ9^OR9^O]cOb;`Oc!jOhcOj9^OkcOlcOq9^Os9^OxRO{cO|cO}cO!T!bO!_9`O!dUO!g9^O!h9^O!i9^O!j9^O!k9^O!n!iO#t!lO#x^O'fQO'oYO'|;^O~O']:SO~P!;jO!R+`O!S'kX~O!S+bO~O!]+YO!{+XO!R#TX!S#TX~O!R+cO!S'vX~O!S+eO~O]&ROk&ROx&SO'^$dO'g(jO~O!X+fO!Y+fO~P!>hOx$uO!Q+hO!T$vO']$bO!O&nX!R&nX~O_+lO!W+oO!X+kO!Y+kO!r+sO!s+qO!t+rO!u+pO!x+tO'^$dO'g(jO'o+iO~O!S+nO~P!?iOP+yO!T&dO!o+xO~O!{,PO!R'ra!c'ra_'ra'W'ra~O!]!wO~P!@sO!R&tO!c'qa~Ox$uO!Q,SO!T$vO#U,UO#V,SO']$bO!R&pX!c&pX~O_#Oi!R#Oi'W#Oi!O#Oi!c#Oin#Oi!T#Oi%Q#Oi!]#Oi~P!)wOP;tOu(SOx(TO'w(VO'x(XO~O#W!za!R!za!c!za!{!za!T!za_!za'W!za!O!za~P!BpO#W'eXQ'eXZ'eX_'eXj'eXv'eX!a'eX!d'eX!j'eX#['eX#]'eX#^'eX#_'eX#`'eX#a'eX#b'eX#c'eX#e'eX#g'eX#i'eX#j'eX'W'eX'f'eX'p'eX!c'eX!O'eX!T'eXn'eX%Q'eX!]'eX~P!'cO!R,_O'a'mX~P!#{O'a,aO~O!R,bO!c'nX~P!)wO!c,eO~O!O,fO~OQ#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'fQOZ#Zi_#Zij#Zi!R#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'W#Zi'p#Zi'w#Zi'x#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O#[#Zi~P!FfO#[#PO~P!FfOQ#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO'fQOZ#Zi_#Zi!R#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'W#Zi'p#Zi'w#Zi'x#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~Oj#Zi~P!IQOj#RO~P!IQOQ#^Oj#ROu!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO'fQO_#Zi!R#Zi#e#Zi#g#Zi#i#Zi#j#Zi'W#Zi'p#Zi'w#Zi'x#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P!KlOZ#dO!a#TO#a#TO#b#TO#c#TO~P!KlOQ#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO'fQO_#Zi!R#Zi#g#Zi#i#Zi#j#Zi'W#Zi'p#Zi'x#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'w#Zi~P!NdO'w!}O~P!NdOQ#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO'fQO'w!}O_#Zi!R#Zi#i#Zi#j#Zi'W#Zi'p#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~O'x#Zi~P##OO'x#OO~P##OOQ#^OZ#dOj#ROu!{Ov!{Ox!|O!a#TO!b!yO!d!zO!j#^O#[#PO#]#QO#^#QO#_#QO#`#SO#a#TO#b#TO#c#TO#e#UO#g#WO#i#YO'fQO'w!}O'x#OO~O_#Zi!R#Zi#j#Zi'W#Zi'p#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P#%jOQ[XZ[Xj[Xu[Xv[Xx[X!a[X!b[X!d[X!j[X!{[X#WdX#[[X#][X#^[X#_[X#`[X#a[X#b[X#c[X#e[X#g[X#i[X#j[X#o[X'f[X'p[X'w[X'x[X!R[X!S[X~O#m[X~P#'}OQ#^OZ9rOj9gOu!{Ov!{Ox!|O!a9iO!b!yO!d!zO!j#^O#[9eO#]9fO#^9fO#_9fO#`9hO#a9iO#b9iO#c9iO#e9jO#g9lO#i9nO#j9oO'fQO'p#[O'w!}O'x#OO~O#m,hO~P#*XOQ'iXZ'iXj'iXu'iXv'iXx'iX!a'iX!b'iX!d'iX!j'iX#['iX#]'iX#^'iX#_'iX#`'iX#a'iX#b'iX#e'iX#g'iX#i'iX#j'iX'f'iX'p'iX'w'iX'x'iX!R'iX~O!{9sO#o9sO#c'iX#m'iX!S'iX~P#,SO_&sa!R&sa'W&sa!c&san&sa!O&sa!T&sa%Q&sa!]&sa~P!)wOQ#ZiZ#Zi_#Zij#Ziv#Zi!R#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi'W#Zi'f#Zi'p#Zi!O#Zi!c#Zin#Zi!T#Zi%Q#Zi!]#Zi~P!BpO_#ni!R#ni'W#ni!O#ni!c#nin#ni!T#ni%Q#ni!]#ni~P!)wO#z,jO~O#z,kO~O!]'lO!{,lO!T$OX#w$OX#z$OX$R$OX~O!Q,mO~O!T'oO#w,oO#z'nO$R,pO~O!R9pO!S'hX~P#*XO!S,qO~O$R,sO~OS'}O'U(OO'V,vO~O],yOk,yO!O,zO~O!RdX!]dX!cdX!c$eX'pdX~P!!rO!c-QO~P!BpO!R-RO!]!wO'p&oO!c'}X~O!c-WO~O!Q(`O']$bO!c'}P~O#W-YO~O!O$eX!R$eX!]$lX~P!!rO!R-ZO!O(OX~P!BpO!]-]O~O!O-_O~Oj-cO!]!wO!d$ZO'b$PO'p&oO~O!])aO~O_$^O!R-hO'W$^O~O!S-jO~P!&jO!X-kO!Y-kO'^$dO'g(jO~Ox-mO'g(jO~O!x-nO~O']${O!R&xX'a&xX~O!R(yO'a'ca~O'a-sO~Ou-tOv-tOx-uOPra'wra'xra!Rra!{ra~O'ara#mra~P#7pOu(SOx(TOP$^a'w$^a'x$^a!R$^a!{$^a~O'a$^a#m$^a~P#8fOu(SOx(TOP$`a'w$`a'x$`a!R$`a!{$`a~O'a$`a#m$`a~P#9XO]-vO~O#W-wO~O'a$na!R$na!{$na#m$na~P!#{O#W-zO~OP.TO!T&dO!o.SO%Q.RO~O]#qOj#rOk#qOl#qOq$ROs9tOx#yO!T#zO!_;eO!d#vO#V9}O#t$VO$_9wO$a9zO$d$WO'b$PO'f#sO~Oh.VO'].UO~P#:yO!])aO!T'`a_'`a!R'`a'W'`a~O#W.]O~OZ[X!RdX!SdX~O!R.^O!S(VX~O!S.`O~OZ.aO~O].cO'])iO~O!T$lO']$bO^'QX!R'QX~O!R)nO^(Ua~O!c.fO~P!)wO].hO~OZ.iO~O^.jO~OP.TO!T&dO!o.SO%Q.RO'b$PO~O!R)zO_(Ra'W(Ra~O!{.pO~OP.sO!T#zO~O'g'TO!S(SP~OP.}O!T.yO!o.|O%Q.{O'b$PO~OZ/XO!R/VO!S(TX~O!S/YO~O^/[O_$^O'W$^O~O]/]O~O]/^O'](|O~O#c/_O%r/`O~P0zO!{#eO#c/_O%r/`O~O_/aO~P){O_/cO~O%{/gOQ%yiR%yiX%yi]%yi_%yib%yic%yih%yij%yik%yil%yiq%yis%yix%yi{%yi|%yi}%yi!T%yi!_%yi!d%yi!g%yi!h%yi!i%yi!j%yi!k%yi!n%yi#d%yi#t%yi#x%yi%P%yi%R%yi%T%yi%U%yi%X%yi%Z%yi%^%yi%_%yi%a%yi%n%yi%t%yi%v%yi%x%yi%z%yi%}%yi&T%yi&Z%yi&]%yi&_%yi&a%yi&c%yi'S%yi']%yi'f%yi'o%yi'|%yi!S%yi`%yi&Q%yi~O`/mO!S/kO&Q/lO~P`O!TSO!d/oO~O&X*wOQ&SiR&SiX&Si]&Si_&Sib&Sic&Sih&Sij&Sik&Sil&Siq&Sis&Six&Si{&Si|&Si}&Si!T&Si!_&Si!d&Si!g&Si!h&Si!i&Si!j&Si!k&Si!n&Si#d&Si#t&Si#x&Si%P&Si%R&Si%T&Si%U&Si%X&Si%Z&Si%^&Si%_&Si%a&Si%n&Si%t&Si%v&Si%x&Si%z&Si%}&Si&T&Si&Z&Si&]&Si&_&Si&a&Si&c&Si'S&Si']&Si'f&Si'o&Si'|&Si!S&Si%{&Si`&Si&Q&Si~O!R#bOn$]a~O!O&ii!R&ii~P!)wO!R%zO!O'ji~O!R&`O!O'ti~O!O/uO~O!R!Va!S!Va~P#*XO]&ROk&RO!Q/{O'g(jO!R&jX!S&jX~P@dO!R+`O!S'ka~O]&ZOk&ZO!Q)yO'g'TO!R&oX!S&oX~O!R+cO!S'va~O!O'ui!R'ui~P!)wO_$^O!]!wO!d$ZO!j0VO!{0TO'W$^O'b$PO'p&oO~O!S0YO~P!?iO!X0ZO!Y0ZO'^$dO'g(jO'o+iO~O!W0[O~P#MSO!TSO!W0[O!u0^O!x0_O~P#MSO!W0[O!s0aO!t0aO!u0^O!x0_O~P#MSO!T&dO~O!T&dO~P!BpO!R'ri!c'ri_'ri'W'ri~P!)wO!{0jO!R'ri!c'ri_'ri'W'ri~O!R&tO!c'qi~Ox$uO!T$vO#V0lO']$bO~O#WraQraZra_rajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra'Wra'fra'pra!cra!Ora!Tranra%Qra!]ra~P#7pO#W$^aQ$^aZ$^a_$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a'W$^a'f$^a'p$^a!c$^a!O$^a!T$^an$^a%Q$^a!]$^a~P#8fO#W$`aQ$`aZ$`a_$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a'W$`a'f$`a'p$`a!c$`a!O$`a!T$`an$`a%Q$`a!]$`a~P#9XO#W$naQ$naZ$na_$naj$nav$na!R$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na'W$na'f$na'p$na!c$na!O$na!T$na!{$nan$na%Q$na!]$na~P!BpO_#Oq!R#Oq'W#Oq!O#Oq!c#Oqn#Oq!T#Oq%Q#Oq!]#Oq~P!)wO!R&kX'a&kX~PJjO!R,_O'a'ma~O!Q0tO!R&lX!c&lX~P){O!R,bO!c'na~O!R,bO!c'na~P!)wO#m!fa!S!fa~PCfO#m!^a!R!^a!S!^a~P#*XO!T1XO#x^O$P1YO~O!S1^O~On1_O~P!BpO_$Yq!R$Yq'W$Yq!O$Yq!c$Yqn$Yq!T$Yq%Q$Yq!]$Yq~P!)wO!O1`O~O],yOk,yO~Ou(SOx(TO'x(XOP$xi'w$xi!R$xi!{$xi~O'a$xi#m$xi~P$.POu(SOx(TOP$zi'w$zi'x$zi!R$zi!{$zi~O'a$zi#m$zi~P$.rO'p#[O~P!BpO!Q1cO']$bO!R&tX!c&tX~O!R-RO!c'}a~O!R-RO!]!wO!c'}a~O!R-RO!]!wO'p&oO!c'}a~O'a$gi!R$gi!{$gi#m$gi~P!#{O!Q1kO'](eO!O&vX!R&vX~P!$jO!R-ZO!O(Oa~O!R-ZO!O(Oa~P!BpO!]!wO~O!]!wO#c1sO~Oj1vO!]!wO'p&oO~O!R'di'a'di~P!#{O!{1yO!R'di'a'di~P!#{O!c1|O~O_$Zq!R$Zq'W$Zq!O$Zq!c$Zqn$Zq!T$Zq%Q$Zq!]$Zq~P!)wO!R2QO!T(PX~P!BpO!T&dO%Q2TO~O!T&dO%Q2TO~P!BpO!T$eX$u[X_$eX!R$eX'W$eX~P!!rO$u2XOPgXugXxgX!TgX'wgX'xgX_gX!RgX'WgX~O$u2XO~O]2_O%R2`O'])iO!R'PX!S'PX~O!R.^O!S(Va~OZ2dO~O^2eO~O]2hO~OP2jO!T&dO!o2iO%Q2TO~O_$^O'W$^O~P!BpO!T#zO~P!BpO!R2oO!{2qO!S(SX~O!S2rO~Ox;oO!W2{O!X2tO!Y2tO!r2zO!s2yO!t2yO!x2xO'^$dO'g(jO'o+iO~O!S2wO~P$7ZOP3SO!T.yO!o3RO%Q3QO~OP3SO!T.yO!o3RO%Q3QO'b$PO~O'](|O!R'OX!S'OX~O!R/VO!S(Ta~O]3^O'g3]O~O]3_O~O^3aO~O!c3dO~P){O_3fO~O_3fO~P){O#c3hO%r3iO~PFOO`/mO!S3mO&Q/lO~P`O!]3oO~O!R#Ti!S#Ti~P#*XO!{3qO!R#Ti!S#Ti~O!R!Vi!S!Vi~P#*XO_$^O!{3xO'W$^O~O_$^O!]!wO!{3xO'W$^O~O!X3|O!Y3|O'^$dO'g(jO'o+iO~O_$^O!]!wO!d$ZO!j3}O!{3xO'W$^O'b$PO'p&oO~O!W4OO~P$;xO!W4OO!u4RO!x4SO~P$;xO_$^O!]!wO!j3}O!{3xO'W$^O'p&oO~O!R'rq!c'rq_'rq'W'rq~P!)wO!R&tO!c'qq~O#W$xiQ$xiZ$xi_$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi'W$xi'f$xi'p$xi!c$xi!O$xi!T$xin$xi%Q$xi!]$xi~P$.PO#W$ziQ$ziZ$zi_$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi'W$zi'f$zi'p$zi!c$zi!O$zi!T$zin$zi%Q$zi!]$zi~P$.rO#W$giQ$giZ$gi_$gij$giv$gi!R$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi'W$gi'f$gi'p$gi!c$gi!O$gi!T$gi!{$gin$gi%Q$gi!]$gi~P!BpO!R&ka'a&ka~P!#{O!R&la!c&la~P!)wO!R,bO!c'ni~O#m#Oi!R#Oi!S#Oi~P#*XOQ#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O'fQOZ#Zij#Zi!a#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'p#Zi'w#Zi'x#Zi!R#Zi!S#Zi~O#[#Zi~P$EiO#[9eO~P$EiOQ#^Ou!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9eO#]9fO#^9fO#_9fO'fQOZ#Zi!a#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'p#Zi'w#Zi'x#Zi!R#Zi!S#Zi~Oj#Zi~P$GqOj9gO~P$GqOQ#^Oj9gOu!{Ov!{Ox!|O!b!yO!d!zO!j#^O#[9eO#]9fO#^9fO#_9fO#`9hO'fQO#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'p#Zi'w#Zi'x#Zi!R#Zi!S#Zi~OZ#Zi!a#Zi#a#Zi#b#Zi#c#Zi~P$IyOZ9rO!a9iO#a9iO#b9iO#c9iO~P$IyOQ#^OZ9rOj9gOu!{Ov!{Ox!|O!a9iO!b!yO!d!zO!j#^O#[9eO#]9fO#^9fO#_9fO#`9hO#a9iO#b9iO#c9iO#e9jO'fQO#g#Zi#i#Zi#j#Zi#m#Zi'p#Zi'x#Zi!R#Zi!S#Zi~O'w#Zi~P$L_O'w!}O~P$L_OQ#^OZ9rOj9gOu!{Ov!{Ox!|O!a9iO!b!yO!d!zO!j#^O#[9eO#]9fO#^9fO#_9fO#`9hO#a9iO#b9iO#c9iO#e9jO#g9lO'fQO'w!}O#i#Zi#j#Zi#m#Zi'p#Zi!R#Zi!S#Zi~O'x#Zi~P$NgO'x#OO~P$NgOQ#^OZ9rOj9gOu!{Ov!{Ox!|O!a9iO!b!yO!d!zO!j#^O#[9eO#]9fO#^9fO#_9fO#`9hO#a9iO#b9iO#c9iO#e9jO#g9lO#i9nO'fQO'w!}O'x#OO~O#j#Zi#m#Zi'p#Zi!R#Zi!S#Zi~P%!oO_#ky!R#ky'W#ky!O#ky!c#kyn#ky!T#ky%Q#ky!]#ky~P!)wOP;vOu(SOx(TO'w(VO'x(XO~OQ#ZiZ#Zij#Ziv#Zi!a#Zi!b#Zi!d#Zi!j#Zi#[#Zi#]#Zi#^#Zi#_#Zi#`#Zi#a#Zi#b#Zi#c#Zi#e#Zi#g#Zi#i#Zi#j#Zi#m#Zi'f#Zi'p#Zi!R#Zi!S#Zi~P%%aO!b!yOP'eXu'eXx'eX'w'eX'x'eX!S'eX~OQ'eXZ'eXj'eXv'eX!a'eX!d'eX!j'eX#['eX#]'eX#^'eX#_'eX#`'eX#a'eX#b'eX#c'eX#e'eX#g'eX#i'eX#j'eX#m'eX'f'eX'p'eX!R'eX~P%'eO#m#ni!R#ni!S#ni~P#*XO!S4eO~O!R&sa!S&sa~P#*XO!]!wO'p&oO!R&ta!c&ta~O!R-RO!c'}i~O!R-RO!]!wO!c'}i~O'a$gq!R$gq!{$gq#m$gq~P!#{O!O&va!R&va~P!BpO!]4lO~O!R-ZO!O(Oi~P!BpO!R-ZO!O(Oi~O!O4pO~O!]!wO#c4uO~Oj4vO!]!wO'p&oO~O!O4xO~O'a$iq!R$iq!{$iq#m$iq~P!#{O_$Zy!R$Zy'W$Zy!O$Zy!c$Zyn$Zy!T$Zy%Q$Zy!]$Zy~P!)wO!R2QO!T(Pa~O!T&dO%Q4}O~O!T&dO%Q4}O~P!BpO_#Oy!R#Oy'W#Oy!O#Oy!c#Oyn#Oy!T#Oy%Q#Oy!]#Oy~P!)wOZ5QO~O]5SO'])iO~O!R.^O!S(Vi~O]5VO~O^5WO~O'g'TO!R&{X!S&{X~O!R2oO!S(Sa~O!S5eO~P$7ZOx;sO'g(jO'o+iO~O!W5hO!X5gO!Y5gO!x0_O'^$dO'g(jO'o+iO~O!s5iO!t5iO~P%0^O!X5gO!Y5gO'^$dO'g(jO'o+iO~O!T.yO~O!T.yO%Q5kO~O!T.yO%Q5kO~P!BpOP5pO!T.yO!o5oO%Q5kO~OZ5uO!R'Oa!S'Oa~O!R/VO!S(Ti~O]5xO~O!c5yO~O!c5zO~O!c5{O~O!c5{O~P){O_5}O~O!]6QO~O!c6RO~O!R'ui!S'ui~P#*XO_$^O'W$^O~P!)wO_$^O!{6WO'W$^O~O_$^O!]!wO!{6WO'W$^O~O!X6]O!Y6]O'^$dO'g(jO'o+iO~O_$^O!]!wO!j6^O!{6WO'W$^O'p&oO~O!d$ZO'b$PO~P%4xO!W6_O~P%4gO!R'ry!c'ry_'ry'W'ry~P!)wO#W$gqQ$gqZ$gq_$gqj$gqv$gq!R$gq!a$gq!b$gq!d$gq!j$gq#[$gq#]$gq#^$gq#_$gq#`$gq#a$gq#b$gq#c$gq#e$gq#g$gq#i$gq#j$gq'W$gq'f$gq'p$gq!c$gq!O$gq!T$gq!{$gqn$gq%Q$gq!]$gq~P!BpO#W$iqQ$iqZ$iq_$iqj$iqv$iq!R$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq'W$iq'f$iq'p$iq!c$iq!O$iq!T$iq!{$iqn$iq%Q$iq!]$iq~P!BpO!R&li!c&li~P!)wO#m#Oq!R#Oq!S#Oq~P#*XOu-tOv-tOx-uOPra'wra'xra!Sra~OQraZrajra!ara!bra!dra!jra#[ra#]ra#^ra#_ra#`ra#ara#bra#cra#era#gra#ira#jra#mra'fra'pra!Rra~P%;OOu(SOx(TOP$^a'w$^a'x$^a!S$^a~OQ$^aZ$^aj$^av$^a!a$^a!b$^a!d$^a!j$^a#[$^a#]$^a#^$^a#_$^a#`$^a#a$^a#b$^a#c$^a#e$^a#g$^a#i$^a#j$^a#m$^a'f$^a'p$^a!R$^a~P%=SOu(SOx(TOP$`a'w$`a'x$`a!S$`a~OQ$`aZ$`aj$`av$`a!a$`a!b$`a!d$`a!j$`a#[$`a#]$`a#^$`a#_$`a#`$`a#a$`a#b$`a#c$`a#e$`a#g$`a#i$`a#j$`a#m$`a'f$`a'p$`a!R$`a~P%?WOQ$naZ$naj$nav$na!a$na!b$na!d$na!j$na#[$na#]$na#^$na#_$na#`$na#a$na#b$na#c$na#e$na#g$na#i$na#j$na#m$na'f$na'p$na!R$na!S$na~P%%aO#m$Yq!R$Yq!S$Yq~P#*XO#m$Zq!R$Zq!S$Zq~P#*XO!S6hO~O#m6iO~P!#{O!]!wO!R&ti!c&ti~O!]!wO'p&oO!R&ti!c&ti~O!R-RO!c'}q~O!O&vi!R&vi~P!BpO!R-ZO!O(Oq~O!O6oO~P!BpO!O6oO~O!R'dy'a'dy~P!#{O!R&ya!T&ya~P!BpO!T$tq_$tq!R$tq'W$tq~P!BpOZ6vO~O!R.^O!S(Vq~O]6yO~O!T&dO%Q6zO~O!T&dO%Q6zO~P!BpO!{6{O!R&{a!S&{a~O!R2oO!S(Si~P#*XO!X7RO!Y7RO'^$dO'g(jO'o+iO~O!W7TO!x4SO~P%GXO!T.yO%Q7WO~O!T.yO%Q7WO~P!BpO]7_O'g7^O~O!R/VO!S(Tq~O!c7aO~O!c7aO~P){O!c7cO~O!c7dO~O!R#Ty!S#Ty~P#*XO_$^O!{7jO'W$^O~O_$^O!]!wO!{7jO'W$^O~O!X7mO!Y7mO'^$dO'g(jO'o+iO~O_$^O!]!wO!j7nO!{7jO'W$^O'p&oO~O#m#ky!R#ky!S#ky~P#*XOQ$giZ$gij$giv$gi!a$gi!b$gi!d$gi!j$gi#[$gi#]$gi#^$gi#_$gi#`$gi#a$gi#b$gi#c$gi#e$gi#g$gi#i$gi#j$gi#m$gi'f$gi'p$gi!R$gi!S$gi~P%%aOu(SOx(TO'x(XOP$xi'w$xi!S$xi~OQ$xiZ$xij$xiv$xi!a$xi!b$xi!d$xi!j$xi#[$xi#]$xi#^$xi#_$xi#`$xi#a$xi#b$xi#c$xi#e$xi#g$xi#i$xi#j$xi#m$xi'f$xi'p$xi!R$xi~P%LjOu(SOx(TOP$zi'w$zi'x$zi!S$zi~OQ$ziZ$zij$ziv$zi!a$zi!b$zi!d$zi!j$zi#[$zi#]$zi#^$zi#_$zi#`$zi#a$zi#b$zi#c$zi#e$zi#g$zi#i$zi#j$zi#m$zi'f$zi'p$zi!R$zi~P%NnO#m$Zy!R$Zy!S$Zy~P#*XO#m#Oy!R#Oy!S#Oy~P#*XO!]!wO!R&tq!c&tq~O!R-RO!c'}y~O!O&vq!R&vq~P!BpO!O7tO~P!BpO!R.^O!S(Vy~O!R2oO!S(Sq~O!X8QO!Y8QO'^$dO'g(jO'o+iO~O!T.yO%Q8TO~O!T.yO%Q8TO~P!BpO!c8WO~O_$^O!{8]O'W$^O~O_$^O!]!wO!{8]O'W$^O~OQ$gqZ$gqj$gqv$gq!a$gq!b$gq!d$gq!j$gq#[$gq#]$gq#^$gq#_$gq#`$gq#a$gq#b$gq#c$gq#e$gq#g$gq#i$gq#j$gq#m$gq'f$gq'p$gq!R$gq!S$gq~P%%aOQ$iqZ$iqj$iqv$iq!a$iq!b$iq!d$iq!j$iq#[$iq#]$iq#^$iq#_$iq#`$iq#a$iq#b$iq#c$iq#e$iq#g$iq#i$iq#j$iq#m$iq'f$iq'p$iq!R$iq!S$iq~P%%aO'a$|!Z!R$|!Z!{$|!Z#m$|!Z~P!#{O!R&{q!S&{q~P#*XO_$^O!{8oO'W$^O~O#W$|!ZQ$|!ZZ$|!Z_$|!Zj$|!Zv$|!Z!R$|!Z!a$|!Z!b$|!Z!d$|!Z!j$|!Z#[$|!Z#]$|!Z#^$|!Z#_$|!Z#`$|!Z#a$|!Z#b$|!Z#c$|!Z#e$|!Z#g$|!Z#i$|!Z#j$|!Z'W$|!Z'f$|!Z'p$|!Z!c$|!Z!O$|!Z!T$|!Z!{$|!Zn$|!Z%Q$|!Z!]$|!Z~P!BpOP;uOu(SOx(TO'w(VO'x(XO~O!S!za!W!za!X!za!Y!za!r!za!s!za!t!za!x!za'^!za'g!za'o!za~P&,_O!W'eX!X'eX!Y'eX!r'eX!s'eX!t'eX!x'eX'^'eX'g'eX'o'eX~P%'eOQ$|!ZZ$|!Zj$|!Zv$|!Z!a$|!Z!b$|!Z!d$|!Z!j$|!Z#[$|!Z#]$|!Z#^$|!Z#_$|!Z#`$|!Z#a$|!Z#b$|!Z#c$|!Z#e$|!Z#g$|!Z#i$|!Z#j$|!Z#m$|!Z'f$|!Z'p$|!Z!R$|!Z!S$|!Z~P%%aO!Wra!Xra!Yra!rra!sra!tra!xra'^ra'gra'ora~P%;OO!W$^a!X$^a!Y$^a!r$^a!s$^a!t$^a!x$^a'^$^a'g$^a'o$^a~P%=SO!W$`a!X$`a!Y$`a!r$`a!s$`a!t$`a!x$`a'^$`a'g$`a'o$`a~P%?WO!S$na!W$na!X$na!Y$na!r$na!s$na!t$na!x$na'^$na'g$na'o$na~P&,_O!W$xi!X$xi!Y$xi!r$xi!s$xi!t$xi!x$xi'^$xi'g$xi'o$xi~P%LjO!W$zi!X$zi!Y$zi!r$zi!s$zi!t$zi!x$zi'^$zi'g$zi'o$zi~P%NnO!S$gi!W$gi!X$gi!Y$gi!r$gi!s$gi!t$gi!x$gi'^$gi'g$gi'o$gi~P&,_O!S$gq!W$gq!X$gq!Y$gq!r$gq!s$gq!t$gq!x$gq'^$gq'g$gq'o$gq~P&,_O!S$iq!W$iq!X$iq!Y$iq!r$iq!s$iq!t$iq!x$iq'^$iq'g$iq'o$iq~P&,_O!S$|!Z!W$|!Z!X$|!Z!Y$|!Z!r$|!Z!s$|!Z!t$|!Z!x$|!Z'^$|!Z'g$|!Z'o$|!Z~P&,_On'hX~P.jOn[X!O[X!c[X%r[X!T[X%Q[X!][X~P$zO!]dX!c[X!cdX'pdX~P;dOQ9^OR9^O]cOb;`Oc!jOhcOj9^OkcOlcOq9^Os9^OxRO{cO|cO}cO!TSO!_9`O!dUO!g9^O!h9^O!i9^O!j9^O!k9^O!n!iO#t!lO#x^O']'cO'fQO'oYO'|;^O~O]#qOh$QOj#rOk#qOl#qOq$ROs9uOx#yO!T#zO!_;fO!d#vO#V:OO#t$VO$_9xO$a9{O$d$WO']&{O'b$PO'f#sO~O!R9pO!S$]a~O]#qOh$QOj#rOk#qOl#qOq$ROs9vOx#yO!T#zO!_;gO!d#vO#V:PO#t$VO$_9yO$a9|O$d$WO']&{O'b$PO'f#sO~O#d'jO~P&]P!AQ!AY!A^!A^P!>YP!Ab!AbP!DVP!DZ?Z?Z!Da!GT8SP8SP8S8SP!HW8S8S!Jf8S!M_8S# g8S8S#!T#$c#$c#$g#$c#$oP#$cP8S#%k8S#'X8S8S-zPPP#(yPP#)c#)cP#)cP#)x#)cPP#*OP#)uP#)u#*b!!X#)u#+P#+V#+Y([#+]([P#+d#+d#+dP([P([P([P([PP([P#+j#+mP#+m([P#+qP#+tP([P([P([P([P([P([([#+z#,U#,[#,b#,p#,v#,|#-W#-^#-m#-s#.R#.X#._#.m#/S#0z#1Y#1`#1f#1l#1r#1|#2S#2Y#2d#2v#2|PPPPPPPP#3SPP#3v#7OPP#8f#8m#8uPP#>a#@t#Fp#Fs#Fv#GR#GUPP#GX#G]#Gz#Hq#Hu#IZPP#I_#Ie#IiP#Il#Ip#Is#Jc#Jy#KO#KR#KU#K[#K_#Kc#KgmhOSj}!n$]%c%f%g%i*o*t/g/jQ$imQ$ppQ%ZyS&V!b+`Q&k!jS(l#z(qQ)g$jQ)t$rQ*`%TQ+f&^S+k&d+mQ+}&lQ-k(sQ/U*aY0Z+o+p+q+r+sS2t.y2vU3|0[0^0aU5g2y2z2{S6]4O4RS7R5h5iQ7m6_R8Q7T$p[ORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%c%e%f%g%i%m%x%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8o!j'e#]#k&W'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aQ(}$SQ)l$lQ*b%WQ*i%`Q,X9tQ.W)aQ.c)mQ/^*gQ2_.^Q3Z/VQ4^9vQ5S2`R8{9upeOSjy}!n$]%Y%c%f%g%i*o*t/g/jR*d%[&WVOSTjkn}!S!W!k!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k$]$n%[%_%`%c%e%f%g%i%m%z&S&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;`;a[!cRU!]!`%x&WQ$clQ$hmS$mp$rv$wrs!r!u$Z$u&`&t&w)x)y)z*m+Y+h,S,U/o0lQ%PwQ&h!iQ&j!jS(_#v(cS)f$i$jQ)j$lQ)w$tQ*Z%RQ*_%TS+|&k&lQ-V(`Q.[)gQ.b)mQ.d)nQ.g)rQ/P*[S/T*`*aQ0h+}Q1b-RQ2^.^Q2b.aQ2g.iQ3Y/UQ4i1cQ5R2`Q5U2dQ6u5QR7w6vx#xa!y$T$U$Y(W(Y(b(w(x,_-Y-w1a1y6i;^;i;j;k!Y$fm!j$h$i$j&U&j&k&l(k)f)g+]+j+|+}-d.[0Q0W0]0h1u3{4Q6Z7k8^Q)`$cQ*P$|Q*S$}Q*^%TQ.k)wQ/O*ZU/S*_*`*aQ3T/PS3X/T/UQ5b2sQ5t3YS7P5c5fS8O7Q7SQ8f8PQ8u8g#[;b!w#d#v#y&g'}(Z(h)])_)a*O*R+y-Z-].R.T.p.s.{.}1k1s2Q2T2X2j3Q3S4l4u4}5k5p6z7W8T9w9z9}:U:X:[:a:d:j;l;n;t;u;vd;c9d9x9{:O:V:Y:]:b:e:ke;d9r9y9|:P:W:Z:^:c:f:lW#}a$P(y;^S$|t%YQ$}uQ%OvR)}$z%P#|a!w!y#d#v#y$T$U$Y&g'}(W(Y(Z(b(h(w(x)])_)a*O*R+y,_-Y-Z-]-w.R.T.p.s.{.}1a1k1s1y2Q2T2X2j3Q3S4l4u4}5k5p6i6z7W8T9d9r9w9x9y9z9{9|9}:O:P:U:V:W:X:Y:Z:[:]:^:a:b:c:d:e:f:j:k:l;^;i;j;k;l;n;t;u;vT(O#s(PX)O$S9t9u9vU&Z!b$v+cQ'U!{Q)q$oQ.t*TQ1z-tR5^2o&^cORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k$]$n%[%_%`%c%e%f%g%i%m%x%z&S&W&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;a$]#aZ!_!o$a%w%}&y'Q'W'X'Y'Z'[']'^'_'`'a'b'd'g'k'u)p+R+^+g,O,^,d,g,i,w-x/v/y0i0s0w0x0y0z0{0|0}1O1P1Q1R1S1T1W1]2O2[3s3v4W4[4]4b4c5`6S6V6b6f6g7g7z8Z8m8y9_:|T!XQ!Y&_cORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k$]$n%[%_%`%c%e%f%g%i%m%x%z&S&W&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aQ&X!bR/|+`Y&R!b&V&^+`+fS(k#z(qS+j&d+mS-d(l(sQ-e(mQ-l(tQ.v*VU0W+k+o+pU0]+q+r+sS0b+t2xQ1u-kQ1w-mQ1x-nS2s.y2vU3{0Z0[0^Q4P0_Q4Q0aS5c2t2{S5f2y2zU6Z3|4O4RQ6`4SS7Q5g5hQ7S5iS7k6]6_S8P7R7TQ8^7mQ8g8QQ;h;oR;m;slhOSj}!n$]%c%f%g%i*o*t/g/jQ%k!QS&x!v9cQ)d$gQ*X%PQ*Y%QQ+z&iS,]&}:RS-y)V:_Q.Y)eQ.x*WQ/n*vQ/p*wQ/x+ZQ0`+qQ0f+{S2P-z:gQ2Y.ZS2].]:hQ3r/zQ3u0RQ4U0gQ5P2ZQ6T3tQ6X3zQ6a4VQ7e6RQ7h6YQ8Y7iQ8l8[R8x8n$W#`Z!_!o%w%}&y'Q'W'X'Y'Z'[']'^'_'`'a'b'd'g'k'u)p+R+^+g,O,^,d,g,w-x/v/y0i0s0w0x0y0z0{0|0}1O1P1Q1R1S1T1W1]2O2[3s3v4W4[4]4b4c5`6S6V6b6f6g7g7z8Z8m8y9_:|W(v#{&|1V8qT)Z$a,i$W#_Z!_!o%w%}&y'Q'W'X'Y'Z'[']'^'_'`'a'b'd'g'k'u)p+R+^+g,O,^,d,g,w-x/v/y0i0s0w0x0y0z0{0|0}1O1P1Q1R1S1T1W1]2O2[3s3v4W4[4]4b4c5`6S6V6b6f6g7g7z8Z8m8y9_:|Q'f#`S)Y$a,iR-{)Z&^cORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k$]$n%[%_%`%c%e%f%g%i%m%x%z&S&W&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aQ%f{Q%g|Q%i!OQ%j!PR/f*rQ&e!iQ)[$cQ+w&hS.Q)`)wS0c+u+vW2S-}.O.P.kS4T0d0eU4|2U2V2WU6s4{5Y5ZQ7v6tR8b7yT+l&d+mS+j&d+mU0W+k+o+pU0]+q+r+sS0b+t2xS2s.y2vU3{0Z0[0^Q4P0_Q4Q0aS5c2t2{S5f2y2zU6Z3|4O4RQ6`4SS7Q5g5hQ7S5iS7k6]6_S8P7R7TQ8^7mR8g8QS+l&d+mT2u.y2vS&r!q/dQ-U(_Q-b(kS0V+j2sQ1g-VS1p-c-lU3}0]0b5fQ4h1bS4s1v1xU6^4P4Q7SQ6k4iQ6r4vR7n6`Q!xXS&q!q/dQ)W$[Q)b$eQ)h$kQ,Q&rQ-T(_Q-a(kQ-f(nQ.X)cQ/Q*]S0U+j2sS1f-U-VS1o-b-lQ1r-eQ1t-gQ3V/RW3y0V0]0b5fQ4g1bQ4k1gS4o1p1xQ4t1wQ5r3WW6[3}4P4Q7SS6j4h4iS6n4p:iQ6p4sQ6}5aQ7[5sS7l6^6`Q7r6kS7s6o:mQ7u6rQ7|7OQ8V7]Q8_7nS8a7t:nQ8d7}Q8s8eQ9Q8tQ9X9RQ:u:pQ;T:zQ;U:{Q;V;hR;[;m$rWORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%`%c%e%f%g%i%m%x%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8oS!xn!k!j:o#]#k&W'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aR:u;`$rXORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%`%c%e%f%g%i%m%x%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8oQ$[b!Y$em!j$h$i$j&U&j&k&l(k)f)g+]+j+|+}-d.[0Q0W0]0h1u3{4Q6Z7k8^S$kn!kQ)c$fQ*]%TW/R*^*_*`*aU3W/S/T/UQ5a2sS5s3X3YU7O5b5c5fQ7]5tU7}7P7Q7SS8e8O8PS8t8f8gQ9R8u!j:p#]#k&W'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aQ:z;_R:{;`$f]OSTjk}!S!W!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%c%e%f%g%i%m%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8oY!hRU!]!`%xv$wrs!r!u$Z$u&`&t&w)x)y)z*m+Y+h,S,U/o0lQ*j%`!h:q#]#k'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aR:t&WS&[!b$vR0O+c$p[ORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%c%e%f%g%i%m%x%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8o!j'e#]#k&W'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aR*i%`$roORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%`%c%e%f%g%i%m%x%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8oQ'U!{!k:r#]#k&W'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;a!h#VZ!_$a%w%}&y'Q'_'`'a'b'g'k)p+R+g,O,^,d,w-x0i0s1T2O2[3v4W4[6V7g8Z8m8y9_!R9k'd'u+^,i/v/y0w1P1Q1R1S1W1]3s4]4b4c5`6S6b6f6g7z:|!d#XZ!_$a%w%}&y'Q'a'b'g'k)p+R+g,O,^,d,w-x0i0s1T2O2[3v4W4[6V7g8Z8m8y9_}9m'd'u+^,i/v/y0w1R1S1W1]3s4]4b4c5`6S6b6f6g7z:|!`#]Z!_$a%w%}&y'Q'g'k)p+R+g,O,^,d,w-x0i0s1T2O2[3v4W4[6V7g8Z8m8y9_Q1a-Px;a'd'u+^,i/v/y0w1W1]3s4]4b4c5`6S6b6f6g7z:|Q;i;pQ;j;qR;k;r&^cORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k$]$n%[%_%`%c%e%f%g%i%m%x%z&S&W&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aS#l`#mR1Y,l&e_ORSTU`jk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k#m$]$n%[%_%`%c%e%f%g%i%m%x%z&S&W&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,l,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aS#g^#nT'n#i'rT#h^#nT'p#i'r&e`ORSTU`jk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#]#b#e#k#m$]$n%[%_%`%c%e%f%g%i%m%x%z&S&W&_&f&p&}'R'w(R)V)^*k*o*t+T+X+[+x,P,b,h,l,m-u-z.S.].|/_/`/a/c/g/j/l/{0T0j0t1X2i2q3R3f3h3i3q3x5o5}6W6{7j8]8o9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;aT#l`#mQ#o`R'y#m$rbORSTUjk}!S!W!]!`!n!v!z!|#P#Q#R#S#T#U#V#W#X#Y#Z#b#e$]$n%[%_%`%c%e%f%g%i%m%x%z&S&_&f&p&}'R(R)V)^*k*o*t+T+x,P,b,h-u-z.S.].|/_/`/a/c/g/j/l0T0j0t2i3R3f3h3i3x5o5}6W7j8]8o!k;_#]#k&W'w+X+[,m/{1X2q3q6{9^9`9c9e9f9g9h9i9j9k9l9m9n9o9p9s:Q:R:T:_:`:g:h;a#RdOSUj}!S!W!n!|#k$]%[%_%`%c%e%f%g%i%m&S&f'w)^*k*o*t+x,m-u.S.|/_/`/a/c/g/j/l1X2i3R3f3h3i5o5}x#{a!y$T$U$Y(W(Y(b(w(x,_-Y-w1a1y6i;^;i;j;k#[&|!w#d#v#y&g'}(Z(h)])_)a*O*R+y-Z-].R.T.p.s.{.}1k1s2Q2T2X2j3Q3S4l4u4}5k5p6z7W8T9w9z9}:U:X:[:a:d:j;l;n;t;u;vQ)S$WQ,x(Sd1V9r9y9|:P:W:Z:^:c:f:le8q9d9x9{:O:V:Y:]:b:e:kx#wa!y$T$U$Y(W(Y(b(w(x,_-Y-w1a1y6i;^;i;j;kQ(d#xS(n#z(qQ)T$XQ-g(o#[:w!w#d#v#y&g'}(Z(h)])_)a*O*R+y-Z-].R.T.p.s.{.}1k1s2Q2T2X2j3Q3S4l4u4}5k5p6z7W8T9w9z9}:U:X:[:a:d:j;l;n;t;u;vd:x9d9x9{:O:V:Y:]:b:e:kd:y9r9y9|:P:W:Z:^:c:f:lQ:};bQ;O;cQ;P;dQ;Q;eQ;R;fR;S;gx#{a!y$T$U$Y(W(Y(b(w(x,_-Y-w1a1y6i;^;i;j;k#[&|!w#d#v#y&g'}(Z(h)])_)a*O*R+y-Z-].R.T.p.s.{.}1k1s2Q2T2X2j3Q3S4l4u4}5k5p6z7W8T9w9z9}:U:X:[:a:d:j;l;n;t;u;vd1V9r9y9|:P:W:Z:^:c:f:le8q9d9x9{:O:V:Y:]:b:e:klfOSj}!n$]%c%f%g%i*o*t/g/jQ(g#yQ*}%pQ+O%rR1j-Z%O#|a!w!y#d#v#y$T$U$Y&g'}(W(Y(Z(b(h(w(x)])_)a*O*R+y,_-Y-Z-]-w.R.T.p.s.{.}1a1k1s1y2Q2T2X2j3Q3S4l4u4}5k5p6i6z7W8T9d9r9w9x9y9z9{9|9}:O:P:U:V:W:X:Y:Z:[:]:^:a:b:c:d:e:f:j:k:l;^;i;j;k;l;n;t;u;vQ*Q$}Q.r*SQ2m.qR5]2nT(p#z(qS(p#z(qT2u.y2vQ)b$eQ-f(nQ.X)cQ/Q*]Q3V/RQ5r3WQ6}5aQ7[5sQ7|7OQ8V7]Q8d7}Q8s8eQ9Q8tR9X9Rp(W#t'O)U-X-o-p0q1h1}4f4w7q:v;W;X;Y!n:U&z'i(^(f+v,[,t-P-^-|.P.o.q0e0p1i1m2W2l2n3O4Y4Z4m4q4y5O5Z5n6m6q7Y8`;Z;];p;q;r[:V8p9O9V9Y9Z9]]:W1U4a6c7o7p8zr(Y#t'O)U,}-X-o-p0q1h1}4f4w7q:v;W;X;Y!p:X&z'i(^(f+v,[,t-P-^-|.P.o.q0e0n0p1i1m2W2l2n3O4Y4Z4m4q4y5O5Z5n6m6q7Y8`;Z;];p;q;r^:Y8p9O9T9V9Y9Z9]_:Z1U4a6c6d7o7p8zpeOSjy}!n$]%Y%c%f%g%i*o*t/g/jQ%VxR*k%`peOSjy}!n$]%Y%c%f%g%i*o*t/g/jR%VxQ*U%OR.n)}qeOSjy}!n$]%Y%c%f%g%i*o*t/g/jQ.z*ZS3P/O/PW5j2|2}3O3TU7V5l5m5nU8R7U7X7YQ8h8SR8v8iQ%^yR*e%YR3^/XR7_5uS$mp$rR.d)nQ%czR*o%dR*u%jT/h*t/jR*y%kQ*x%kR/q*yQjOQ!nST$`j!nQ(P#sR,u(PQ!YQR%u!YQ!^RU%{!^%|+UQ%|!_R+U%}Q+a&XR/}+aQ,`'OR0r,`Q,c'QS0u,c0vR0v,dQ+m&dR0X+mS!eR$uU&a!e&b+VQ&b!fR+V&OQ+d&[R0P+dQ&u!sQ,R&sU,V&u,R0mR0m,WQ'r#iR,n'rQ#m`R'x#mQ#cZU'h#c+Q9qQ+Q9_R9q'uQ-S(_W1d-S1e4j6lU1e-T-U-VS4j1f1gR6l4k$k(U#t&z'O'i(^(f)P)Q)U+v,Y,Z,[,t,}-O-P-X-^-o-p-|.P.o.q0e0n0o0p0q1U1h1i1m1}2W2l2n3O4Y4Z4_4`4a4f4m4q4w4y5O5Z5n6c6d6e6m6q7Y7o7p7q8`8p8z8|8}9O9T9U9V9Y9Z9]:v;W;X;Y;Z;];p;q;rQ-[(fU1l-[1n4nQ1n-^R4n1mQ(q#zR-i(qQ(z$OR-r(zQ2R-|R4z2RQ){$xR.m){Q2p.tS5_2p6|R6|5`Q*W%PR.w*WQ2v.yR5d2vQ/W*bS3[/W5vR5v3^Q._)jW2a._2c5T6wQ2c.bQ5T2bR6w5UQ)o$mR.e)oQ/j*tR3l/jWiOSj!nQ%h}Q)X$]Q*n%cQ*p%fQ*q%gQ*s%iQ/e*oS/h*t/jR3k/gQ$_gQ%l!RQ%o!TQ%q!UQ%s!VQ)v$sQ)|$yQ*d%^Q*{%nQ-h(pS/Z*e*hQ/r*zQ/s*}Q/t+OS0S+j2sQ2f.hQ2k.oQ3U/QQ3`/]Q3j/fY3w0U0V0]0b5fQ5X2hQ5[2lQ5q3VQ5w3_[6U3v3y3}4P4Q7SQ6x5VQ7Z5rQ7`5xW7f6V6[6^6`Q7x6yQ7{6}Q8U7[U8X7g7l7nQ8c7|Q8j8VS8k8Z8_Q8r8dQ8w8mQ9P8sQ9S8yQ9W9QR9[9XQ$gmQ&i!jU)e$h$i$jQ+Z&UU+{&j&k&lQ-`(kS.Z)f)gQ/z+]Q0R+jS0g+|+}Q1q-dQ2Z.[Q3t0QS3z0W0]Q4V0hQ4r1uS6Y3{4QQ7i6ZQ8[7kR8n8^S#ua;^R({$PU$Oa$P;^R-q(yQ#taS&z!w)aQ'O!yQ'i#dQ(^#vQ(f#yQ)P$TQ)Q$UQ)U$YQ+v&gQ,Y9wQ,Z9zQ,[9}Q,t'}Q,}(WQ-O(YQ-P(ZQ-X(bQ-^(hQ-o(wQ-p(xd-|)].R.{2T3Q4}5k6z7W8TQ.P)_Q.o*OQ.q*RQ0e+yQ0n:UQ0o:XQ0p:[Q0q,_Q1U9rQ1h-YQ1i-ZQ1m-]Q1}-wQ2W.TQ2l.pQ2n.sQ3O.}Q4Y:aQ4Z:dQ4_9yQ4`9|Q4a:PQ4f1aQ4m1kQ4q1sQ4w1yQ4y2QQ5O2XQ5Z2jQ5n3SQ6c:^Q6d:WQ6e:ZQ6m4lQ6q4uQ7Y5pQ7o:cQ7p:fQ7q6iQ8`:jQ8p9dQ8z:lQ8|9xQ8}9{Q9O:OQ9T:VQ9U:YQ9V:]Q9Y:bQ9Z:eQ9]:kQ:v;^Q;W;iQ;X;jQ;Y;kQ;Z;lQ;];nQ;p;tQ;q;uR;r;vlgOSj}!n$]%c%f%g%i*o*t/g/jS!pU%eQ%n!SQ%t!WQ'V!|Q'v#kS*h%[%_Q*l%`Q*z%mQ+W&SQ+u&fQ,r'wQ.O)^Q/b*kQ0d+xQ1[,mQ1{-uQ2V.SQ2}.|Q3b/_Q3c/`Q3e/aQ3g/cQ3n/lQ4d1XQ5Y2iQ5m3RQ5|3fQ6O3hQ6P3iQ7X5oR7b5}!vZOSUj}!S!n!|$]%[%_%`%c%e%f%g%i%m&S&f)^*k*o*t+x-u.S.|/_/`/a/c/g/j/l2i3R3f3h3i5o5}Q!_RQ!oTQ$akS%w!]%zQ%}!`Q&y!vQ'Q!zQ'W#PQ'X#QQ'Y#RQ'Z#SQ'[#TQ']#UQ'^#VQ'_#WQ'`#XQ'a#YQ'b#ZQ'd#]Q'g#bQ'k#eW'u#k'w,m1XQ)p$nS+R%x+TS+^&W/{Q+g&_Q,O&pQ,^&}Q,d'RQ,g9^Q,i9`Q,w(RQ-x)VQ/v+XQ/y+[Q0i,PQ0s,bQ0w9cQ0x9eQ0y9fQ0z9gQ0{9hQ0|9iQ0}9jQ1O9kQ1P9lQ1Q9mQ1R9nQ1S9oQ1T,hQ1W9sQ1]9pQ2O-zQ2[.]Q3s:QQ3v0TQ4W0jQ4[0tQ4]:RQ4b:TQ4c:_Q5`2qQ6S3qQ6V3xQ6b:`Q6f:gQ6g:hQ7g6WQ7z6{Q8Z7jQ8m8]Q8y8oQ9_!WR:|;aR!aRR&Y!bS&U!b+`S+]&V&^R0Q+fR'P!yR'S!zT!tU$ZS!sU$ZU$xrs*mS&s!r!uQ,T&tQ,W&wQ.l)zS0k,S,UR4X0l`!dR!]!`$u%x&`)x+hh!qUrs!r!u$Z&t&w)z,S,U0lQ/d*mQ/w+YQ3p/oT:s&W)yT!gR$uS!fR$uS%y!]&`S&O!`)xS+S%x+hT+_&W)yT&]!b$vQ#i^R'{#nT'q#i'rR1Z,lT(a#v(cR(i#yQ-})]Q2U.RQ2|.{Q4{2TQ5l3QQ6t4}Q7U5kQ7y6zQ8S7WR8i8TlhOSj}!n$]%c%f%g%i*o*t/g/jQ%]yR*d%YV$yrs*mR.u*TR*c%WQ$qpR)u$rR)k$lT%az%dT%bz%dT/i*t/j",nodeNames:"\u26A0 extends ArithOp ArithOp InterpolationStart LineComment BlockComment Script ExportDeclaration export Star as VariableName String from ; default FunctionDeclaration async function VariableDefinition TypeParamList TypeDefinition ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation VoidType void TypeofType typeof MemberExpression . ?. PropertyName [ TemplateString Interpolation null super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewExpression new TypeArgList CompareOp < ) ( ArgList UnaryExpression await yield delete LogicOp BitOp ParenthesizedExpression ClassExpression class extends ClassBody MethodDeclaration Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression PrivatePropertyName BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof in const CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXStartTag JSXSelfClosingTag JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast ArrowFunction TypeParamList SequenceExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature CallSignature TypePredicate is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody MethodDeclaration AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement",maxTerm:332,context:trackNewline,nodeProps:[["closedBy",4,"InterpolationEnd",40,"]",51,"}",66,")",132,"JSXSelfCloseEndTag JSXEndTag",146,"JSXEndTag"],["group",-26,8,15,17,58,184,188,191,192,194,197,200,211,213,219,221,223,225,228,234,240,242,244,246,248,250,251,"Statement",-30,12,13,24,27,28,41,43,44,45,47,52,60,68,74,75,91,92,101,103,119,122,124,125,126,127,129,130,148,149,151,"Expression",-22,23,25,29,32,34,152,154,156,157,159,160,161,163,164,165,167,168,169,178,180,182,183,"Type",-3,79,85,90,"ClassItem"],["openedBy",30,"InterpolationStart",46,"[",50,"{",65,"(",131,"JSXStartTag",141,"JSXStartTag JSXStartCloseTag"]],propSources:[jsHighlight],skippedNodes:[0,5,6],repeatNodeCount:28,tokenData:"!C}~R!`OX%TXY%cYZ'RZ[%c[]%T]^'R^p%Tpq%cqr'crs(kst0htu2`uv4pvw5ewx6cxyk|}?O}!O>k!O!P?`!P!QCl!Q!R!0[!R![!1q![!]!7s!]!^!8V!^!_!8g!_!`!9d!`!a!:[!a!b!U#R#S2`#S#T!>i#T#o2`#o#p!>y#p#q!?O#q#r!?f#r#s!?x#s$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$I|2`$I|$I}!Bq$I}$JO!Bq$JO$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`W%YR$UWO!^%T!_#o%T#p~%T7Z%jg$UW'Y7ROX%TXY%cYZ%TZ[%c[p%Tpq%cq!^%T!_#o%T#p$f%T$f$g%c$g#BY%T#BY#BZ%c#BZ$IS%T$IS$I_%c$I_$JT%T$JT$JU%c$JU$KV%T$KV$KW%c$KW&FU%T&FU&FV%c&FV?HT%T?HT?HU%c?HU~%T7Z'YR$UW'Z7RO!^%T!_#o%T#p~%T$T'jS$UW!j#{O!^%T!_!`'v!`#o%T#p~%T$O'}S#e#v$UWO!^%T!_!`(Z!`#o%T#p~%T$O(bR#e#v$UWO!^%T!_#o%T#p~%T)X(rZ$UW]#eOY(kYZ)eZr(krs*rs!^(k!^!_+U!_#O(k#O#P-b#P#o(k#o#p+U#p~(k&r)jV$UWOr)ers*Ps!^)e!^!_*a!_#o)e#o#p*a#p~)e&r*WR$P&j$UWO!^%T!_#o%T#p~%T&j*dROr*ars*ms~*a&j*rO$P&j)X*{R$P&j$UW]#eO!^%T!_#o%T#p~%T)P+ZV]#eOY+UYZ*aZr+Urs+ps#O+U#O#P+w#P~+U)P+wO$P&j]#e)P+zROr+Urs,Ts~+U)P,[U$P&j]#eOY,nZr,nrs-Vs#O,n#O#P-[#P~,n#e,sU]#eOY,nZr,nrs-Vs#O,n#O#P-[#P~,n#e-[O]#e#e-_PO~,n)X-gV$UWOr(krs-|s!^(k!^!_+U!_#o(k#o#p+U#p~(k)X.VZ$P&j$UW]#eOY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x#m/PZ$UW]#eOY.xYZ%TZr.xrs/rs!^.x!^!_,n!_#O.x#O#P0S#P#o.x#o#p,n#p~.x#m/yR$UW]#eO!^%T!_#o%T#p~%T#m0XT$UWO!^.x!^!_,n!_#o.x#o#p,n#p~.x3]0mZ$UWOt%Ttu1`u!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`3]1g]$UW'o3TOt%Ttu1`u!Q%T!Q![1`![!^%T!_!c%T!c!}1`!}#R%T#R#S1`#S#T%T#T#o1`#p$g%T$g~1`7Z2k_$UW#zS']$y'g3SOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`[3q_$UW#zSOt%Ttu3ju}%T}!O3j!O!Q%T!Q![3j![!^%T!_!c%T!c!}3j!}#R%T#R#S3j#S#T%T#T#o3j#p$g%T$g~3j$O4wS#^#v$UWO!^%T!_!`5T!`#o%T#p~%T$O5[R$UW#o#vO!^%T!_#o%T#p~%T5b5lU'x5Y$UWOv%Tvw6Ow!^%T!_!`5T!`#o%T#p~%T$O6VS$UW#i#vO!^%T!_!`5T!`#o%T#p~%T)X6jZ$UW]#eOY6cYZ7]Zw6cwx*rx!^6c!^!_8T!_#O6c#O#P:T#P#o6c#o#p8T#p~6c&r7bV$UWOw7]wx*Px!^7]!^!_7w!_#o7]#o#p7w#p~7]&j7zROw7wwx*mx~7w)P8YV]#eOY8TYZ7wZw8Twx+px#O8T#O#P8o#P~8T)P8rROw8Twx8{x~8T)P9SU$P&j]#eOY9fZw9fwx-Vx#O9f#O#P9}#P~9f#e9kU]#eOY9fZw9fwx-Vx#O9f#O#P9}#P~9f#e:QPO~9f)X:YV$UWOw6cwx:ox!^6c!^!_8T!_#o6c#o#p8T#p~6c)X:xZ$P&j$UW]#eOY;kYZ%TZw;kwx/rx!^;k!^!_9f!_#O;k#O#PW{!^%T!_!`5T!`#o%T#p~%T$O>_S#[#v$UWO!^%T!_!`5T!`#o%T#p~%T%w>rSj%o$UWO!^%T!_!`5T!`#o%T#p~%T&i?VR!R&a$UWO!^%T!_#o%T#p~%T7Z?gVu5^$UWO!O%T!O!P?|!P!Q%T!Q![@r![!^%T!_#o%T#p~%T!{@RT$UWO!O%T!O!P@b!P!^%T!_#o%T#p~%T!{@iR!Q!s$UWO!^%T!_#o%T#p~%T!{@yZ$UWk!sO!Q%T!Q![@r![!^%T!_!g%T!g!hAl!h#R%T#R#S@r#S#X%T#X#YAl#Y#o%T#p~%T!{AqZ$UWO{%T{|Bd|}%T}!OBd!O!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T!{BiV$UWO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T!{CVV$UWk!sO!Q%T!Q![CO![!^%T!_#R%T#R#SCO#S#o%T#p~%T7ZCs`$UW#]#vOYDuYZ%TZzDuz{Jl{!PDu!P!Q!-e!Q!^Du!^!_Fx!_!`!.^!`!a!/]!a!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXD|[$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~DuXEy_$UW}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%TPF}V}POYFxZ!PFx!P!QGd!Q!}Fx!}#OG{#O#PHh#P~FxPGiU}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGdPHOTOYG{Z#OG{#O#PH_#P#QFx#Q~G{PHbQOYG{Z~G{PHkQOYFxZ~FxXHvY$UWOYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~HqXIkV$UWOYHqYZ%TZ!^Hq!^!_G{!_#oHq#o#pG{#p~HqXJVV$UWOYDuYZ%TZ!^Du!^!_Fx!_#oDu#o#pFx#p~Du7ZJs^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q!,R!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl7ZKtV$UWOzKoz{LZ{!^Ko!^!_M]!_#oKo#o#pM]#p~Ko7ZL`X$UWOzKoz{LZ{!PKo!P!QL{!Q!^Ko!^!_M]!_#oKo#o#pM]#p~Ko7ZMSR$UWU7RO!^%T!_#o%T#p~%T7RM`ROzM]z{Mi{~M]7RMlTOzM]z{Mi{!PM]!P!QM{!Q~M]7RNQOU7R7ZNX^$UW}POYJlYZKoZzJlz{NQ{!PJl!P!Q! T!Q!^Jl!^!_!!]!_!}Jl!}#O!'|#O#P!+a#P#oJl#o#p!!]#p~Jl7Z! ^_$UWU7R}PO!^%T!_#Z%T#Z#[Er#[#]%T#]#^Er#^#a%T#a#bEr#b#g%T#g#hEr#h#i%T#i#jEr#j#m%T#m#nEr#n#o%T#p~%T7R!!bY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!&x!Q!}!!]!}#O!$`#O#P!&f#P~!!]7R!#VY}POY!!]YZM]Zz!!]z{!#Q{!P!!]!P!Q!#u!Q!}!!]!}#O!$`#O#P!&f#P~!!]7R!#|UU7R}P#Z#[Gd#]#^Gd#a#bGd#g#hGd#i#jGd#m#nGd7R!$cWOY!$`YZM]Zz!$`z{!${{#O!$`#O#P!&S#P#Q!!]#Q~!$`7R!%OYOY!$`YZM]Zz!$`z{!${{!P!$`!P!Q!%n!Q#O!$`#O#P!&S#P#Q!!]#Q~!$`7R!%sTU7ROYG{Z#OG{#O#PH_#P#QFx#Q~G{7R!&VTOY!$`YZM]Zz!$`z{!${{~!$`7R!&iTOY!!]YZM]Zz!!]z{!#Q{~!!]7R!&}_}POzM]z{Mi{#ZM]#Z#[!&x#[#]M]#]#^!&x#^#aM]#a#b!&x#b#gM]#g#h!&x#h#iM]#i#j!&x#j#mM]#m#n!&x#n~M]7Z!(R[$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|7Z!(|^$UWOY!'|YZKoZz!'|z{!(w{!P!'|!P!Q!)x!Q!^!'|!^!_!$`!_#O!'|#O#P!*o#P#QJl#Q#o!'|#o#p!$`#p~!'|7Z!*PY$UWU7ROYHqYZ%TZ!^Hq!^!_G{!_#OHq#O#PIf#P#QDu#Q#oHq#o#pG{#p~Hq7Z!*tX$UWOY!'|YZKoZz!'|z{!(w{!^!'|!^!_!$`!_#o!'|#o#p!$`#p~!'|7Z!+fX$UWOYJlYZKoZzJlz{NQ{!^Jl!^!_!!]!_#oJl#o#p!!]#p~Jl7Z!,Yc$UW}POzKoz{LZ{!^Ko!^!_M]!_#ZKo#Z#[!,R#[#]Ko#]#^!,R#^#aKo#a#b!,R#b#gKo#g#h!,R#h#iKo#i#j!,R#j#mKo#m#n!,R#n#oKo#o#pM]#p~Ko7Z!-lV$UWT7ROY!-eYZ%TZ!^!-e!^!_!.R!_#o!-e#o#p!.R#p~!-e7R!.WQT7ROY!.RZ~!.R$P!.g[$UW#o#v}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Du]!/f[#wS$UW}POYDuYZ%TZ!PDu!P!QEr!Q!^Du!^!_Fx!_!}Du!}#OHq#O#PJQ#P#oDu#o#pFx#p~Du!{!0cd$UWk!sO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#U%T#U#V!3X#V#X%T#X#YAl#Y#b%T#b#c!2w#c#d!4m#d#l%T#l#m!5{#m#o%T#p~%T!{!1x_$UWk!sO!O%T!O!P@r!P!Q%T!Q![!1q![!^%T!_!g%T!g!hAl!h#R%T#R#S!1q#S#X%T#X#YAl#Y#b%T#b#c!2w#c#o%T#p~%T!{!3OR$UWk!sO!^%T!_#o%T#p~%T!{!3^W$UWO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#o%T#p~%T!{!3}Y$UWk!sO!Q%T!Q!R!3v!R!S!3v!S!^%T!_#R%T#R#S!3v#S#b%T#b#c!2w#c#o%T#p~%T!{!4rV$UWO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#o%T#p~%T!{!5`X$UWk!sO!Q%T!Q!Y!5X!Y!^%T!_#R%T#R#S!5X#S#b%T#b#c!2w#c#o%T#p~%T!{!6QZ$UWO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#o%T#p~%T!{!6z]$UWk!sO!Q%T!Q![!6s![!^%T!_!c%T!c!i!6s!i#R%T#R#S!6s#S#T%T#T#Z!6s#Z#b%T#b#c!2w#c#o%T#p~%T$u!7|R!]V$UW#m$fO!^%T!_#o%T#p~%T!q!8^R_!i$UWO!^%T!_#o%T#p~%T5w!8rR'bd!a/n#x&s'|P!P!Q!8{!^!_!9Q!_!`!9_W!9QO$WW#v!9VP#`#v!_!`!9Y#v!9_O#o#v#v!9dO#a#v$u!9kT!{$m$UWO!^%T!_!`'v!`!a!9z!a#o%T#p~%T$P!:RR#W#w$UWO!^%T!_#o%T#p~%T%V!:gT'a!R#a#v$RS$UWO!^%T!_!`!:v!`!a!;W!a#o%T#p~%T$O!:}R#a#v$UWO!^%T!_#o%T#p~%T$O!;_T#`#v$UWO!^%T!_!`5T!`!a!;n!a#o%T#p~%T$O!;uS#`#v$UWO!^%T!_!`5T!`#o%T#p~%T*a!]S#g#v$UWO!^%T!_!`5T!`#o%T#p~%T$a!>pR$UW'f$XO!^%T!_#o%T#p~%T~!?OO!T~5b!?VT'w5Y$UWO!^%T!_!`5T!`#o%T#p#q!=P#q~%T6X!?oR!S5}nQ$UWO!^%T!_#o%T#p~%TX!@PR!kP$UWO!^%T!_#o%T#p~%T7Z!@gr$UW'Y7R#zS']$y'g3SOX%TXY%cYZ%TZ[%c[p%Tpq%cqt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$f%T$f$g%c$g#BY2`#BY#BZ!@Y#BZ$IS2`$IS$I_!@Y$I_$JT2`$JT$JU!@Y$JU$KV2`$KV$KW!@Y$KW&FU2`&FU&FV!@Y&FV?HT2`?HT?HU!@Y?HU~2`7Z!CO_$UW'Z7R#zS']$y'g3SOt%Ttu2`u}%T}!O3j!O!Q%T!Q![2`![!^%T!_!c%T!c!}2`!}#R%T#R#S2`#S#T%T#T#o2`#p$g%T$g~2`",tokenizers:[tsExtends,noSemicolon,incdecToken,template,0,1,2,3,4,5,6,7,8,9,insertSemicolon],topRules:{Script:[0,7]},dialects:{jsx:12107,ts:12109},dynamicPrecedences:{149:1,176:1},specialized:[{term:289,get:o=>spec_identifier[o]||-1},{term:299,get:o=>spec_word[o]||-1},{term:63,get:o=>spec_LessThan[o]||-1}],tokenPrec:12130}),snippets=[snippetCompletion("function ${name}(${params}) {\n ${}\n}",{label:"function",detail:"definition",type:"keyword"}),snippetCompletion("for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\n ${}\n}",{label:"for",detail:"loop",type:"keyword"}),snippetCompletion("for (let ${name} of ${collection}) {\n ${}\n}",{label:"for",detail:"of loop",type:"keyword"}),snippetCompletion("do {\n ${}\n} while (${})",{label:"do",detail:"loop",type:"keyword"}),snippetCompletion("while (${}) {\n ${}\n}",{label:"while",detail:"loop",type:"keyword"}),snippetCompletion(`try { - \${} -} catch (\${error}) { - \${} -}`,{label:"try",detail:"/ catch block",type:"keyword"}),snippetCompletion("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),snippetCompletion(`if (\${}) { - \${} -} else { - \${} -}`,{label:"if",detail:"/ else block",type:"keyword"}),snippetCompletion(`class \${name} { - constructor(\${params}) { - \${} - } -}`,{label:"class",detail:"definition",type:"keyword"}),snippetCompletion('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),snippetCompletion('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],cache=new NodeWeakMap,ScopeNodes=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function defID(o){return(e,s)=>{let a=e.node.getChild("VariableDefinition");return a&&s(a,o),!0}}const functionContext=["FunctionDeclaration"],gatherCompletions={FunctionDeclaration:defID("function"),ClassDeclaration:defID("class"),ClassExpression:()=>!0,EnumDeclaration:defID("constant"),TypeAliasDeclaration:defID("type"),NamespaceDeclaration:defID("namespace"),VariableDefinition(o,e){o.matchContext(functionContext)||e(o,"variable")},TypeDefinition(o,e){e(o,"type")},__proto__:null};function getScope(o,e){let s=cache.get(e);if(s)return s;let a=[],c=!0;function h(d,g){let _=o.sliceString(d.from,d.to);a.push({label:_,type:g})}return e.cursor(IterMode.IncludeAnonymous).iterate(d=>{if(c)c=!1;else if(d.name){let g=gatherCompletions[d.name];if(g&&g(d,h)||ScopeNodes.has(d.name))return!1}else if(d.to-d.from>8192){for(let g of getScope(o,d.node))a.push(g);return!1}}),cache.set(e,a),a}const Identifier=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,dontComplete=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName"];function localCompletionSource(o){let e=syntaxTree(o.state).resolveInner(o.pos,-1);if(dontComplete.indexOf(e.name)>-1)return null;let s=e.to-e.from<20&&Identifier.test(o.state.sliceDoc(e.from,e.to));if(!s&&!o.explicit)return null;let a=[];for(let c=e;c;c=c.parent)ScopeNodes.has(c.name)&&(a=a.concat(getScope(o.state.doc,c)));return{options:a,from:s?e.from:o.pos,validFor:Identifier}}const javascriptLanguage=LRLanguage.define({parser:parser.configure({props:[indentNodeProp.add({IfStatement:continuedIndent({except:/^\s*({|else\b)/}),TryStatement:continuedIndent({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:flatIndent,SwitchBody:o=>{let e=o.textAfter,s=/^\s*\}/.test(e),a=/^\s*(case|default)\b/.test(e);return o.baseIndent+(s?0:a?1:2)*o.unit},Block:delimitedIndent({closing:"}"}),ArrowFunction:o=>o.baseIndent+o.unit,"TemplateString BlockComment":()=>null,"Statement Property":continuedIndent({except:/^{/}),JSXElement(o){let e=/^\s*<\//.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},JSXEscape(o){let e=/\s*\}/.test(o.textAfter);return o.lineIndent(o.node.from)+(e?0:o.unit)},"JSXOpenTag JSXSelfClosingTag"(o){return o.column(o.node.from)+o.unit}}),foldNodeProp.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression":foldInside,BlockComment(o){return{from:o.from+2,to:o.to-2}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),typescriptLanguage=javascriptLanguage.configure({dialect:"ts"}),jsxLanguage=javascriptLanguage.configure({dialect:"jsx"}),tsxLanguage=javascriptLanguage.configure({dialect:"jsx ts"}),keywords="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(o=>({label:o,type:"keyword"}));function javascript(o={}){let e=o.jsx?o.typescript?tsxLanguage:jsxLanguage:o.typescript?typescriptLanguage:javascriptLanguage;return new LanguageSupport(e,[javascriptLanguage.data.of({autocomplete:ifNotIn(dontComplete,completeFromList(snippets.concat(keywords)))}),javascriptLanguage.data.of({autocomplete:localCompletionSource}),o.jsx?autoCloseTags:[]])}function elementName(o,e,s=o.length){if(!e)return"";let a=e.getChild("JSXIdentifier");return a?o.sliceString(a.from,Math.min(a.to,s)):""}const android=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),autoCloseTags=EditorView.inputHandler.of((o,e,s,a)=>{if((android?o.composing:o.compositionStarted)||o.state.readOnly||e!=s||a!=">"&&a!="/"||!javascriptLanguage.isActiveAt(o.state,e,-1))return!1;let{state:c}=o,h=c.changeByRange(d=>{var g,_,b;let{head:$}=d,j=syntaxTree(c).resolveInner($,-1),_e;if(j.name=="JSXStartTag"&&(j=j.parent),a==">"&&j.name=="JSXFragmentTag")return{range:EditorSelection.cursor($+1),changes:{from:$,insert:"><>"}};if(a==">"&&j.name=="JSXIdentifier"){if(((_=(g=j.parent)===null||g===void 0?void 0:g.lastChild)===null||_===void 0?void 0:_.name)!="JSXEndTag"&&(_e=elementName(c.doc,j.parent,$)))return{range:EditorSelection.cursor($+1),changes:{from:$,insert:`>`}}}else if(a=="/"&&j.name=="JSXFragmentTag"){let et=j.parent,tt=et==null?void 0:et.parent;if(et.from==$-1&&((b=tt.lastChild)===null||b===void 0?void 0:b.name)!="JSXEndTag"&&(_e=elementName(c.doc,tt==null?void 0:tt.firstChild,$))){let nt=`/${_e}>`;return{range:EditorSelection.cursor($+nt.length),changes:{from:$,insert:nt}}}}return{range:d}});return h.changes.empty?!1:(o.dispatch(h,{userEvent:"input.type",scrollIntoView:!0}),!0)});var createTheme=o=>{var{theme:e,settings:s,styles:a}=o,c={"&":{backgroundColor:s.background,color:s.foreground},".cm-gutters":{}};s.gutterBackground&&(c[".cm-gutters"].backgroundColor=s.gutterBackground),s.gutterForeground&&(c[".cm-gutters"].color=s.gutterForeground),s.gutterBorder&&(c[".cm-gutters"].borderRightColor=s.gutterBorder),s.caret&&(c[".cm-content"]={caretColor:s.caret},c[".cm-cursor, .cm-dropCursor"]={borderLeftColor:s.caret}),s.lineHighlight&&(c[".cm-activeLine"]={backgroundColor:s.lineHighlight},c[".cm-activeLineGutter"]={backgroundColor:s.lineHighlight}),s.selection&&(c["&.cm-focused .cm-selectionBackground .cm-selectionBackground, & .cm-selectionLayer .cm-selectionBackground, ::selection"]={backgroundColor:s.selection}),s.selectionMatch&&(c["& .cm-selectionMatch"]={backgroundColor:s.selectionMatch});var h=EditorView.theme(c,{dark:e==="dark"}),d=HighlightStyle.define(a),g=[h,syntaxHighlighting(d)];return g};const strudelTheme=createTheme({theme:"dark",settings:{background:"#222",foreground:"#75baff",caret:"#ffcc00",selection:"rgba(128, 203, 196, 0.5)",selectionMatch:"#036dd626",lineHighlight:"#8a91991a",gutterBackground:"transparent",gutterForeground:"#676e95"},styles:[{tag:tags.keyword,color:"#c792ea"},{tag:tags.operator,color:"#89ddff"},{tag:tags.special(tags.variableName),color:"#eeffff"},{tag:tags.typeName,color:"#f07178"},{tag:tags.atom,color:"#f78c6c"},{tag:tags.number,color:"#ff5370"},{tag:tags.definition(tags.variableName),color:"#82aaff"},{tag:tags.string,color:"#c3e88d"},{tag:tags.special(tags.string),color:"#f07178"},{tag:tags.comment,color:"#7d8799"},{tag:tags.variableName,color:"#f07178"},{tag:tags.tagName,color:"#ff5370"},{tag:tags.bracket,color:"#a2a1a4"},{tag:tags.meta,color:"#ffcb6b"},{tag:tags.attributeName,color:"#c792ea"},{tag:tags.propertyName,color:"#c792ea"},{tag:tags.className,color:"#decb6b"},{tag:tags.invalid,color:"#ffffff"}]}),style$1="",setFlash=StateEffect.define(),flashField=StateField.define({create(){return Decoration.none},update(o,e){try{for(let s of e.effects)if(s.is(setFlash))if(s.value){const a=Decoration.mark({attributes:{style:"background-color: #FFCA2880"}});o=Decoration.set([a.range(0,e.newDoc.length)])}else o=Decoration.set([]);return o}catch(s){return console.warn("flash error",s),o}},provide:o=>EditorView.decorations.from(o)}),flash=o=>{o.dispatch({effects:setFlash.of(!0)}),setTimeout(()=>{o.dispatch({effects:setFlash.of(!1)})},200)},setHighlights=StateEffect.define(),highlightField=StateField.define({create(){return Decoration.none},update(o,e){try{for(let s of e.effects)if(s.is(setHighlights)){const a=s.value.map(c=>(c.context.locations||[]).map(({start:h,end:d})=>{const g=c.context.color||"#FFCA28";let _=e.newDoc.line(h.line).from+h.column,b=e.newDoc.line(d.line).from+d.column;const $=e.newDoc.length;return _>$||b>$?void 0:Decoration.mark({attributes:{style:`outline: 1.5px solid ${g};`}}).range(_,b)})).flat().filter(Boolean)||[];o=Decoration.set(a,!0)}return o}catch{return Decoration.set([])}},provide:o=>EditorView.decorations.from(o)}),extensions=[javascript(),strudelTheme,highlightField,flashField];function CodeMirror({value:o,onChange:e,onViewChanged:s,onSelectionChange:a,options:c,editorDidMount:h}){const d=react.exports.useCallback(b=>{e==null||e(b)},[e]),g=react.exports.useCallback(b=>{s==null||s(b)},[s]),_=react.exports.useCallback(b=>{b.selectionSet&&a&&(a==null||a(b.state.selection))},[a]);return jsx(Fragment,{children:jsx(ReactCodeMirror,{value:o,onChange:d,onCreateEditor:g,onUpdate:_,extensions})})}const useKeydown=o=>react.exports.useLayoutEffect(()=>(window.addEventListener("keydown",o,!0),()=>window.removeEventListener("keydown",o,!0)),[o]);function useStrudel({defaultOutput:o,interval:e,getTime:s,code:a,evalOnMount:c=!1}){const[h,d]=react.exports.useState(),[g,_]=react.exports.useState(),[b,$]=react.exports.useState(a),[j,_e]=react.exports.useState(),et=a!==b,tt=react.exports.useMemo(()=>new Scheduler({interval:e,onTrigger:o,onError:d,getTime:s}),[o,e]),nt=react.exports.useCallback(async()=>{if(!a){console.log("no code..");return}try{const{pattern:rt}=await evaluate(a);$(a),tt==null||tt.setPattern(rt),_e(rt),_()}catch(rt){_(rt),console.warn("eval error",rt)}},[a,tt]),st=react.exports.useRef();return react.exports.useEffect(()=>{!st.current&&c&&(st.current=!0,nt())},[nt,c]),{schedulerError:h,scheduler:tt,evalError:g,evaluate:nt,activeCode:b,isDirty:et,pattern:j}}function useHighlighting({view:o,pattern:e,active:s,getTime:a}){const c=react.exports.useRef([]),h=react.exports.useRef();react.exports.useEffect(()=>{if(o)if(e&&s){let g=function(){try{const _=a(),$=[Math.max(h.current||_,_-1/10),_+1/60];h.current=_+1/60,c.current=c.current.filter(_e=>_e.whole.end>_);const j=e.queryArc(...$).filter(_e=>_e.hasOnset());c.current=c.current.concat(j),o.dispatch({effects:setHighlights.of(c.current)})}catch{o.dispatch({effects:setHighlights.of([])})}d=requestAnimationFrame(g)},d=requestAnimationFrame(g);return()=>{cancelAnimationFrame(d)}}else c.current=[],o.dispatch({effects:setHighlights.of([])})},[e,s,o])}const style="";evalScope(controls,__vitePreload(()=>Promise.resolve().then(()=>strudel),void 0),__vitePreload(()=>import("./index.fbde1114.js"),[]),__vitePreload(()=>import("./index.bb9bb2c4.js"),[]),__vitePreload(()=>import("./index.5b4bbb94.js"),[]),__vitePreload(()=>import("./index.e7ac54e9.js"),[]),__vitePreload(()=>import("./osc.c09823d8.js"),[]),__vitePreload(()=>import("./index.0dabc914.js"),[]),__vitePreload(()=>import("./serial.b42b098c.js"),[]),__vitePreload(()=>import("./index.cc0b04cf.js"),[]));const defaultTune=`samples({ - bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'], - sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'], - hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'], -}, 'github:tidalcycles/Dirt-Samples/master/'); -stack( - s("bd,[~ ],hh(3,4)") // drums - .speed(perlin.range(.7,.9)) // random sample speed variation - //.hush() - ,"" // bassline - .off(1/8,x=>x.add(12).degradeBy(.5)) // random octave jumps - .add(perlin.range(0,.5)) // random pitch variation - .superimpose(add(.05)) // add second, slightly detuned voice - .n() // wrap in "n" - .decay(.15).sustain(0) // make each note of equal length - .s('sawtooth') // waveform - .gain(.4) // turn down - .cutoff(sine.slow(7).range(300,5000)) // automate cutoff - //.hush() - ,">".voicings() // chords - .superimpose(x=>x.add(.04)) // add second, slightly detuned voice - .add(perlin.range(0,.5)) // random pitch variation - .n() // wrap in "n" - .s('square') // waveform - .gain(.16) // turn down - .cutoff(500) // fixed cutoff - .attack(1) // slowly fade in - //.hush() - ,"a4 c5 ".struct("x(5,8)") - .superimpose(x=>x.add(.04)) // add second, slightly detuned voice - .add(perlin.range(0,.5)) // random pitch variation - .n() // wrap in "n" - .decay(.1).sustain(0) // make notes short - .s('triangle') // waveform - .degradeBy(perlin.range(0,.5)) // randomly controlled random removal :) - .echoWith(4,.125,(x,n)=>x.gain(.15*1/(n+1))) // echo notes - //.hush() -) -.fast(2/3)`,ctx=getAudioContext(),getTime=()=>ctx.currentTime;function App(){const[o,e]=react.exports.useState(defaultTune),[s,a]=react.exports.useState(),{scheduler:c,evaluate:h,schedulerError:d,evalError:g,isDirty:_,activeCode:b,pattern:$}=useStrudel({code:o,defaultOutput:webaudioOutput,getTime});useHighlighting({view:s,pattern:$,active:!(b!=null&&b.includes("strudel disable-highlighting")),getTime:()=>c.phase});const j=g||d;return useKeydown(react.exports.useCallback(async _e=>{(_e.ctrlKey||_e.altKey)&&(_e.code==="Enter"?(_e.preventDefault(),flash(s),await h(),_e.shiftKey&&(panic(),c.stop(),c.start()),c.started||c.start()):_e.code==="Period"&&(c.pause(),panic(),_e.preventDefault()))},[c,h,s])),jsxs("div",{children:[jsxs("nav",{className:"z-[12] w-full flex justify-center absolute bottom-0",children:[jsxs("div",{className:"bg-slate-500 space-x-2 px-2 rounded-t-md",children:[jsx("button",{onClick:async()=>{await h(),await getAudioContext().resume(),c.start()},children:"start"}),jsx("button",{onClick:()=>c.stop(),children:"stop"}),_&&jsx("button",{onClick:()=>h(),children:"eval"})]}),j&&jsxs("p",{children:["error ",j.message]})]}),jsx(CodeMirror,{value:o,onChange:e,onViewChanged:a})]})}client.createRoot(document.getElementById("root")).render(jsx(React.StrictMode,{children:jsx(App,{})}));export{Hap as H,Pattern$3 as P,getDefaultExportFromCjs as a,chooseInWith as b,commonjsGlobal as c,rand as d,strudel as e,getAudioContext as f,getAugmentedNamespace as g,getDestination as h,getCachedBuffer as i,getLoadedBuffer as j,loadGithubSamples as k,loadBuffer as l,mod as m,samples as n,resetLoadedSamples as o,panic as p,getLoadedSamples$1 as q,reify$1 as r,stack as s,webaudioOutput as w}; diff --git a/packages/react/examples/nano-repl/dist/assets/index.fbde1114.js b/packages/react/examples/nano-repl/dist/assets/index.fbde1114.js deleted file mode 100644 index 16a09e8cb..000000000 --- a/packages/react/examples/nano-repl/dist/assets/index.fbde1114.js +++ /dev/null @@ -1 +0,0 @@ -import{P as _,m as Lt,g as Ut,c as Y,a as Xt,r as Kt,H as Qt,s as Yt}from"./index.ec9f9930.js";const C=(n,t)=>Array(Math.abs(t)+1).join(n);function g(n,t,e){return function(...o){return console.warn(`${n} is deprecated. Use ${t}.`),e.apply(this,o)}}function z(n){return n!==null&&typeof n=="object"&&typeof n.name=="string"}function q(n){return n!==null&&typeof n=="object"&&typeof n.step=="number"&&typeof n.alt=="number"}const Qn=[0,2,4,-1,1,3,5],Yn=Qn.map(n=>Math.floor(n*7/12));function en(n){const{step:t,alt:e,oct:o,dir:r=1}=n,i=Qn[t]+7*e;if(o===void 0)return[r*i];const a=o-Yn[t]-4*e;return[r*i,r*a]}const Zt=[3,0,4,1,5,2,6];function on(n){const[t,e,o]=n,r=Zt[Jt(t)],i=Math.floor((t+1)/7);if(e===void 0)return{step:r,alt:i,dir:o};const a=e+4*i+Yn[r];return{step:r,alt:i,oct:a,dir:o}}function Jt(n){const t=(n+1)%7;return t<0?7+t:t}const Zn={empty:!0,name:"",pc:"",acc:""},Dn=new Map,vn=n=>"CDEFGAB".charAt(n),E=n=>n<0?C("b",-n):C("#",n),G=n=>n[0]==="b"?-n.length:n.length;function u(n){const t=Dn.get(n);if(t)return t;const e=typeof n=="string"?te(n):q(n)?u(ee(n)):z(n)?u(n.name):Zn;return Dn.set(n,e),e}const Wt=/^([a-gA-G]?)(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)$/;function rn(n){const t=Wt.exec(n);return[t[1].toUpperCase(),t[2].replace(/x/g,"##"),t[3],t[4]]}function F(n){return u(on(n))}const ne=(n,t)=>(n%t+t)%t,pn=[0,2,4,5,7,9,11];function te(n){const t=rn(n);if(t[0]===""||t[3]!=="")return Zn;const e=t[0],o=t[1],r=t[2],i=(e.charCodeAt(0)+3)%7,a=G(o),s=r.length?+r:void 0,c=en({step:i,alt:a,oct:s}),l=e+o+r,m=e+o,d=(pn[i]+a+120)%12,M=s===void 0?ne(pn[i]+a,12)-12*99:pn[i]+a+12*(s+1),h=M>=0&&M<=127?M:null,A=s===void 0?null:Math.pow(2,(M-69)/12)*440;return{empty:!1,acc:o,alt:a,chroma:d,coord:c,freq:A,height:M,letter:e,midi:h,name:l,oct:s,pc:m,step:i}}function ee(n){const{step:t,alt:e,oct:o}=n,r=vn(t);if(!r)return"";const i=r+E(e);return o||o===0?i+o:i}const yn={empty:!0,name:"",acc:""},oe="([-+]?\\d+)(d{1,4}|m|M|P|A{1,4})",re="(AA|A|P|M|m|d|dd)([-+]?\\d+)",ie=new RegExp("^"+oe+"|"+re+"$");function $n(n){const t=ie.exec(`${n}`);return t===null?["",""]:t[1]?[t[1],t[2]]:[t[4],t[3]]}const Rn={};function f(n){return typeof n=="string"?Rn[n]||(Rn[n]=ae(n)):q(n)?f(ce(n)):z(n)?f(n.name):yn}const kn=[0,2,4,5,7,9,11],Jn="PMMPPMM";function ae(n){const t=$n(n);if(t[0]==="")return yn;const e=+t[0],o=t[1],r=(Math.abs(e)-1)%7,i=Jn[r];if(i==="M"&&o==="P")return yn;const a=i==="M"?"majorable":"perfectable",s=""+e+o,c=e<0?-1:1,l=e===8||e===-8?e:c*(r+1),m=se(a,o),d=Math.floor((Math.abs(e)-1)/7),M=c*(kn[r]+m+12*d),h=(c*(kn[r]+m)%12+12)%12,A=en({step:r,alt:m,oct:d,dir:c});return{empty:!1,name:s,num:e,q:o,step:r,alt:m,dir:c,type:a,simple:l,semitones:M,chroma:h,coord:A,oct:d}}function B(n,t){const[e,o=0]=n,r=e*7+o*12<0,i=t||r?[-e,-o,-1]:[e,o,1];return f(on(i))}function se(n,t){return t==="M"&&n==="majorable"||t==="P"&&n==="perfectable"?0:t==="m"&&n==="majorable"?-1:/^A+$/.test(t)?t.length:/^d+$/.test(t)?-1*(n==="perfectable"?t.length:t.length+1):0}function ce(n){const{step:t,alt:e,oct:o=0,dir:r}=n;if(!r)return"";const i=t+1+7*o,a=i===0?t+1:i,s=r<0?"-":"",c=Jn[t]==="M"?"majorable":"perfectable";return s+a+me(c,e)}function me(n,t){return t===0?n==="majorable"?"M":"P":t===-1&&n==="majorable"?"m":t>0?C("A",t):C("d",n==="perfectable"?t:t+1)}function P(n,t){const e=u(n),o=f(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=r.length===1?[r[0]+i[0]]:[r[0]+i[0],r[1]+i[1]];return F(a).name}function D(n,t){const e=u(n),o=u(t);if(e.empty||o.empty)return"";const r=e.coord,i=o.coord,a=i[0]-r[0],s=r.length===2&&i.length===2?i[1]-r[1]:-Math.floor(a*7/12),c=o.height===e.height&&o.midi!==null&&e.midi!==null&&e.step>o.step;return B([a,s],c).name}const Wn=Object.freeze(Object.defineProperty({__proto__:null,accToAlt:G,altToAcc:E,coordToInterval:B,coordToNote:F,decode:on,deprecate:g,distance:D,encode:en,fillStr:C,interval:f,isNamed:z,isPitch:q,note:u,stepToLetter:vn,tokenizeInterval:$n,tokenizeNote:rn,transpose:P},Symbol.toStringTag,{value:"Module"})),On=(n,t)=>Array(t+1).join(n),ue=/^(_{1,}|=|\^{1,}|)([abcdefgABCDEFG])([,']*)$/;function nt(n){const t=ue.exec(n);return t?[t[1],t[2],t[3]]:["","",""]}function W(n){const[t,e,o]=nt(n);if(e==="")return"";let r=4;for(let a=0;a96?e.toUpperCase()+i+(r+1):e+i+r}function tt(n){const t=u(n);if(t.empty||!t.oct&&t.oct!==0)return"";const{letter:e,acc:o,oct:r}=t,i=o[0]==="b"?o.replace(/b/g,"_"):o.replace(/#/g,"^"),a=r>4?e.toLowerCase():e,s=r===5?"":r>4?On("'",r-5):On(",",4-r);return i+a+s}function le(n,t){return tt(P(W(n),t))}function de(n,t){return D(W(n),W(t))}var Me={abcToScientificNotation:W,scientificToAbcNotation:tt,tokenize:nt,transpose:le,distance:de};function fe(n,t){const e=[];for(;t--;e[t]=t+n);return e}function Pe(n,t){const e=[];for(;t--;e[t]=n-t);return e}function pe(n,t){return nt===0||t)}function et(n){return n.map(e=>u(e)).filter(e=>!e.empty).sort((e,o)=>e.height-o.height).map(e=>e.name)}function ge(n){return et(n).filter((t,e,o)=>e===0||t!==o[e-1])}function be(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function ot(n){return n.length===0?[[]]:ot(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}const Ae=Object.freeze(Object.defineProperty({__proto__:null,compact:ye,permutations:ot,range:pe,rotate:he,shuffle:be,sortedNoteNames:et,sortedUniqNoteNames:ge},Symbol.toStringTag,{value:"Module"}));function ve(n,t){const e=[];for(;t--;e[t]=t+n);return e}function $e(n,t){const e=[];for(;t--;e[t]=n-t);return e}function an(n,t){return nt===0||t)}function Ne(n,t=Math.random){let e,o,r=n.length;for(;r;)e=Math.floor(t()*r--),o=n[r],n[r]=n[e],n[e]=o;return n}function rt(n){return n.length===0?[[]]:rt(n.slice(1)).reduce((t,e)=>t.concat(n.map((o,r)=>{const i=e.slice();return i.splice(r,0,n[0]),i})),[])}var Ie={compact:Nn,permutations:rt,range:an,rotate:H,shuffle:Ne};const T={empty:!0,name:"",setNum:0,chroma:"000000000000",normalized:"000000000000",intervals:[]},In=n=>Number(n).toString(2),Fn=n=>parseInt(n,2),je=/^[01]{12}$/;function it(n){return je.test(n)}const Se=n=>typeof n=="number"&&n>=0&&n<=4095,Te=n=>n&&it(n.chroma),zn={[T.chroma]:T};function p(n){const t=it(n)?n:Se(n)?In(n):Array.isArray(n)?ze(n):Te(n)?n.chroma:T.chroma;return zn[t]=zn[t]||Fe(t)}const Ve=g("Pcset.pcset","Pcset.get",p),_e=n=>p(n).chroma,Ce=n=>p(n).intervals,we=n=>p(n).setNum,xe=["1P","2m","2M","3m","3M","4P","5d","5P","6m","6M","7m","7M"];function Ee(n){const t=[];for(let e=0;e<12;e++)n.charAt(e)==="1"&&t.push(xe[e]);return t}function De(){return an(2048,4095).map(In)}function jn(n,t=!0){const o=p(n).chroma.split("");return Nn(o.map((r,i)=>{const a=H(i,o);return t&&a[0]==="0"?null:a.join("")}))}function Re(n,t){return p(n).setNum===p(t).setNum}function sn(n){const t=p(n).setNum;return e=>{const o=p(e).setNum;return t&&t!==o&&(o&t)===o}}function cn(n){const t=p(n).setNum;return e=>{const o=p(e).setNum;return t&&t!==o&&(o|t)===o}}function at(n){const t=p(n);return e=>{const o=u(e);return t&&!o.empty&&t.chroma.charAt(o.chroma)==="1"}}function ke(n){const t=at(n);return e=>e.filter(t)}var st={get:p,chroma:_e,num:we,intervals:Ce,chromas:De,isSupersetOf:cn,isSubsetOf:sn,isNoteIncludedIn:at,isEqual:Re,filter:ke,modes:jn,pcset:Ve};function Oe(n){const t=n.split("");return t.map((e,o)=>H(o,t).join(""))}function Fe(n){const t=Fn(n),e=Oe(n).map(Fn).filter(i=>i>=2048).sort()[0],o=In(e),r=Ee(n);return{empty:!1,name:"",setNum:t,chroma:n,normalized:o,intervals:r}}function ze(n){if(n.length===0)return T.chroma;let t;const e=[0,0,0,0,0,0,0,0,0,0,0,0];for(let o=0;on.name).filter(n=>n)}function Le(){return R.map(n=>n.aliases[0]).filter(n=>n)}function Ue(){return Object.keys(j)}function k(){return R.slice()}const Xe=g("ChordType.entries","ChordType.all",k);function Ke(){R=[],j={}}function ct(n,t,e){const o=Ye(n),r={...p(n),name:e||"",quality:o,intervals:n,aliases:t};R.push(r),r.name&&(j[r.name]=r),j[r.setNum]=r,j[r.chroma]=r,r.aliases.forEach(i=>Qe(r,i))}function Qe(n,t){j[t]=n}function Ye(n){const t=e=>n.indexOf(e)!==-1;return t("5A")?"Augmented":t("3M")?"Major":t("5d")?"Diminished":t("3m")?"Minor":"Unknown"}qe.forEach(([n,t,e])=>ct(n.split(" "),e.split(" "),t));R.sort((n,t)=>n.setNum-t.setNum);var mt={names:He,symbols:Le,get:Sn,all:k,add:ct,removeAll:Ke,keys:Ue,entries:Xe,chordType:Be};const Ze=n=>{const t=n.reduce((e,o)=>{const r=u(o).chroma;return r!==void 0&&(e[r]=e[r]||u(o).name),e},{});return e=>t[e]};function Je(n){const t=n.map(o=>u(o).pc).filter(o=>o);return u.length===0?[]:We(t,1).filter(o=>o.weight).sort((o,r)=>r.weight-o.weight).map(o=>o.name)}function We(n,t){const e=n[0],o=u(e).chroma,r=Ze(n),i=jn(n,!1),a=[];return i.forEach((s,c)=>{k().filter(m=>m.chroma===s).forEach(m=>{const d=m.aliases[0],M=r(c);c!==o?a.push({weight:.5*t,name:`${M}${d}/${e}`}):a.push({weight:1*t,name:`${M}${d}`})})}),a}const no=[["1P 2M 3M 5P 6M","major pentatonic","pentatonic"],["1P 3M 4P 5P 7M","ionian pentatonic"],["1P 3M 4P 5P 7m","mixolydian pentatonic","indian"],["1P 2M 4P 5P 6M","ritusen"],["1P 2M 4P 5P 7m","egyptian"],["1P 3M 4P 5d 7m","neopolitan major pentatonic"],["1P 3m 4P 5P 6m","vietnamese 1"],["1P 2m 3m 5P 6m","pelog"],["1P 2m 4P 5P 6m","kumoijoshi"],["1P 2M 3m 5P 6m","hirajoshi"],["1P 2m 4P 5d 7m","iwato"],["1P 2m 4P 5P 7m","in-sen"],["1P 3M 4A 5P 7M","lydian pentatonic","chinese"],["1P 3m 4P 6m 7m","malkos raga"],["1P 3m 4P 5d 7m","locrian pentatonic","minor seven flat five pentatonic"],["1P 3m 4P 5P 7m","minor pentatonic","vietnamese 2"],["1P 3m 4P 5P 6M","minor six pentatonic"],["1P 2M 3m 5P 6M","flat three pentatonic","kumoi"],["1P 2M 3M 5P 6m","flat six pentatonic"],["1P 2m 3M 5P 6M","scriabin"],["1P 3M 5d 6m 7m","whole tone pentatonic"],["1P 3M 4A 5A 7M","lydian #5P pentatonic"],["1P 3M 4A 5P 7m","lydian dominant pentatonic"],["1P 3m 4P 5P 7M","minor #7M pentatonic"],["1P 3m 4d 5d 7m","super locrian pentatonic"],["1P 2M 3m 4P 5P 7M","minor hexatonic"],["1P 2A 3M 5P 5A 7M","augmented"],["1P 2M 3m 3M 5P 6M","major blues"],["1P 2M 4P 5P 6M 7m","piongio"],["1P 2m 3M 4A 6M 7m","prometheus neopolitan"],["1P 2M 3M 4A 6M 7m","prometheus"],["1P 2m 3M 5d 6m 7m","mystery #1"],["1P 2m 3M 4P 5A 6M","six tone symmetric"],["1P 2M 3M 4A 5A 7m","whole tone","messiaen's mode #1"],["1P 2m 4P 4A 5P 7M","messiaen's mode #5"],["1P 3m 4P 5d 5P 7m","minor blues","blues"],["1P 2M 3M 4P 5d 6m 7m","locrian major","arabian"],["1P 2m 3M 4A 5P 6m 7M","double harmonic lydian"],["1P 2M 3m 4P 5P 6m 7M","harmonic minor"],["1P 2m 2A 3M 4A 6m 7m","altered","super locrian","diminished whole tone","pomeroy"],["1P 2M 3m 4P 5d 6m 7m","locrian #2","half-diminished","aeolian b5"],["1P 2M 3M 4P 5P 6m 7m","mixolydian b6","melodic minor fifth mode","hindu"],["1P 2M 3M 4A 5P 6M 7m","lydian dominant","lydian b7","overtone"],["1P 2M 3M 4A 5P 6M 7M","lydian"],["1P 2M 3M 4A 5A 6M 7M","lydian augmented"],["1P 2m 3m 4P 5P 6M 7m","dorian b2","phrygian #6","melodic minor second mode"],["1P 2M 3m 4P 5P 6M 7M","melodic minor"],["1P 2m 3m 4P 5d 6m 7m","locrian"],["1P 2m 3m 4d 5d 6m 7d","ultralocrian","superlocrian bb7","superlocrian diminished"],["1P 2m 3m 4P 5d 6M 7m","locrian 6","locrian natural 6","locrian sharp 6"],["1P 2A 3M 4P 5P 5A 7M","augmented heptatonic"],["1P 2M 3m 4A 5P 6M 7m","dorian #4","ukrainian dorian","romanian minor","altered dorian"],["1P 2M 3m 4A 5P 6M 7M","lydian diminished"],["1P 2m 3m 4P 5P 6m 7m","phrygian"],["1P 2M 3M 4A 5A 7m 7M","leading whole tone"],["1P 2M 3M 4A 5P 6m 7m","lydian minor"],["1P 2m 3M 4P 5P 6m 7m","phrygian dominant","spanish","phrygian major"],["1P 2m 3m 4P 5P 6m 7M","balinese"],["1P 2m 3m 4P 5P 6M 7M","neopolitan major"],["1P 2M 3m 4P 5P 6m 7m","aeolian","minor"],["1P 2M 3M 4P 5P 6m 7M","harmonic major"],["1P 2m 3M 4P 5P 6m 7M","double harmonic major","gypsy"],["1P 2M 3m 4P 5P 6M 7m","dorian"],["1P 2M 3m 4A 5P 6m 7M","hungarian minor"],["1P 2A 3M 4A 5P 6M 7m","hungarian major"],["1P 2m 3M 4P 5d 6M 7m","oriental"],["1P 2m 3m 3M 4A 5P 7m","flamenco"],["1P 2m 3m 4A 5P 6m 7M","todi raga"],["1P 2M 3M 4P 5P 6M 7m","mixolydian","dominant"],["1P 2m 3M 4P 5d 6m 7M","persian"],["1P 2M 3M 4P 5P 6M 7M","major","ionian"],["1P 2m 3M 5d 6m 7m 7M","enigmatic"],["1P 2M 3M 4P 5A 6M 7M","major augmented","major #5","ionian augmented","ionian #5"],["1P 2A 3M 4A 5P 6M 7M","lydian #9"],["1P 2m 2M 4P 4A 5P 6m 7M","messiaen's mode #4"],["1P 2m 3M 4P 4A 5P 6m 7M","purvi raga"],["1P 2m 3m 3M 4P 5P 6m 7m","spanish heptatonic"],["1P 2M 3M 4P 5P 6M 7m 7M","bebop"],["1P 2M 3m 3M 4P 5P 6M 7m","bebop minor"],["1P 2M 3M 4P 5P 5A 6M 7M","bebop major"],["1P 2m 3m 4P 5d 5P 6m 7m","bebop locrian"],["1P 2M 3m 4P 5P 6m 7m 7M","minor bebop"],["1P 2M 3m 4P 5d 6m 6M 7M","diminished","whole-half diminished"],["1P 2M 3M 4P 5d 5P 6M 7M","ichikosucho"],["1P 2M 3m 4P 5P 6m 6M 7M","minor six diminished"],["1P 2m 3m 3M 4A 5P 6M 7m","half-whole diminished","dominant diminished","messiaen's mode #2"],["1P 3m 3M 4P 5P 6M 7m 7M","kafi raga"],["1P 2M 3M 4P 4A 5A 6A 7M","messiaen's mode #6"],["1P 2M 3m 3M 4P 5d 5P 6M 7m","composite blues"],["1P 2M 3m 3M 4A 5P 6m 7m 7M","messiaen's mode #3"],["1P 2m 2M 3m 4P 4A 5P 6m 6M 7M","messiaen's mode #7"],["1P 2m 2M 3m 3M 4P 5d 5P 6m 6M 7m 7M","chromatic"]],to={...T,intervals:[],aliases:[]};let mn=[],S={};function ut(){return mn.map(n=>n.name)}function un(n){return S[n]||to}const eo=g("ScaleDictionary.scaleType","ScaleType.get",un);function L(){return mn.slice()}const oo=g("ScaleDictionary.entries","ScaleType.all",L);function ro(){return Object.keys(S)}function io(){mn=[],S={}}function lt(n,t,e=[]){const o={...p(n),name:t,intervals:n,aliases:e};return mn.push(o),S[o.name]=o,S[o.setNum]=o,S[o.chroma]=o,o.aliases.forEach(r=>ao(o,r)),o}function ao(n,t){S[t]=n}no.forEach(([n,t,...e])=>lt(n.split(" "),t,e));var dt={names:ut,get:un,all:L,add:lt,removeAll:io,keys:ro,entries:oo,scaleType:eo};const gn={empty:!0,name:"",symbol:"",root:"",rootDegree:0,type:"",tonic:null,setNum:NaN,quality:"Unknown",chroma:"",normalized:"",aliases:[],notes:[],intervals:[]},so=/^(6|64|7|9|11|13)$/;function ln(n){const[t,e,o,r]=rn(n);return t===""?["",n]:t==="A"&&r==="ug"?["","aug"]:!r&&(o==="4"||o==="5")?[t+e,o]:so.test(o)?[t+e,o+r]:[t+e+o,r]}function U(n){if(n==="")return gn;if(Array.isArray(n)&&n.length===2)return Z(n[1],n[0]);{const[t,e]=ln(n),o=Z(e,t);return o.empty?Z(n):o}}function Z(n,t,e){const o=Sn(n),r=u(t||""),i=u(e||"");if(o.empty||t&&r.empty||e&&i.empty)return gn;const a=D(r.pc,i.pc),s=o.intervals.indexOf(a)+1;if(!i.empty&&!s)return gn;const c=Array.from(o.intervals);for(let M=1;MP(r,M));n=o.aliases.indexOf(n)!==-1?n:o.aliases[0];const m=`${r.empty?"":r.pc}${n}${i.empty||s<=1?"":"/"+i.pc}`,d=`${t?r.pc+" ":""}${o.name}${s>1&&e?" over "+i.pc:""}`;return{...o,name:d,symbol:m,type:o.name,root:i.name,intervals:c,rootDegree:s,tonic:r.name,notes:l}}const co=g("Chord.chord","Chord.get",U);function mo(n,t){const[e,o]=ln(n);return e?P(e,t)+o:n}function uo(n){const t=U(n),e=cn(t.chroma);return L().filter(o=>e(o.chroma)).map(o=>o.name)}function lo(n){const t=U(n),e=cn(t.chroma);return k().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}function Mo(n){const t=U(n),e=sn(t.chroma);return k().filter(o=>e(o.chroma)).map(o=>t.tonic+o.aliases[0])}var fo={getChord:Z,get:U,detect:Je,chordScales:uo,extended:lo,reduced:Mo,tokenize:ln,transpose:mo,chord:co};const Po=[[.125,"dl",["large","duplex longa","maxima","octuple","octuple whole"]],[.25,"l",["long","longa"]],[.5,"d",["double whole","double","breve"]],[1,"w",["whole","semibreve"]],[2,"h",["half","minim"]],[4,"q",["quarter","crotchet"]],[8,"e",["eighth","quaver"]],[16,"s",["sixteenth","semiquaver"]],[32,"t",["thirty-second","demisemiquaver"]],[64,"sf",["sixty-fourth","hemidemisemiquaver"]],[128,"h",["hundred twenty-eighth"]],[256,"th",["two hundred fifty-sixth"]]],dn=[];Po.forEach(([n,t,e])=>$o(n,t,e));const po={empty:!0,name:"",value:0,fraction:[0,0],shorthand:"",dots:"",names:[]};function ho(){return dn.reduce((n,t)=>(t.names.forEach(e=>n.push(e)),n),[])}function yo(){return dn.map(n=>n.shorthand)}const go=/^([^.]+)(\.*)$/;function Tn(n){const[t,e,o]=go.exec(n)||[],r=dn.find(s=>s.shorthand===e||s.names.includes(e));if(!r)return po;const i=No(r.fraction,o.length),a=i[0]/i[1];return{...r,name:n,dots:o,value:a,fraction:i}}const bo=n=>Tn(n).value,Ao=n=>Tn(n).fraction;var vo={names:ho,shorthands:yo,get:Tn,value:bo,fraction:Ao};function $o(n,t,e){dn.push({empty:!1,dots:"",name:"",value:1/n,fraction:n<1?[1/n,1]:[1,n],shorthand:t,names:e})}function No(n,t){const e=Math.pow(2,t);let o=n[0]*e,r=n[1]*e;const i=o;for(let a=0;af(n).name,So=n=>f(n).semitones,To=n=>f(n).q,Vo=n=>f(n).num;function ft(n){const t=f(n);return t.empty?"":t.simple+t.q}function _o(n){const t=f(n);if(t.empty)return"";const e=(7-t.step)%7,o=t.type==="perfectable"?-t.alt:-(t.alt+1);return f({step:e,alt:o,oct:t.oct,dir:t.dir}).name}const Co=[1,2,2,3,3,4,5,5,6,6,7,7],wo="P m M m M P d P m M m M".split(" ");function xo(n){const t=n<0?-1:1,e=Math.abs(n),o=e%12,r=Math.floor(e/12);return t*(Co[o]+7*r)+wo[o]}const Eo=D,Pt=ht((n,t)=>[n[0]+t[0],n[1]+t[1]]),Do=n=>t=>Pt(n,t),Ro=ht((n,t)=>[n[0]-t[0],n[1]-t[1]]);function pt(n,t){const e=Mt(n);if(e.empty)return"";const[o,r,i]=e.coord;return B([o+t,r,i]).name}var bn={names:Io,get:Mt,name:jo,num:Vo,semitones:So,quality:To,fromSemitones:xo,distance:Eo,invert:_o,simplify:ft,add:Pt,addTo:Do,substract:Ro,transposeFifths:pt};function ht(n){return(t,e)=>{const o=f(t).coord,r=f(e).coord;if(o&&r){const i=n(o,r);return B(i).name}}}function yt(n){return+n>=0&&+n<=127}function gt(n){if(yt(n))return+n;const t=u(n);return t.empty?null:t.midi}function ko(n,t=440){return Math.pow(2,(n-69)/12)*t}const Oo=Math.log(2),Fo=Math.log(440);function Vn(n){const t=12*(Math.log(n)-Fo)/Oo+69;return Math.round(t*100)/100}const zo="C C# D D# E F F# G G# A A# B".split(" "),qo="C Db D Eb E F Gb G Ab A Bb B".split(" ");function I(n,t={}){if(isNaN(n)||n===-1/0||n===1/0)return"";n=Math.round(n);const o=(t.sharps===!0?zo:qo)[n%12];if(t.pitchClass)return o;const r=Math.floor(n/12)-1;return o+r}var Go={isMidi:yt,toMidi:gt,midiToFreq:ko,midiToNoteName:I,freqToMidi:Vn};const Bo=["C","D","E","F","G","A","B"],bt=n=>n.name,At=n=>n.map(u).filter(t=>!t.empty);function Ho(n){return n===void 0?Bo.slice():Array.isArray(n)?At(n).map(bt):[]}const y=u,Lo=n=>y(n).name,Uo=n=>y(n).pc,Xo=n=>y(n).acc,Ko=n=>y(n).oct,Qo=n=>y(n).midi,Yo=n=>y(n).freq,Zo=n=>y(n).chroma;function vt(n){return I(n)}function Jo(n){return I(Vn(n))}function Wo(n){return I(Vn(n),{sharps:!0})}function nr(n){return I(n,{sharps:!0})}const _n=P,tr=P,$t=n=>t=>_n(t,n),er=$t,Nt=n=>t=>_n(n,t),or=Nt;function nn(n,t){const e=y(n);if(e.empty)return"";const[o,r]=e.coord;return F(r===void 0?[o+t]:[o+t,r]).name}const rr=nn,Cn=(n,t)=>n.height-t.height,ir=(n,t)=>t.height-n.height;function It(n,t){return t=t||Cn,At(n).sort(t).map(bt)}function jt(n){return It(n,Cn).filter((t,e,o)=>e===0||t!==o[e-1])}const ar=n=>{const t=y(n);return t.empty?"":I(t.midi||t.chroma,{sharps:t.alt>0,pitchClass:t.midi===null})};function St(n,t){const e=y(n);if(e.empty)return"";const o=y(t||I(e.midi||e.chroma,{sharps:e.alt<0,pitchClass:!0}));if(o.empty||o.chroma!==e.chroma)return"";if(e.oct===void 0)return o.pc;const r=e.chroma-e.alt,i=o.chroma-o.alt,a=r>11||i<0?-1:r<0||i>11?1:0,s=e.oct+a;return o.pc+s}var w={names:Ho,get:y,name:Lo,pitchClass:Uo,accidentals:Xo,octave:Ko,midi:Qo,ascending:Cn,descending:ir,sortedNames:It,sortedUniqNames:jt,fromMidi:vt,fromMidiSharps:nr,freq:Yo,fromFreq:Jo,fromFreqSharps:Wo,chroma:Zo,transpose:_n,tr,transposeBy:$t,trBy:er,transposeFrom:Nt,trFrom:or,transposeFifths:nn,trFifths:rr,simplify:ar,enharmonic:St};const Tt={empty:!0,name:"",chordType:""},qn={};function $(n){return typeof n=="string"?qn[n]||(qn[n]=Mr(n)):typeof n=="number"?$(Mn[n]||""):q(n)?mr(n):z(n)?$(n.name):Tt}const sr=g("RomanNumeral.romanNumeral","RomanNumeral.get",$);function cr(n=!0){return(n?Mn:dr).slice()}function mr(n){return $(E(n.alt)+Mn[n.step])}const ur=/^(#{1,}|b{1,}|x{1,}|)(IV|I{1,3}|VI{0,2}|iv|i{1,3}|vi{0,2})([^IViv]*)$/;function lr(n){return ur.exec(n)||["","","",""]}const Vt="I II III IV V VI VII",Mn=Vt.split(" "),dr=Vt.toLowerCase().split(" ");function Mr(n){const[t,e,o,r]=lr(n);if(!o)return Tt;const i=o.toUpperCase(),a=Mn.indexOf(i),s=G(e),c=1;return{empty:!1,name:t,roman:o,interval:f({step:a,alt:s,dir:c}).name,acc:e,chordType:r,alt:s,step:a,major:o===i,oct:0,dir:c}}var fr={names:cr,get:$,romanNumeral:sr};const b=Object.freeze([]),_t={type:"major",tonic:"",alteration:0,keySignature:""},J={tonic:"",grades:b,intervals:b,scale:b,chords:b,chordsHarmonicFunction:b,chordScales:b},Pr={..._t,...J,type:"major",minorRelative:"",scale:b,secondaryDominants:b,secondaryDominantsMinorRelative:b,substituteDominants:b,substituteDominantsMinorRelative:b},pr={..._t,type:"minor",relativeMajor:"",natural:J,harmonic:J,melodic:J},Gn=(n,t,e="")=>t.map((o,r)=>`${n[r]}${e}${o}`);function fn(n,t,e,o){return r=>{const i=n.map(s=>$(s).interval||""),a=i.map(s=>P(r,s));return{tonic:r,grades:n,intervals:i,scale:a,chords:Gn(a,t),chordsHarmonicFunction:e.slice(),chordScales:Gn(a,o," ")}}}const Ct=(n,t)=>{const e=u(n),o=u(t);return e.empty||o.empty?0:o.coord[0]-e.coord[0]},hr=fn("I II III IV V VI VII".split(" "),"maj7 m7 m7 maj7 7 m7 m7b5".split(" "),"T SD T SD D T D".split(" "),"major,dorian,phrygian,lydian,mixolydian,minor,locrian".split(",")),yr=fn("I II bIII IV V bVI bVII".split(" "),"m7 m7b5 maj7 m7 m7 maj7 7".split(" "),"T SD T SD D SD SD".split(" "),"minor,locrian,major,dorian,phrygian,lydian,mixolydian".split(",")),gr=fn("I II bIII IV V bVI VII".split(" "),"mMaj7 m7b5 +maj7 m7 7 maj7 o7".split(" "),"T SD T SD D SD D".split(" "),"harmonic minor,locrian 6,major augmented,lydian diminished,phrygian dominant,lydian #9,ultralocrian".split(",")),br=fn("I II bIII IV V VI VII".split(" "),"m6 m7 +maj7 7 7 m7b5 m7b5".split(" "),"T SD T SD D ".split(" "),"melodic minor,dorian b2,lydian augmented,lydian dominant,mixolydian b6,locrian #2,altered".split(","));function Ar(n){const t=u(n).pc;if(!t)return Pr;const e=hr(t),o=Ct("C",t),r=i=>{const a=$(i);return a.empty?"":P(n,a.interval)+a.chordType};return{...e,type:"major",minorRelative:P(t,"-3m"),alteration:o,keySignature:E(o),secondaryDominants:"- VI7 VII7 I7 II7 III7 -".split(" ").map(r),secondaryDominantsMinorRelative:"- IIIm7b5 IV#m7 Vm7 VIm7 VIIm7b5 -".split(" ").map(r),substituteDominants:"- bIII7 IV7 bV7 bVI7 bVII7 -".split(" ").map(r),substituteDominantsMinorRelative:"- IIIm7 Im7 IIbm7 VIm7 IVm7 -".split(" ").map(r)}}function vr(n){const t=u(n).pc;if(!t)return pr;const e=Ct("C",t)-3;return{type:"minor",tonic:t,relativeMajor:P(t,"3m"),alteration:e,keySignature:E(e),natural:yr(t),harmonic:gr(t),melodic:br(t)}}function $r(n){return typeof n=="number"?nn("C",n):typeof n=="string"&&/^b+|#+$/.test(n)?nn("C",G(n)):null}var Nr={majorKey:Ar,majorTonicFromKeySignature:$r,minorKey:vr};const wn=[[0,2773,0,"ionian","","Maj7","major"],[1,2902,2,"dorian","m","m7"],[2,3418,4,"phrygian","m","m7"],[3,2741,-1,"lydian","","Maj7"],[4,2774,1,"mixolydian","","7"],[5,2906,3,"aeolian","m","m7","minor"],[6,3434,5,"locrian","dim","m7b5"]],Bn={...T,name:"",alt:0,modeNum:NaN,triad:"",seventh:"",aliases:[]},xn=wn.map(Tr),An={};xn.forEach(n=>{An[n.name]=n,n.aliases.forEach(t=>{An[t]=n})});function V(n){return typeof n=="string"?An[n.toLowerCase()]||Bn:n&&n.name?V(n.name):Bn}const Ir=g("Mode.mode","Mode.get",V);function wt(){return xn.slice()}const jr=g("Mode.mode","Mode.all",wt);function Sr(){return xn.map(n=>n.name)}function Tr(n){const[t,e,o,r,i,a,s]=n,c=s?[s]:[],l=Number(e).toString(2),m=un(r).intervals;return{empty:!1,intervals:m,modeNum:t,chroma:l,normalized:l,name:r,setNum:e,alt:o,triad:i,seventh:a,aliases:c}}function Vr(n,t){return V(n).intervals.map(e=>P(t,e))}function xt(n){return(t,e)=>{const o=V(t);if(o.empty)return[];const r=H(o.modeNum,n),i=o.intervals.map(a=>P(e,a));return r.map((a,s)=>i[s]+a)}}const _r=xt(wn.map(n=>n[4])),Cr=xt(wn.map(n=>n[5]));function Et(n,t){const e=V(t),o=V(n);return e.empty||o.empty?"":ft(pt("1P",o.alt-e.alt))}function wr(n,t,e){return P(e,Et(n,t))}var xr={get:V,names:Sr,all:wt,distance:Et,relativeTonic:wr,notes:Vr,triads:_r,seventhChords:Cr,entries:jr,mode:Ir};function Er(n,t){return t.map($).map(o=>P(n,f(o))+o.chordType)}function Dr(n,t){return t.map(e=>{const[o,r]=ln(e),i=D(n,o);return $(f(i)).name+r})}var Rr={fromRomanNumerals:Er,toRomanNumerals:Dr};function Dt(n){const t=Nn(n.map(gt));return!n.length||t.length!==n.length?[]:t.reduce((e,o)=>{const r=e[e.length-1];return e.concat(an(r,o).slice(1))},[t[0]])}function kr(n,t){return Dt(n).map(e=>I(e,t))}var Or={numeric:Dt,chromatic:kr};const Fr={empty:!0,name:"",type:"",tonic:null,setNum:NaN,chroma:"",normalized:"",aliases:[],notes:[],intervals:[]};function Rt(n){if(typeof n!="string")return["",""];const t=n.indexOf(" "),e=u(n.substring(0,t));if(e.empty){const r=u(n);return r.empty?["",n]:[r.name,""]}const o=n.substring(e.name.length+1);return[e.name,o.length?o:""]}const zr=ut;function N(n){const t=Array.isArray(n)?n:Rt(n),e=u(t[0]).name,o=un(t[1]);if(o.empty)return Fr;const r=o.name,i=e?o.intervals.map(s=>P(e,s)):[],a=e?e+" "+r:r;return{...o,name:a,type:r,tonic:e,notes:i}}const qr=g("Scale.scale","Scale.get",N);function Gr(n){const t=N(n),e=sn(t.chroma);return k().filter(o=>e(o.chroma)).map(o=>o.aliases[0])}function Br(n){const t=N(n),e=cn(t.chroma);return L().filter(o=>e(o.chroma)).map(o=>o.name)}function Hr(n){const t=sn(N(n).chroma);return L().filter(e=>t(e.chroma)).map(e=>e.name)}function kt(n){const t=n.map(r=>u(r).pc).filter(r=>r),e=t[0],o=jt(t);return H(o.indexOf(e),o)}function Lr(n){const t=N(n);if(t.empty)return[];const e=t.tonic?t.notes:t.intervals;return jn(t.chroma).map((o,r)=>{const i=N(o).name;return i?[e[r],i]:["",""]}).filter(o=>o[0])}function Ur(n){const t=Array.isArray(n)?kt(n):N(n).notes,e=t.map(o=>u(o).chroma);return o=>{const r=u(typeof o=="number"?vt(o):o),i=r.height;if(i===void 0)return;const a=i%12,s=e.indexOf(a);if(s!==-1)return St(r.name,t[s])}}function Xr(n){const t=Ur(n);return(e,o)=>{const r=u(e).height,i=u(o).height;return r===void 0||i===void 0?[]:an(r,i).map(t).filter(a=>a)}}var tn={get:N,names:zr,extended:Br,modeNames:Lr,reduced:Hr,scaleChords:Gr,scaleNotes:kt,tokenize:Rt,rangeOf:Xr,scale:qr};const Kr={empty:!0,name:"",upper:void 0,lower:void 0,type:void 0,additive:[]},Qr=["4/4","3/4","2/4","2/2","12/8","9/8","6/8","3/8"];function Yr(){return Qr.slice()}const Zr=/^(\d?\d(?:\+\d)*)\/(\d)$/,Hn=new Map;function Jr(n){const t=Hn.get(n);if(t)return t;const e=ni(En(n));return Hn.set(n,e),e}function En(n){if(typeof n=="string"){const[i,a,s]=Zr.exec(n)||[];return En([a,s])}const[t,e]=n,o=+e;if(typeof t=="number")return[t,o];const r=t.split("+").map(i=>+i);return r.length===1?[r[0],o]:[r,o]}var Wr={names:Yr,parse:En,get:Jr};function ni([n,t]){const e=Array.isArray(n)?n.reduce((s,c)=>s+c,0):n,o=t;if(e===0||o===0)return Kr;const r=Array.isArray(n)?`${n.join("+")}/${t}`:`${n}/${t}`,i=Array.isArray(n)?n:[],a=o===4||o===2?"simple":o===8&&e%3===0?"compound":"irregular";return{empty:!1,name:r,type:a,upper:e,lower:o,additive:i}}const ti=Wn,ei=st,oi=mt,ri=dt,ii=Object.freeze(Object.defineProperty({__proto__:null,Array:Ae,Core:Wn,ChordDictionary:oi,PcSet:ei,ScaleDictionary:ri,Tonal:ti,AbcNotation:Me,Chord:fo,ChordType:mt,Collection:Ie,DurationValue:vo,Interval:bn,Key:Nr,Midi:Go,Mode:xr,Note:w,Pcset:st,Progression:Rr,Range:Or,RomanNumeral:fr,Scale:tn,ScaleType:dt,TimeSignature:Wr,accToAlt:G,altToAcc:E,coordToInterval:B,coordToNote:F,decode:on,deprecate:g,distance:D,encode:en,fillStr:C,interval:f,isNamed:z,isPitch:q,note:u,stepToLetter:vn,tokenizeInterval:$n,tokenizeNote:rn,transpose:P},Symbol.toStringTag,{value:"Module"}));function Ot(n,t,e){let[o,r]=tn.tokenize(n),{notes:i}=tn.get(`${o} ${r}`);if(i=i.map(h=>w.get(h).pc),t=Number(t),isNaN(t))throw new Error(`scale offset "${t}" not a number`);const{pc:a,oct:s=3}=w.get(e),c=i.indexOf(a);if(c===-1)throw new Error(`note "${e}" is not in scale "${n}"`);let l=c,m=s,d=a;const M=Math.sign(t);for(;Math.abs(l-c)0&&d[0]==="C"&&(m+=M)}return d+m}_.prototype._transpose=function(n){return this._withHap(t=>{const e=isNaN(Number(n))?String(n):bn.fromSemitones(n);if(typeof t.value=="number"){const o=typeof e=="string"?bn.semitones(e)||0:e;return t.withValue(()=>t.value+o)}return t.withValue(()=>w.simplify(w.transpose(t.value,e)))})};_.prototype._scaleTranspose=function(n){return this._withHap(t=>{if(!t.context.scale)throw new Error("can only use scaleTranspose after .scale");if(typeof t.value!="string")throw new Error("can only use scaleTranspose with notes");return t.withValue(()=>Ot(t.context.scale,Number(n),t.value))})};_.prototype._scale=function(n){return this._withHap(t=>{let e=t.value;const o=Number(e);if(!isNaN(o)){let[r,i]=tn.tokenize(n);const{pc:a,oct:s=3}=w.get(r);e=Ot(a+" "+i,o,a+s)}return t.withValue(()=>e).setContext({...t.context,scale:n})})};_.prototype.define("transpose",(n,t)=>t.transpose(n),{composable:!0,patternified:!0});_.prototype.define("scale",(n,t)=>t.scale(n),{composable:!0,patternified:!0});_.prototype.define("scaleTranspose",(n,t)=>t.scaleTranspose(n),{composable:!0,patternified:!0});var Ft={},hn={},X={};X.__esModule=!0;X.getBestVoicing=void 0;function ai(n){var t=n.chord,e=n.range,o=n.finder,r=n.picker,i=n.lastVoicing,a=o(t,e);return a.length?r(a,i):[]}X.getBestVoicing=ai;var O={};const zt=Ut(ii);var K={};K.__esModule=!0;K.tokenizeChord=void 0;function si(n){var t=(n||"").match(/^([A-G][b#]*)([^\/]*)[\/]?([A-G][b#]*)?$/);return t?t.slice(1):[]}K.tokenizeChord=si;var Ln;function ci(){if(Ln)return O;Ln=1,O.__esModule=!0,O.voicingsInRange=void 0;var n=zt,t=qt(),e=K;function o(r,i,a){i===void 0&&(i=t.lefthand),a===void 0&&(a=["D3","A4"]);var s=(0,e.tokenizeChord)(r),c=s[0],l=s[1];if(!i[l])return[];var m=i[l].map(function(M){return M.split(" ")}),d=n.Range.chromatic(a);return m.reduce(function(M,h){var A=h.map(function(v){return n.Interval.substract(v,h[0])}),Q=n.Note.transpose(c,h[0]),Gt=d.filter(function(v){return n.Note.chroma(v)===n.Note.chroma(Q)}).filter(function(v){return n.Note.midi(n.Note.transpose(v,A[A.length-1]))<=n.Note.midi(a[1])}).map(function(v){return n.Note.enharmonic(v,Q)}),Bt=Gt.map(function(v){return A.map(function(Ht){return n.Note.transpose(v,Ht)})});return M.concat(Bt)},[])}return O.voicingsInRange=o,O}var Un;function qt(){return Un||(Un=1,function(n){var t=Y&&Y.__assign||function(){return t=Object.assign||function(s){for(var c,l=1,m=arguments.length;lui({chord:n,dictionary:di,range:e,picker:li,lastVoicing:t}),x=_;x.prototype.fmapNested=function(n){return new x(t=>this.query(t).map(e=>Kt(n(e)).query(t).map(o=>new Qt(e.whole,e.part,o.value,o.context))).flat())};x.prototype.voicings=function(n){let t;return n!=null&&n.length||(n=["F3","A4"]),this.fmapNested(e=>(t=Mi(e.value,t,n),Yt(...t)._withContext(()=>({locations:e.context.locations||[]}))))};x.prototype._rootNotes=function(n=2){return this.fmap(t=>{const[e,o]=t.match(/^([a-gA-G][b#]?).*$/);return o+n})};x.prototype.define("voicings",(n,t)=>t.voicings(n),{composable:!0});x.prototype.define("rootNotes",(n,t)=>t.rootNotes(n),{composable:!0,patternified:!0}); diff --git a/packages/react/examples/nano-repl/dist/assets/osc.c09823d8.js b/packages/react/examples/nano-repl/dist/assets/osc.c09823d8.js deleted file mode 100644 index a02004167..000000000 --- a/packages/react/examples/nano-repl/dist/assets/osc.c09823d8.js +++ /dev/null @@ -1 +0,0 @@ -import{c as x,P as et}from"./index.ec9f9930.js";var ke={exports:{}};(function(T,$){(function(B,u){T.exports=u()})(x,function(){function B(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter(function(o){return Object.getOwnPropertyDescriptor(r,o).enumerable})),n.push.apply(n,t)}return n}function u(r){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}();return function(){var n,t=h(r);if(e){var o=h(this).constructor;n=Reflect.construct(t,arguments,o)}else n=t.apply(this,arguments);return R(this,n)}}function Se(r,e){for(;!Object.prototype.hasOwnProperty.call(r,e)&&(r=h(r))!==null;);return r}function v(){return(v=typeof Reflect<"u"&&Reflect.get?Reflect.get:function(r,e,n){var t=Se(r,e);if(t){var o=Object.getOwnPropertyDescriptor(t,e);return o.get?o.get.call(arguments.length<3?r:n):o.value}}).apply(this,arguments)}function y(r){return Number(r)===r&&r%1==0}function ee(r){return Number(r)===r}function p(r){return typeof r=="string"}function te(r){return typeof r=="boolean"}function ne(r){return r===1/0}function P(r){return Object.prototype.toString.call(r)==="[object Array]"}function F(r){return Object.prototype.toString.call(r)==="[object Object]"}function A(r){return typeof r=="function"}function re(r){return r instanceof Uint8Array}function Oe(r){return r instanceof Date}function E(r){return r===void 0}function oe(r){return r===null}function N(r){return r+3&-4}function se(r){return Object.prototype.hasOwnProperty.call(typeof x<"u"?x:window,r)}function Ee(r){return r.buffer?new DataView(r.buffer):r instanceof ArrayBuffer?new DataView(r):new DataView(new Uint8Array(r))}function ie(r){if(y(r))return"i";if(e=r,Number(e)===e&&e%1!=0)return"f";if(p(r))return"s";if(re(r))return"b";if(te(r))return r?"T":"F";if(oe(r))return"N";if(ne(r))return"I";var e;throw new Error("OSC typeTag() found unknown value type")}function H(r){var e="";if(P(r))return"/".concat(r.join("/"));if(p(r))return(e=r).length>1&&e[e.length-1]==="/"&&(e=e.slice(0,e.length-1)),e.length>1&&e[0]!=="/"&&(e="/".concat(e)),e;throw new Error("OSC prepareAddress() needs addresses of type array or string")}function ae(r){if(!p(r))throw new Error("OSC prepareRegExPattern() needs strings");return r.replace(/\./g,"\\.").replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!/g,"[^").replace(/\?/g,".").replace(/\*/g,".*")}var ue=function(){function r(){f(this,r),this.data=[],this.byteLength=0}return l(r,[{key:"add",value:function(e){if(te(e)||ne(e)||oe(e))return this;var n=e.pack();return this.byteLength+=n.byteLength,this.data.push(n),this}},{key:"merge",value:function(){var e=new Uint8Array(this.byteLength),n=0;return this.data.forEach(function(t){e.set(t,n),n+=t.byteLength}),e}}]),r}(),S=function(){function r(e){f(this,r),this.value=e,this.offset=0}return l(r,[{key:"pack",value:function(e,n){if(!e||!n)throw new Error("OSC Atomic cant't be packed without given method or byteLength");var t=new Uint8Array(n),o=new DataView(t.buffer);if(E(this.value))throw new Error("OSC Atomic cant't be encoded with empty value");return o[e](this.offset,this.value,!1),t}},{key:"unpack",value:function(e,n,t){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0;if(!(e&&n&&t))throw new Error("OSC Atomic cant't be unpacked without given dataView, method or byteLength");if(!(e instanceof DataView))throw new Error("OSC Atomic expects an instance of type DataView");return this.value=e[n](o,!1),this.offset=o+t,this.offset}}]),r}(),V=function(r){w(n,r);var e=g(n);function n(t){if(f(this,n),t&&!y(t))throw new Error("OSC AtomicInt32 constructor expects value of type number");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return v(h(n.prototype),"pack",this).call(this,"setInt32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return v(h(n.prototype),"unpack",this).call(this,t,"getInt32",4,o)}}]),n}(S),ce="utf-8";function Ce(r){if(se("Buffer"))return Buffer.from(r).toString(ce);if(se("TextDecoder"))return new TextDecoder(ce).decode(new Int8Array(r));for(var e="",n=0;n1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicString expects an instance of type DataView");for(var i,s=o,a=[];s0&&arguments[0]!==void 0?arguments[0]:0,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(f(this,r),!y(e)||!y(n))throw new Error("OSC Timetag constructor expects values of type integer number");this.seconds=e,this.fractions=n}return l(r,[{key:"timestamp",value:function(e){var n;if(typeof e=="number"){n=e/1e3;var t=Math.floor(n);return this.seconds=t+fe,this.fractions=Math.round(le*(n-t)),e}return 1e3*((n=this.seconds-fe)+Math.round(this.fractions/le))}}]),r}(),D=function(r){w(n,r);var e=g(n);function n(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Date.now();f(this,n);var o=new z;return t instanceof z?o=t:y(t)?o.timestamp(t):Oe(t)&&o.timestamp(t.getTime()),e.call(this,o)}return l(n,[{key:"pack",value:function(){if(E(this.value))throw new Error("OSC AtomicTimetag can not be encoded with empty value");var t=this.value,o=t.seconds,i=t.fractions,s=new Uint8Array(8),a=new DataView(s.buffer);return a.setInt32(0,o,!1),a.setInt32(4,i,!1),s}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicTimetag expects an instance of type DataView");var i=t.getUint32(o,!1),s=t.getUint32(o+4,!1);return this.value=new z(i,s),this.offset=o+8,this.offset}}]),n}(S),he=function(r){w(n,r);var e=g(n);function n(t){if(f(this,n),t&&!re(t))throw new Error("OSC AtomicBlob constructor expects value of type Uint8Array");return e.call(this,t)}return l(n,[{key:"pack",value:function(){if(E(this.value))throw new Error("OSC AtomicBlob can not be encoded with empty value");var t=N(this.value.byteLength),o=new Uint8Array(t+4);return new DataView(o.buffer).setInt32(0,this.value.byteLength,!1),o.set(this.value,4),o}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(t instanceof DataView))throw new Error("OSC AtomicBlob expects an instance of type DataView");var i=t.getInt32(o,!1);return this.value=new Uint8Array(t.buffer,o+4,i),this.offset=N(o+4+i),this.offset}}]),n}(S),pe=function(r){w(n,r);var e=g(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat32 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return v(h(n.prototype),"pack",this).call(this,"setFloat32",4)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return v(h(n.prototype),"unpack",this).call(this,t,"getFloat32",4,o)}}]),n}(S),de=function(r){w(n,r);var e=g(n);function n(t){if(f(this,n),t&&!ee(t))throw new Error("OSC AtomicFloat64 constructor expects value of type float");return e.call(this,t)}return l(n,[{key:"pack",value:function(){return v(h(n.prototype),"pack",this).call(this,"setFloat64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return v(h(n.prototype),"unpack",this).call(this,t,"getFloat64",8,o)}}]),n}(S),Pe=BigInt("9223372036854775807"),Ae=BigInt("-9223372036854775808"),ge=function(r){w(n,r);var e=g(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicInt64 constructor expects value of type BigInt");if(t&&(tPe))throw new Error("OSC AtomicInt64 value is out of bounds");var o;return t&&(o=BigInt.asIntN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return v(h(n.prototype),"pack",this).call(this,"setBigInt64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return v(h(n.prototype),"unpack",this).call(this,t,"getBigInt64",8,o)}}]),n}(S),Ie=BigInt("18446744073709551615"),ve=function(r){w(n,r);var e=g(n);function n(t){if(f(this,n),t&&typeof t!="bigint")throw new Error("OSC AtomicUInt64 constructor expects value of type BigInt");if(t&&(t<0||t>Ie))throw new Error("OSC AtomicUInt64 value is out of bounds");var o;return t&&(o=BigInt.asUintN(64,t)),e.call(this,o)}return l(n,[{key:"pack",value:function(){return v(h(n.prototype),"pack",this).call(this,"setBigUint64",8)}},{key:"unpack",value:function(t){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return v(h(n.prototype),"unpack",this).call(this,t,"getBigUint64",8,o)}}]),n}(S),G=!0,Z=!1,q=null,J=1/0,K=function(){function r(e,n){var t=this;if(f(this,r),this.offset=0,this.address="",this.types="",this.args=[],!E(e)){if(!p(e)&&!P(e))throw new Error("OSC Message constructor first argument (address) must be a string or array");this.address=H(e)}if(!E(n)){if(!P(n))throw new Error("OSC Message constructor second argument (args) must be an array");n.forEach(function(o){return t.add(o.type,o.value)})}}return l(r,[{key:"add",value:function(e,n){if(E(e))throw new Error("OSC Message needs a valid OSC Atomic Data Type");e==="N"?this.args.push(q):e==="T"?this.args.push(G):e==="F"?this.args.push(Z):e==="I"?this.args.push(J):this.args.push(n),this.types+=e}},{key:"pack",value:function(){var e=this;if(this.address.length===0||this.address[0]!=="/")throw new Error("OSC Message has an invalid address");var n=new ue;if(n.add(new m(this.address)),n.add(new m(",".concat(this.types))),this.args.length>0){var t;if(this.args.length>this.types.length)throw new Error("OSC Message argument and type tag mismatch");this.args.forEach(function(o,i){var s=e.types[i];if(s==="i")t=new V(o);else if(s==="h")t=new ge(o);else if(s==="t")t=new ve(o);else if(s==="f")t=new pe(o);else if(s==="d")t=new de(o);else if(s==="s")t=new m(o);else if(s==="b")t=new he(o);else if(s==="T")t=G;else if(s==="F")t=Z;else if(s==="N")t=q;else{if(s!=="I")throw new Error("OSC Message found unknown argument type");t=J}n.add(t)})}return n.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Message expects an instance of type DataView.");var t=new m;t.unpack(e,n);var o=new m;if(o.unpack(e,t.offset),t.value.length===0||t.value[0]!=="/")throw new Error("OSC Message found malformed or missing address string");if(o.value.length===0&&o.value[0]!==",")throw new Error("OSC Message found malformed or missing type string");for(var i,s,a=o.offset,c=[],d=1;d0&&(o=a.shift()),a.length>0&&a[0]instanceof Array&&(i=a.shift()),t=e.call(this,o,i),a.length>0&&(t.types=a.map(function(d){return ie(d)}).join(""),t.args=a),t}return l(n,[{key:"add",value:function(t){v(h(n.prototype),"add",this).call(this,ie(t),t)}}]),n}(K),U="#bundle",C=function(){function r(){var e=this;f(this,r),this.offset=0,this.timetag=new D,this.bundleElements=[];for(var n=arguments.length,t=new Array(n),o=0;o0&&(t[0]instanceof Date||y(t[0])?this.timetag=new D(t[0]):P(t[0])?(t[0].forEach(function(i){e.add(i)}),t.length>1&&(t[1]instanceof Date||y(t[1]))&&(this.timetag=new D(t[1]))):t.forEach(function(i){e.add(i)}))}return l(r,[{key:"timestamp",value:function(e){if(!y(e))throw new Error("OSC Bundle needs an integer for setting the timestamp");this.timetag=new D(e)}},{key:"add",value:function(e){if(!(e instanceof b||e instanceof r))throw new Error("OSC Bundle contains only Messages and Bundles");this.bundleElements.push(e)}},{key:"pack",value:function(){var e=new ue;return e.add(new m(U)),this.timetag||(this.timetag=new D),e.add(this.timetag),this.bundleElements.forEach(function(n){e.add(new V(n.pack().byteLength)),e.add(n)}),e.merge()}},{key:"unpack",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Bundle expects an instance of type DataView");var t=new m;if(t.unpack(e,n),t.value!==U)throw new Error("OSC Bundle does not contain a valid #bundle head");var o=new D,i=o.unpack(e,t.offset);for(this.bundleElements=[];i1&&arguments[1]!==void 0?arguments[1]:0;if(!(e instanceof DataView))throw new Error("OSC Packet expects an instance of type DataView");if(e.byteLength%4!=0)throw new Error("OSC Packet byteLength has to be a multiple of four");var t,o=new m;return o.unpack(e,n),(t=o.value===U?new C:new b).unpack(e,n),this.offset=t.offset,this.value=t,this.offset}}]),r}(),De={discardLateMessages:!1},je=function(){function r(e){f(this,r),this.options=u(u({},De),e),this.addressHandlers=[],this.eventHandlers={open:[],error:[],close:[]},this.uuid=0}return l(r,[{key:"dispatch",value:function(e,n){var t=this;if(!(e instanceof j))throw new Error("OSC EventHander dispatch() accepts only arguments of type Packet");if(!e.value)throw new Error("OSC EventHander dispatch() can't read empty Packets");if(e.value instanceof C){var o=e.value;return o.bundleElements.forEach(function(s){if(s instanceof C){if(o.timetag.value.timestamp()1&&(s=n[1]);var a=null;if(n.length>2)if(y(n[2]))a=n[2];else{if(!(n[2]instanceof Date))throw new Error("OSC EventHandler timestamp has to be a number or Date");a=n[2].getTime()}var c=null;if(n.length>=3&&(c=n[3]),a){var d=Date.now();if(d>a&&!this.options.discardLateMessages)return this.call(i,s,c);var O=this;return setTimeout(function(){O.call(i,s,c)},a-d),!0}return this.call(i,s,c)}},{key:"on",value:function(e,n){if(!p(e)&&!P(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!A(n))throw new Error("OSC EventHandler callback has to be a function");this.uuid+=1;var t={id:this.uuid,callback:n};if(p(e)&&e in this.eventHandlers)return this.eventHandlers[e].push(t),this.uuid;var o=H(e);return o in this.addressHandlers||(this.addressHandlers[o]=[]),this.addressHandlers[o].push(t),this.uuid}},{key:"off",value:function(e,n){if(!p(e)&&!P(e))throw new Error("OSC EventHandler accepts only strings or arrays for address patterns");if(!y(n))throw new Error("OSC EventHandler subscription id has to be a number");var t,o;return p(e)&&e in this.eventHandlers?(t=e,o=this.eventHandlers):(t=H(e),o=this.addressHandlers),t in o&&o[t].some(function(i,s){return i.id===n&&(o[t].splice(s,1),!0)})}}]),r}(),xe=0,Be=1,Me=2,He=3,Te=function(){function r(){throw f(this,r),new Error("DatagramPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options.open),n),o=t.port,i=t.exclusive;this.socketStatus=xe,this.socket.bind({address:t.host,port:o,exclusive:i},function(){e.socketStatus=Be,e.notify("open")})}},{key:"close",value:function(){var e=this;this.socketStatus=Me,this.socket.close(function(){e.socketStatus=He,e.notify("close")})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=u(u({},this.options.send),n),o=t.port,i=t.host;this.socket.send(Buffer.from(e),0,e.byteLength,o,i)}}]),r}();typeof WebSocket<"u"?I=WebSocket:typeof MozWebSocket<"u"?I=MozWebSocket:typeof x<"u"?I=x.WebSocket||x.MozWebSocket:typeof window<"u"?I=window.WebSocket||window.MozWebSocket:typeof self<"u"&&(I=self.WebSocket||self.MozWebSocket);var Q=void 0,we=I,Le=0,Ne=1,Ve=2,Ue=3,_={udpServer:{host:"localhost",port:41234,exclusive:!1},udpClient:{host:"localhost",port:41235},wsServer:{host:"localhost",port:8080},receiver:"ws"};function ye(r,e){return u(u(u(u({},_),r),e),{},{udpServer:u(u(u({},_.udpServer),r.udpServer),e.udpServer),udpClient:u(u(u({},_.udpClient),r.udpClient),e.udpClient),wsServer:u(u(u({},_.wsServer),r.wsServer),e.wsServer)})}var _e=function(){function r(){throw f(this,r),new Error("BridgePlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ye(this.options,n);this.socketStatus=Le,this.socket.bind({address:t.udpServer.host,port:t.udpServer.port,exclusive:t.udpServer.exclusive},function(){var o={};t.wsServer.server?o.server=t.wsServer.server:o=t.wsServer,e.websocket=new Q(o),e.websocket.binaryType="arraybuffer",e.websocket.on("listening",function(){e.socketStatus=Ne,e.notify("open")}),e.websocket.on("error",function(i){e.notify("error",i)}),e.websocket.on("connection",function(i){i.on("message",function(s,a){e.send(s,{receiver:"udp"}),e.notify(new Uint8Array(s),a)})})})}},{key:"close",value:function(){var e=this;this.socketStatus=Ve,this.socket.close(function(){e.websocket.close(function(){e.socketStatus=Ue,e.notify("close")})})}},{key:"send",value:function(e){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ye(this.options,n),o=t.receiver;if(o==="udp"){var i=e instanceof Buffer?e:Buffer.from(e);this.socket.send(i,0,i.byteLength,t.udpClient.port,t.udpClient.host)}else{if(o!=="ws")throw new Error("BridgePlugin can not send message to unknown receiver");this.websocket.clients.forEach(function(s){s.send(e,{binary:!0})})}}}]),r}(),We=-1,Re=0,Fe=1,ze=2,Ge=3,Ze={host:"localhost",port:8080,secure:!1,protocol:[]},me=function(){function r(e){if(f(this,r),!we)throw new Error("WebsocketClientPlugin can't find a WebSocket class");this.options=u(u({},Ze),e),this.socket=null,this.socketStatus=We,this.notify=function(){}}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s=t.secure,a=t.protocol;this.socket&&this.close();var c=s?"wss":"ws",d={address:i,family:c,port:o,size:0};this.socket=new we("".concat(c,"://").concat(i,":").concat(o),a),this.socket.binaryType="arraybuffer",this.socketStatus=Re,this.socket.onopen=function(){e.socketStatus=Fe,e.notify("open")},this.socket.onclose=function(){e.socketStatus=Ge,e.notify("close")},this.socket.onerror=function(O){e.notify("error",O)},this.socket.onmessage=function(O){e.notify(O.data,d)}}},{key:"close",value:function(){this.socketStatus=ze,this.socket.close()}},{key:"send",value:function(e){this.socket.send(e)}}]),r}(),qe=0,Je=1,Ke=2,Qe=3,Xe=function(){function r(e){throw f(this,r),new Error("WebsocketServerPlugin can not be used in browser context")}return l(r,[{key:"registerNotify",value:function(e){this.notify=e}},{key:"status",value:function(){return this.socketStatus}},{key:"open",value:function(){var e=this,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=u(u({},this.options),n),o=t.port,i=t.host,s={address:i,family:"wsserver",port:o,size:0};this.socket&&this.close(),t.server?this.socket=new Q({server:t.server}):this.socket=new Q({host:i,port:o}),this.socket.binaryType="arraybuffer",this.socketStatus=qe,this.socket.on("listening",function(){e.socketStatus=Je,e.notify("open")}),this.socket.on("error",function(a){e.notify("error",a)}),this.socket.on("connection",function(a){a.on("message",function(c){e.notify(new Uint8Array(c),s)})})}},{key:"close",value:function(){var e=this;this.socketStatus=Ke,this.socket.close(function(){e.socketStatus=Qe,e.notify("close")})}},{key:"send",value:function(e){this.socket.clients.forEach(function(n){n.send(e,{binary:!0})})}}]),r}(),Ye={discardLateMessages:!1,plugin:new me},k=function(){function r(e){if(f(this,r),e&&!F(e))throw new Error("OSC options argument has to be an object.");this.options=u(u({},Ye),e),this.eventHandler=new je({discardLateMessages:this.options.discardLateMessages});var n=this.eventHandler;this.options.plugin&&this.options.plugin.registerNotify&&this.options.plugin.registerNotify(function(){return n.notify.apply(n,arguments)})}return l(r,[{key:"on",value:function(e,n){if(!p(e)||!A(n))throw new Error("OSC on() needs event- or address string and callback function");return this.eventHandler.on(e,n)}},{key:"off",value:function(e,n){if(!p(e)||!y(n))throw new Error("OSC off() needs string and number (subscriptionId) to unsubscribe");return this.eventHandler.off(e,n)}},{key:"open",value:function(e){if(e&&!F(e))throw new Error("OSC open() options argument needs to be an object");if(!this.options.plugin||!A(this.options.plugin.open))throw new Error("OSC Plugin API #open is not implemented!");return this.options.plugin.open(e)}},{key:"status",value:function(){if(!this.options.plugin||!A(this.options.plugin.status))throw new Error("OSC Plugin API #status is not implemented!");return this.options.plugin.status()}},{key:"close",value:function(){if(!this.options.plugin||!A(this.options.plugin.close))throw new Error("OSC Plugin API #close is not implemented!");return this.options.plugin.close()}},{key:"send",value:function(e,n){if(!this.options.plugin||!A(this.options.plugin.send))throw new Error("OSC Plugin API #send is not implemented!");if(!(e instanceof K||e instanceof b||e instanceof C||e instanceof j))throw new Error("OSC send() needs Messages, Bundles or Packets");if(n&&!F(n))throw new Error("OSC send() options argument has to be an object");return this.options.plugin.send(e.pack(),n)}}]),r}();return k.STATUS={IS_NOT_INITIALIZED:-1,IS_CONNECTING:0,IS_OPEN:1,IS_CLOSING:2,IS_CLOSED:3},k.Packet=j,k.Bundle=C,k.Message=b,k.TypedMessage=K,k.DatagramPlugin=Te,k.WebsocketClientPlugin=me,k.WebsocketServerPlugin=Xe,k.BridgePlugin=_e,k})})(ke);const Y=ke.exports,be=new Y;be.open();const tt=.1;let X=-1;et.prototype.osc=function(){return this._withHap(T=>{const $=(B,u,f,L)=>{const l=u.wholeOrPart().begin.valueOf(),W=u.duration.valueOf();X<0&&(X=Date.now()-f*1e3);const w=Object.assign({},{cps:L,cycle:l,delta:W},u.value),h=Object.entries(w).flat(),M=Math.floor(X+(B+tt)*1e3),R=new Y.Message("/dirt/play",...h),g=new Y.Bundle([R],M);g.timestamp(M),be.send(g)};return T.setContext({...T.context,onTrigger:$})})}; diff --git a/packages/react/examples/nano-repl/dist/assets/serial.b42b098c.js b/packages/react/examples/nano-repl/dist/assets/serial.b42b098c.js deleted file mode 100644 index 44214be48..000000000 --- a/packages/react/examples/nano-repl/dist/assets/serial.b42b098c.js +++ /dev/null @@ -1 +0,0 @@ -import{P as w}from"./index.ec9f9930.js";var i,f=!1;async function b(a=38400){if(!f){if(f=!0,i)return i;if("serial"in navigator){const r=await navigator.serial.requestPort();await r.open({baudRate:a});const o=new TextEncoderStream;o.readable.pipeTo(r.writable);const s=o.writable.getWriter();i=function(e){s.write(e)}}else throw"Webserial is not available in this browser."}}const g=.1;w.prototype.serial=function(...a){return this._withHap(r=>{i||b(...a);const o=(s,e,u)=>{var t="";if(typeof e.value=="object")if("action"in e.value){t+=e.value.action+"(";var c=!0;for(const[n,l]of Object.entries(e.value))n!=="action"&&(c?c=!1:t+=",",t+=`${n}:${l}`);t+=")"}else for(const[n,l]of Object.entries(e.value))t+=`${n}:${l};`;else t=e.value;const v=(s-u+g)*1e3;window.setTimeout(i,v,t)};return r.setContext({...r.context,onTrigger:o})})};export{b as getWriter}; diff --git a/packages/react/examples/nano-repl/dist/index.html b/packages/react/examples/nano-repl/dist/index.html deleted file mode 100644 index a7038dd7f..000000000 --- a/packages/react/examples/nano-repl/dist/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - Strudel Nano REPL - - - - -
- - - diff --git a/packages/react/examples/nano-repl/package.json b/packages/react/examples/nano-repl/package.json index cf451aff9..a6164827c 100644 --- a/packages/react/examples/nano-repl/package.json +++ b/packages/react/examples/nano-repl/package.json @@ -10,7 +10,14 @@ }, "dependencies": { "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "@strudel.cycles/core": "workspace:*", + "@strudel.cycles/osc": "workspace:*", + "@strudel.cycles/mini": "workspace:*", + "@strudel.cycles/transpiler": "workspace:*", + "@strudel.cycles/webaudio": "workspace:*", + "@strudel.cycles/tonal": "workspace:*", + "@strudel.cycles/react": "workspace:*" }, "devDependencies": { "@types/react": "^18.0.17", diff --git a/packages/react/examples/nano-repl/src/App.jsx b/packages/react/examples/nano-repl/src/App.jsx index 07c46f3ed..820540e4d 100644 --- a/packages/react/examples/nano-repl/src/App.jsx +++ b/packages/react/examples/nano-repl/src/App.jsx @@ -1,27 +1,21 @@ -import { evalScope, controls } from '@strudel.cycles/core'; -import { getAudioContext, panic, webaudioOutput } from '@strudel.cycles/webaudio'; +import { controls, evalScope } from '@strudel.cycles/core'; +import { CodeMirror, useHighlighting, useKeydown, useStrudel, flash } from '@strudel.cycles/react'; +import { getAudioContext, initAudioOnFirstClick, panic, webaudioOutput } from '@strudel.cycles/webaudio'; import { useCallback, useState } from 'react'; -import CodeMirror, { flash } from '../../../src/components/CodeMirror6'; -import useKeydown from '../../../src/hooks/useKeydown.mjs'; -import useStrudel from '../../../src/hooks/useStrudel'; -import useHighlighting from '../../../src/hooks/useHighlighting'; import './style.css'; // import { prebake } from '../../../../../repl/src/prebake.mjs'; +initAudioOnFirstClick(); + // TODO: only import stuff when play is pressed? evalScope( controls, import('@strudel.cycles/core'), - // import('@strudel.cycles/tone'), - // import('@strudel.cycles/midi'), // TODO: find out why midi loads tone.js import('@strudel.cycles/tonal'), import('@strudel.cycles/mini'), import('@strudel.cycles/xen'), import('@strudel.cycles/webaudio'), import('@strudel.cycles/osc'), - import('@strudel.cycles/webdirt'), - import('@strudel.cycles/serial'), - import('@strudel.cycles/soundfonts'), ); const defaultTune = `samples({ @@ -30,7 +24,7 @@ const defaultTune = `samples({ hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'], }, 'github:tidalcycles/Dirt-Samples/master/'); stack( - s("bd,[~ ],hh(3,4)") // drums + s("bd,[~ ],hh*8") // drums .speed(perlin.range(.7,.9)) // random sample speed variation //.hush() ,"" // bassline @@ -43,7 +37,7 @@ stack( .gain(.4) // turn down .cutoff(sine.slow(7).range(300,5000)) // automate cutoff //.hush() - ,">".voicings() // chords + ,">".voicings('lefthand') // chords .superimpose(x=>x.add(.04)) // add second, slightly detuned voice .add(perlin.range(0,.5)) // random pitch variation .n() // wrap in "n" @@ -103,7 +97,7 @@ function App() { scheduler.start(); } } else if (e.code === 'Period') { - scheduler.pause(); + scheduler.stop(); panic(); e.preventDefault(); } @@ -114,13 +108,11 @@ function App() { ); return (
- {/*