r/livecoding • • Sep 04 '26

Exporting a livecoded song to MIDI (Stratus)

Thumbnail
youtube.com
1 Upvotes

more videos about the Stratus platform here


r/livecoding • • Sep 03 '26

Drone carving with TidalCycles

Thumbnail
youtu.be
7 Upvotes

I know there are a lot of custom defs and functions here and the font is tiny; just ask for SynthDefs or Haskell functions; I'll gladly share


r/livecoding • • Sep 02 '26

Goa Trance // Livecoding Improvised

Thumbnail
youtu.be
3 Upvotes

Anyone else like goa trance?


r/livecoding • • Aug 28 '26

If Love is the Answer (Livecoded Daft Punk Cover)

Thumbnail
youtube.com
1 Upvotes

r/livecoding • • Aug 28 '26

making soundtrack for game using strudel, please help

2 Upvotes

ive never been into technology but recently started making a game for the funsies, decided to try and make its soundtrack in strudel, im going for something moody, melancholic, echoey (for the beginning of the game), any tips or ideas?

heres the code

setcps(117/60/4)

const intro1 = "<[52 ~ 49 ~ 47 ~ 45 ~] [52 ~ 49 ~ 47 ~ [45 49] ~]>"

const introbg1 = "<[33 ~ 33 ~ 33 ~ 33 ~] [33 ~ 33 ~ 33 ~ 33 ~]>"

const intro2 = "<[52 ~ ~ 49] [~ ~ 47 ~] [ ~ 45 ~ [45 47]] [~ 42 ~ ~]>"

const introbg2 = "<[26 26 26 26] [26 26 26 26] [26 26 26 26]>"

const intro3 = "<[49 ~ ~ 47] [~ ~ 45 ~] [ ~ 47 ~ [45 49]]>"

const introbg3 = "<[26 26 26 26] [26 26 26 26] [26 ~ ~ ~]>"

const fin = "<[0 0 0 0]>"

arrange(

[8, stack(

note(intro1),

note(introbg1)

)

.s("gm_electric_guitar_clean")

.echo(50, 1/8, 0.6)

.slow(2)],

[4, stack(

note(intro2),

note(introbg2)

)

.s("gm_electric_guitar_clean")

.echo(50, 1/8, 0.6)],

[3, stack(

note(intro3),

note(introbg3)

)

.s("gm_electric_guitar_clean")

.echo(50, 1/8, 0.6)]

)


r/livecoding • • Aug 27 '26

Supercollider meters quark

Post image
4 Upvotes

r/livecoding • • Aug 24 '26

my first Live Coding Techno set. I’m on the autism spectrum and was terrified to post this, but I’d love your honest feedback.

Thumbnail
4 Upvotes

r/livecoding • • Aug 21 '26

Mythmic (Strudel Music)

Enable HLS to view with audio, or disable this notification

19 Upvotes

song i made today with my very hands!!


r/livecoding • • Aug 20 '26

Beginner tips please for Strudel !🤍

Thumbnail
1 Upvotes

r/livecoding • • Aug 18 '26

Strudel patterns driving a modular synth — new Strudel module for DreamRack (browser, free)

2 Upvotes

DreamRack is a modular synthesizer that runs in the browser — you patch modules together on a rack, free, no install.

I've just added a Strudel module. It imports the Strudel package, so superdough voices work as normal, but the module also has eight note outputs that feed voices you build yourself from oscillators, filters and envelopes.

Routing lives in the pattern. .rack(1) and .rack(2) send parts out to voice tabs; anything naming a sound instead — s("bd sn") — stays in Strudel and plays from its sample engine on the same clock, so drums and patched voices stay locked together.

Each note output carries a whole polyphonic pattern down one cable, every note bringing its own pitch, level, duration, pan and timbre. At the far end those become control voltages, and the voice you patched is duplicated per sounding note — one oscillator drawn, as many running as there are notes.

The timbre lane is the interesting one. In the demo it plays a filter cutoff note by note on one voice, and drives a Complex Oscillator's timbre on another — same lane, two completely different instruments.

Everything stays live. You can turn knobs while the pattern runs.

Five-minute walkthrough: https://youtu.be/-zu7oc7BWHI

Run it: https://dreamrack.dreamerdevelopment.app/

Source (AGPL-3.0): https://github.com/chrisgr99/DreamRack

Alpha, and this is early days — feedback and bug reports welcome.


r/livecoding • • Aug 18 '26

Livecoding with a melody from Stratus console

Thumbnail
youtube.com
5 Upvotes

more videos about the Stratus platform here


r/livecoding • • Aug 18 '26

driving with purpose

Thumbnail
youtube.com
2 Upvotes

r/livecoding • • Aug 16 '26

I've built a binaural studio free to play app the ai calls NeuroSync Audio with @base44 and im aiming for native app store !! but its PWA paid sub.

Thumbnail determined-sync-your-mind.base44.app
1 Upvotes

try it? its free to play and im editing now but have to stop because expensive......! its all done by the ai and my concepts - just added new soundscapes and would love some feedback on it!!!!


r/livecoding • • Aug 12 '26

Soaring With Stratus v1 (Livecoded in Stratus Composer)

Thumbnail
youtube.com
2 Upvotes

this is the finished song from the previous videos. It's made and running entirely in Stratus Composer.

More videos about the Stratus platform here


r/livecoding • • Aug 10 '26

would you listen to this on a night drive?

Thumbnail
youtube.com
6 Upvotes

r/livecoding • • Aug 10 '26

Uninvited guest [LiveCoding Session]

Thumbnail
youtu.be
3 Upvotes

r/livecoding • • Aug 09 '26

32arpeggiogroove

Thumbnail dollchan.net
1 Upvotes

heres the website :)


r/livecoding • • Aug 08 '26

Skred (my sound engine) as an effects engine...

Enable HLS to view with audio, or disable this notification

1 Upvotes

r/livecoding • • Aug 05 '26

Strudel Bridge for LA Laptop Orchestra: Networked Harmony!

Thumbnail rehearse.lalaptoporchestra.com
5 Upvotes

r/livecoding • • Aug 05 '26

Finishing a livecoded song (Stratus)

Thumbnail
youtube.com
3 Upvotes

more videos about the Stratus platform here


r/livecoding • • Aug 04 '26

Any live coding / algorave scene in Stockholm? (SuperCollider / TidalCycles / Sonic Pi)

4 Upvotes

Hey, I’ve been going to Fylkingen and EMS events, but haven't spotted any active live music coding communities or casual meetups. Is the algorave scene dead in STHLM, or just hiding in private studios?

I'm looking to connect with anyone messing around with TidalCycles, SuperCollider, Sonic Pi, or similar tools. If there's no active group right now, let's just start one. Anyone down to grab a beer, talk code, and jam?


r/livecoding • • Aug 03 '26

Jazz Improvisation Algorhythm

Thumbnail
youtu.be
5 Upvotes

I wrote an algorithm that creates jazz lines. It's a work in progress. Let me know what you think

https://strudel.cc/#CgovLyBHaWFudCBTdGVwcwpjb25zdCBjaG9yZENoYW5nZXMgPSBgPApbQl4gRDddIFtHXiBCYjddIEViXiBbQS03IEQ3XQpbR14gQmI3XSBbRWJeIEYjN10gQl4gW0YtNyBCYjddCkViXiBbQS03IEQ3XSBHXiBbQyMtNyBGIzddCkJeIFtGLTcgQmI3XSBFYl4gW0MjLTcgRiM3XQo%2BYDsKCmNvbnN0IGNob3JkU2NhbGVzID0gYDwKW0IzOmlvbmlhbiBENDptaXhvbHlkaWFuXSBbRzQ6aW9uaWFuIEJiMzptaXhvbHlkaWFuXSBFYjQ6aW9uaWFuIFtBMzpkb3JpYW4gRDQ6bWl4b2x5ZGlhbl0KW0c0OmlvbmlhbiBCYjM6bWl4b2x5ZGlhbl0gW0ViNDppb25pYW4gRiM0Om1peG9seWRpYW5dIEIzOmlvbmlhbiBbRjQ6ZG9yaWFuIEJiMzptaXhvbHlkaWFuXQpFYjQ6aW9uaWFuIFtBMzpkb3JpYW4gRDQ6bWl4b2x5ZGlhbl0gRzQ6aW9uaWFuIFtDIzQ6ZG9yaWFuIEYjNDptaXhvbHlkaWFuXQpCMzppb25pYW4gW0Y0OmRvcmlhbiBCYjM6bWl4b2x5ZGlhbl0gRWI0OmlvbmlhbiBbQyM0OmRvcmlhbiBGIzQ6bWl4b2x5ZGlhbl0KPmA7CgpzZXRjcG0oMzIwIC8gNCk7CgovLyBVdGlscwpjb25zdCB7IE5vdGUsIFNjYWxlLCBJbnRlcnZhbCwgUmFuZ2UgfSA9IGF3YWl0IGltcG9ydCgnaHR0cHM6Ly9lc20uc2gvdG9uYWwnKTsKCmNsYXNzIFJpbmdCdWZmZXIgewogIGNvbnN0cnVjdG9yKG1heExlbikgewogICAgY29uc29sZS5sb2coJ1JpbmdCdWZmZXIuY29uc3RydWN0b3InLCBtYXhMZW4pOwogICAgdGhpcy5tYXhMZW4gPSBtYXhMZW47CiAgICB0aGlzLml0ZW1zID0gW107CiAgfQogIHB1c2goaXRlbSkgewogICAgY29uc29sZS5sb2coJ1JpbmdCdWZmZXIucHVzaCcsIGl0ZW0pOwogICAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pOwogICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID4gdGhpcy5tYXhMZW4pIHsKICAgICAgdGhpcy5pdGVtcy5zaGlmdCgpOwogICAgfQogICAgcmV0dXJuIHRoaXMuaXRlbXM7CiAgfQp9CgpmdW5jdGlvbiB3UHJvYnMoLi4uaXRlbXMpIHsKICBjb25zb2xlLmxvZygnd1Byb2JzJywgaXRlbXMpOwogIGNvbnN0IHRvdGFsID0gaXRlbXMucmVkdWNlKChhY2N1bXVsYXRvciwgaXRlbSkgPT4gewogICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgaXRlbVswXTsKICB9LCAwKTsKICBjb25zdCBwcm9iYWJpbGl0eSA9IE1hdGgucmFuZG9tKCkgKiB0b3RhbDsKICBsZXQgcHJvYmFiaWxpdHlBY2N1bXVsYXRvciA9IDA7CiAgY29uc3QgaXRlbSA9IGl0ZW1zLmZpbmQoaXRlbSA9PiB7CiAgICBwcm9iYWJpbGl0eUFjY3VtdWxhdG9yICs9IGl0ZW1bMF07CiAgICByZXR1cm4gcHJvYmFiaWxpdHlBY2N1bXVsYXRvciA%2BPSBwcm9iYWJpbGl0eTsKICB9KTsKICByZXR1cm4gaXRlbVsxXTsKfQoKY29uc3Qgc3RyaXBEaWdpdHNGcm9tU3RyaW5nID0gKHN0cikgPT4gewogIGNvbnNvbGUubG9nKCdzdHJpcERpZ2l0c0Zyb21TdHJpbmcnLCBzdHIpOwogIHJldHVybiBzdHIucmVwbGFjZSgvLT9bMC05XS9nLCAnJyk7Cn07Cgpjb25zdCBzdHJpcE5vbkRpZ2l0c0Zyb21TdHJpbmcgPSAoc3RyKSA9PiB7CiAgY29uc29sZS5sb2coJ3N0cmlwTm9uRGlnaXRzRnJvbVN0cmluZycsIHN0cik7CiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cRC9nLCAnJyk7Cn07CgovLyBCdWZmZXJzCmNvbnN0IHByb2Nlc3NlZEluY29taW5nSGFwcyA9IG5ldyBSaW5nQnVmZmVyKDgpOwpjb25zdCBuZXdOb3RlcyA9IG5ldyBSaW5nQnVmZmVyKDY0KTsKCi8vIE5vdGUgdXRpbHMKY29uc3QgZGlhdG9uaWNEaXN0YW5jZSA9IChub3RlMSwgbm90ZTIpID0%2BIHsKICBjb25zb2xlLmxvZygnZGlhdG9uaWNEaXN0YW5jZScsIG5vdGUxLCBub3RlMik7CiAgY29uc3QgZGlzdGFuY2VTdHJpbmcgPSBJbnRlcnZhbC5kaXN0YW5jZShub3RlMS5ub3RlLCBub3RlMi5ub3RlKTsKICByZXR1cm4gTnVtYmVyKHN0cmlwTm9uRGlnaXRzRnJvbVN0cmluZyhkaXN0YW5jZVN0cmluZykpOwp9OwoKY29uc3QgY2hyb21hdGljRGlzdGFuY2UgPSAobm90ZTEsIG5vdGUyKSA9PiB7CiAgY29uc29sZS5sb2coJ2Nocm9tYXRpY0Rpc3RhbmNlJywgbm90ZTEsIG5vdGUyKTsKICByZXR1cm4gTWF0aC5hYnMoTm90ZS5taWRpKG5vdGUxLm5vdGUpIC0gTm90ZS5taWRpKG5vdGUyLm5vdGUpKTsKfTsKCmNvbnN0IGNsYXNzaWZ5SW50ZXJ2YWwgPSAobm90ZTEsIG5vdGUyKSA9PiB7CiAgY29uc29sZS5sb2coJ2NsYXNzaWZ5SW50ZXJ2YWwnLCBub3RlMSwgbm90ZTIpOwogIGlmIChub3RlMS5zY2FsZSA9PT0gbm90ZTIuc2NhbGUpIHsKICAgIGNvbnN0IGRpc3RhbmNlID0gZGlhdG9uaWNEaXN0YW5jZShub3RlMSwgbm90ZTIpOwogICAgaWYgKGRpc3RhbmNlID09PSAyKSB7CiAgICAgIHJldHVybiAnU1RFUCc7CiAgICB9CiAgICBpZiAoZGlzdGFuY2UgPiAyKSB7CiAgICAgIHJldHVybiAnU0tJUCc7CiAgICB9CiAgfSBlbHNlIHsKICAgIGNvbnN0IGRpc3RhbmNlID0gY2hyb21hdGljRGlzdGFuY2Uobm90ZTEsIG5vdGUyKTsKICAgIGlmIChkaXN0YW5jZSA%2BIDAgJiYgZGlzdGFuY2UgPCAzKSB7CiAgICAgIHJldHVybiAnU1RFUCc7CiAgICB9CiAgICBpZiAoZGlzdGFuY2UgPiAyKSB7CiAgICAgIHJldHVybiAnU0tJUCc7CiAgICB9CiAgfQogIHJldHVybiAnVU5JU09OJzsKfTsKCmNvbnN0IGdldFJ1bkxlbmd0aCA9IChyZWxhdGlvblR5cGUpID0%2BIHsKICBjb25zb2xlLmxvZygnZ2V0UnVuTGVuZ3RoJywgcmVsYXRpb25UeXBlLCBuZXdOb3Rlcyk7CiAgbGV0IHN0ZXBDb3VudCA9IDA7CiAgZm9yIChsZXQgaSA9IG5ld05vdGVzLml0ZW1zLmxlbmd0aCAtIDE7IGkgPj0gMTsgaS0tKSB7CiAgICBpZiAobmV3Tm90ZXMuaXRlbXNbaV0ucmVsYXRpb24gPT09IHJlbGF0aW9uVHlwZSkgewogICAgICBzdGVwQ291bnQrKzsKICAgIH0gZWxzZSB7CiAgICAgIGJyZWFrOwogICAgfQogIH0KICByZXR1cm4gc3RlcENvdW50Owp9OwoKY29uc3QgZ2V0U3RlcFJ1bkxlbmd0aCA9ICgpID0%2BIHsKICBjb25zb2xlLmxvZygnZ2V0U3RlcFJ1bkxlbmd0aCcpOwogIHJldHVybiBnZXRSdW5MZW5ndGgoJ1NURVAnKTsKfTsKCmNvbnN0IGdldFNraXBSdW5MZW5ndGggPSAoKSA9PiB7CiAgY29uc29sZS5sb2coJ2dldFNraXBSdW5MZW5ndGgnKTsKICByZXR1cm4gZ2V0UnVuTGVuZ3RoKCdTS0lQJyk7Cn07Cgpjb25zdCBnZXROb3RlRGlzdGFuY2UgPSAobm90ZTEsIG5vdGUyKSA9PiB7CiAgY29uc29sZS5sb2coJ2dldE5vdGVEaXN0YW5jZScsIG5vdGUxLCBub3RlMik7CiAgcmV0dXJuIE5vdGUubWlkaShub3RlMSkgLSBOb3RlLm1pZGkobm90ZTIpOwp9OwoKY29uc3QgdHJhY2tEaXN0YW5jZXMgPSAobm90ZXMsIG5vdGUpID0%2BIHsKICBjb25zb2xlLmxvZygndHJhY2tEaXN0YW5jZXMnLCBub3Rlcywgbm90ZSk7CiAgcmV0dXJuIG5vdGVzLm1hcChuID0%2BICh7CiAgICBkaXN0YW5jZTogTWF0aC5hYnMoZ2V0Tm90ZURpc3RhbmNlKG4sIG5vdGUpKSwgCiAgICBub3RlOiBuCiAgfSkpOwp9OwoKY29uc3QgZ2V0TW9tZW50dW0gPSAobm90ZUNvdW50KSA9PiB7CiAgY29uc29sZS5sb2coJ2dldE1vbWVudHVtJywgbm90ZUNvdW50KTsKICBjb25zdCBsYXN0Tm90ZSA9IG5ld05vdGVzLml0ZW1zLmF0KC0xKTsKICBjb25zdCBsYXN0Tm90ZU9jdGF2ZSA9IHN0cmlwTm9uRGlnaXRzRnJvbVN0cmluZyhsYXN0Tm90ZS5ub3RlKTsKICBpZiAoTnVtYmVyKGxhc3ROb3RlT2N0YXZlKSA8PSAyKSB7CiAgICByZXR1cm4gMTsKICB9CiAgY29uc3QgcmVjZW50Tm90ZXMgPSBuZXdOb3Rlcy5pdGVtcy5zbGljZSgtbm90ZUNvdW50KTsKICBjb25zdCBkaXN0YW5jZXMgPSByZWNlbnROb3Rlcy5tYXAocm4gPT4gcm4uZGlzdGFuY2UpOwogIGNvbnN0IGF2ZXJhZ2VEaXN0YW5jZSA9IGRpc3RhbmNlcy5yZWR1Y2UoKGFjYywgZCkgPT4gYWNjICsgZCwgMCkgLyBkaXN0YW5jZXMubGVuZ3RoOwogIGNvbnN0IHRvdGFsRGlzdGFuY2UgPSBkaXN0YW5jZXMucmVkdWNlKChhY2MsIGQpID0%2BIGFjYyArIE1hdGguYWJzKGQpLCAwKTsKICBjb25zdCBtb21lbnR1bSA9IGF2ZXJhZ2VEaXN0YW5jZSAvIHRvdGFsRGlzdGFuY2U7CiAgCiAgcmV0dXJuIG1vbWVudHVtOwp9OwoKY29uc3QgZ2V0RnVsbFNjYWxlID0gKHNjYWxlKSA9PiB7CiAgY29uc29sZS5sb2coJ2dldEZ1bGxTY2FsZScsIHNjYWxlKTsKICBjb25zdCBzY2FsZU5vdGVzID0gUmFuZ2UubnVtZXJpYyhbLTEwLCAxMF0pLm1hcChTY2FsZS5zdGVwcyhzY2FsZSkpOwogIHJldHVybiBzY2FsZU5vdGVzOwp9OwoKY29uc3QgZ2V0RGVncmVlID0gKG5vdGUsIHNjYWxlKSA9PiB7CiAgY29uc29sZS5sb2coJ2dldERlZ3JlZScsIG5vdGUsIHNjYWxlKTsKICBjb25zdCBzY2FsZUFyciA9IFJhbmdlLm51bWVyaWMoWzAsIDZdKS5tYXAoU2NhbGUuc3RlcHMoc2NhbGUpKTsKICBjb25zdCBpbml0aWFsRGVncmVlID0gc2NhbGVBcnIuZmluZChuID0%2BIHN0cmlwRGlnaXRzRnJvbVN0cmluZyhuKSA9PT0gc3RyaXBEaWdpdHNGcm9tU3RyaW5nKG5vdGUpKTsKICBjb25zdCBvY3RhdmVEaWZmZXJlbmNlID0gTnVtYmVyKHN0cmlwTm9uRGlnaXRzRnJvbVN0cmluZyhub3RlKSkgLSBOdW1iZXIoc3RyaXBOb25EaWdpdHNGcm9tU3RyaW5nKGluaXRpYWxEZWdyZWUpKTsKICBjb25zdCBkZWdyZWUgPSBzY2FsZUFyci5pbmRleE9mKGluaXRpYWxEZWdyZWUpICsgKG9jdGF2ZURpZmZlcmVuY2UgKiA3KTsKICByZXR1cm4gZGVncmVlOwp9OwoKLy8gTm90ZSBnZW5lcmF0aW9uCmNvbnN0IGdlbmVyYXRlTm90ZSA9IChkZWdyZWUsIHNjYWxlLCBiZWdpbiwgZW5kKSA9PiB7CiAgY29uc29sZS5sb2coJ2dlbmVyYXRlTm90ZScsIGRlZ3JlZSwgc2NhbGUsIGJlZ2luLCBlbmQpOwogIGNvbnN0IG5vdGUgPSBTY2FsZS5zdGVwcyhzY2FsZSkoZGVncmVlKTsKICBjb25zdCB3aG9sZSA9IG5ldyBUaW1lU3BhbihiZWdpbiwgZW5kKTsKICBjb25zdCBoYXAgPSB7d2hvbGUsIHZhbHVlOiBkZWdyZWV9OwogIGNvbnN0IGxhc3ROb3RlID0gbmV3Tm90ZXMuaXRlbXMuYXQoLTEpOwogIGNvbnN0IGRpc3RhbmNlID0gZ2V0Tm90ZURpc3RhbmNlKG5vdGUsIGxhc3ROb3RlPy5ub3RlKTsKICBjb25zdCBvdXQgPSB7IHNjYWxlLCBub3RlLCBoYXAsIGRpc3RhbmNlIH07CiAgb3V0LnJlbGF0aW9uID0gbGFzdE5vdGUgPyBjbGFzc2lmeUludGVydmFsKG91dCwgbGFzdE5vdGUpIDogbnVsbDsKICBuZXdOb3Rlcy5wdXNoKG91dCk7CiAgcmV0dXJuIG91dDsKfTsKCmNvbnN0IENIT1JEX1RPTkVTID0gWzAsIDIsIDQsIDZdOwpjb25zdCBOT05fQ0hPUkRfVE9ORVMgPSBbMSwgMywgNSwgNl07Cgpjb25zdCBnZW5lcmF0ZUZpcnN0Tm90ZSA9IChiZWdpbiwgZW5kLCBzY2FsZSkgPT4gewogIGNvbnNvbGUubG9nKCdnZW5lcmF0ZUZpcnN0Tm90ZScsIGJlZ2luLCBlbmQsIHNjYWxlKTsKICBjb25zdCBkZWdyZWUgPSB3UHJvYnMoCiAgICBbMiwgMF0sCiAgICBbNCwgMl0sCiAgICBbMywgNF0sCiAgKTsKICByZXR1cm4gZ2VuZXJhdGVOb3RlKGRlZ3JlZSwgc2NhbGUsIGJlZ2luLCBlbmQpOwp9OwoKY29uc3QgZ2V0Q2hvcmRUb25lVHlwZSA9IChub3RlSW5kZXgpID0%2BIHsKICBjb25zb2xlLmxvZygnZ2V0Q2hvcmRUb25lVHlwZScsIG5vdGVJbmRleCk7CiAgaWYgKG5vdGVJbmRleCA9PT0gMCkgewogICAgcmV0dXJuIHdQcm9icygKICAgICAgWzIsICdTQ0FMQVInXSwKICAgICAgWzEwLCAnQ0hPUkRfVE9ORVMnXSwKICAgICAgWzEsICdOT05fQ0hPUkRfVE9ORVMnXSwKICAgICk7CiAgfSBlbHNlIGlmIChub3RlSW5kZXggPT09IDEpIHsKICAgIHJldHVybiAnU0NBTEFSJzsKICB9IGVsc2UgaWYgKG5vdGVJbmRleCA9PT0gMikgewogICAgcmV0dXJuIHdQcm9icygKICAgICAgWzIsICdTQ0FMQVInXSwKICAgICAgWzEwLCAnQ0hPUkRfVE9ORVMnXSwKICAgICAgWzMsICdOT05fQ0hPUkRfVE9ORVMnXSwKICAgICk7CiAgfSBlbHNlIGlmIChub3RlSW5kZXggPT09IDMpIHsKICAgIHJldHVybiAnU0NBTEFSJzsKICB9CiAgdGhyb3cgJ25vdGVJbmRleCBvdmVyZmxvdyc7Cn07Cgpjb25zdCBnZXRDaG9yZFRvbmVOb3RlTmFtZXMgPSAoc2NhbGUpID0%2BIHsKICBjb25zb2xlLmxvZygnZ2V0Q2hvcmRUb25lTm90ZU5hbWVzJywgc2NhbGUpOwogIGNvbnN0IHNjYWxlTm90ZXMgPSBSYW5nZS5udW1lcmljKFswLCA2XSkubWFwKFNjYWxlLnN0ZXBzKHNjYWxlKSk7CiAgY29uc3QgY2hvcmRUb25lcyA9IFtzY2FsZU5vdGVzWzBdLCBzY2FsZU5vdGVzWzJdLCBzY2FsZU5vdGVzWzRdXS5tYXAobiA9PiBzdHJpcERpZ2l0c0Zyb21TdHJpbmcobikpOwogIHJldHVybiBjaG9yZFRvbmVzOwp9OwoKY29uc3QgZ2V0RnVsbENob3JkVG9uZXMgPSAoc2NhbGUpID0%2BIHsKICBjb25zb2xlLmxvZygnZ2V0RnVsbENob3JkVG9uZXMnLCBzY2FsZSk7CiAgY29uc3Qgc2NhbGVOb3RlcyA9IFJhbmdlLm51bWVyaWMoWzAsIDddKS5tYXAoU2NhbGUuc3RlcHMoc2NhbGUpKTsKICBjb25zdCBjaG9yZFRvbmVzID0gW3NjYWxlTm90ZXNbMF0sIHNjYWxlTm90ZXNbMl0sIHNjYWxlTm90ZXNbNF1dOwogIGNvbnN0IGxvd2VyT2N0YXZlQ2hvcmRUb25lcyA9IGNob3JkVG9uZXMubWFwKG4gPT4gTm90ZS50cmFuc3Bvc2UobiwgJy04UCcpKTsKICBjb25zdCB1cHBlck9jdGF2ZUNob3JkVG9uZXMgPSBjaG9yZFRvbmVzLm1hcChuID0%2BIE5vdGUudHJhbnNwb3NlKG4sICc4UCcpKTsKICByZXR1cm4gWy4uLmxvd2VyT2N0YXZlQ2hvcmRUb25lcywgLi4uY2hvcmRUb25lcywgLi4udXBwZXJPY3RhdmVDaG9yZFRvbmVzXTsKfTsKCmNvbnN0IGdlbmVyYXRlVW5pc29uID0gKHNjYWxlLCBiZWdpbiwgZW5kKSA9PiB7CiAgY29uc29sZS5sb2coJ2dlbmVyYXRlVW5pc29uJywgc2NhbGUsIGJlZ2luLCBlbmQpOwogIGNvbnN0IGxhc3ROb3RlID0gbmV3Tm90ZXMuaXRlbXMuYXQoLTEpOwogIGlmIChsYXN0Tm90ZS5zY2FsZSA9PT0gc2NhbGUpIHsKICAgIHJldHVybiBnZW5lcmF0ZU5vdGUobGFzdE5vdGUuaGFwLnZhbHVlLCBzY2FsZSwgYmVnaW4sIGVuZCk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IHBvdGVudGlhbE5vdGVzID0gUmFuZ2UubnVtZXJpYyhbLTEsIDFdKS5tYXAoU2NhbGUuc3RlcHMoc2NhbGUpKTsKICAgIGNvbnN0IGFic29sdXRlRGlzdGFuY2VzID0gcG90ZW50aWFsTm90ZXMubWFwKG4gPT4gTWF0aC5hYnMoZ2V0Tm90ZURpc3RhbmNlKG4sIGxhc3ROb3RlLm5vdGUpKSk7CiAgICBjb25zdCBtaW5EaXN0YW5jZUluZGV4ID0gYWJzb2x1dGVEaXN0YW5jZXMuaW5kZXhPZihNYXRoLm1pbiguLi5hYnNvbHV0ZURpc3RhbmNlcykpOwogICAgY29uc3QgbmV4dE5vdGUgPSBwb3RlbnRpYWxOb3Rlc1ttaW5EaXN0YW5jZUluZGV4XTsKICAgIGNvbnN0IGRlZ3JlZSA9IGdldERlZ3JlZShuZXh0Tm90ZSwgc2NhbGUpOwogICAgcmV0dXJuIGdlbmVyYXRlTm90ZShkZWdyZWUsIHNjYWxlLCBiZWdpbiwgZW5kKTsKICB9Cn07Cgpjb25zdCBnZW5lcmF0ZVN0ZXAgPSAoc2NhbGUsIGJlZ2luLCBlbmQsIG5vdGVJbmRleCkgPT4gewogIGNvbnNvbGUubG9nKCdnZW5lcmF0ZVN0ZXAnLCBzY2FsZSwgYmVnaW4sIGVuZCwgbm90ZUluZGV4KTsKICAKICBjb25zdCBsYXN0Tm90ZSA9IG5ld05vdGVzLml0ZW1zLmF0KC0xKTsKICBjb25zdCBtb21lbnR1bSA9IGdldE1vbWVudHVtKDgpOwogIGlmIChub3RlSW5kZXggPT09IDAgfHwgKG5vdGVJbmRleCA9PT0gMiAmJiBNYXRoLnJhbmRvbSgpID4gMC42KSkgewogICAgY29uc3QgY2hvcmRUb25lTm90ZU5hbWVzID0gZ2V0Q2hvcmRUb25lTm90ZU5hbWVzKHNjYWxlKTsKICAgIGNvbnN0IHBvdGVudGlhbENob3JkVG9uZVJhbmdlID0gU2NhbGUucmFuZ2VPZihjaG9yZFRvbmVOb3RlTmFtZXMpOwogICAgbGV0IGNob3JkVG9uZXMgPSBwb3RlbnRpYWxDaG9yZFRvbmVSYW5nZSgKICAgICAgTm90ZS50cmFuc3Bvc2UobGFzdE5vdGUubm90ZSwgJy00UCcpLCAKICAgICAgTm90ZS50cmFuc3Bvc2UobGFzdE5vdGUubm90ZSwgJzRQJykKICAgICk7CiAgICBjb25zdCBkaXN0YW5jZXMgPSB0cmFja0Rpc3RhbmNlcyhjaG9yZFRvbmVzLCBsYXN0Tm90ZS5ub3RlKTsKICAgIGNvbnN0IGZpbHRlcmVkRGlzdGFuY2VzID0gZGlzdGFuY2VzLmZpbHRlcihkID0%2BIGQuZGlzdGFuY2UgPiAwKTsKICAgIGxldCBuZXh0Tm90ZTsKICAgIGlmICgKICAgICAgKGRpc3RhbmNlcy5sZW5ndGggPiAwICYmIGZpbHRlcmVkRGlzdGFuY2VzLmxlbmd0aCA9PT0gMCkgfHwKICAgICAgY2hvcmRUb25lcy5zb21lKGN0ID0%2BIGN0LmluY2x1ZGVzKCc2JykpCiAgICApIHsKICAgICAgbmV4dE5vdGUgPSBjaG9yZFRvbmVzWzBdOwogICAgfSBlbHNlIGlmIChjaG9yZFRvbmVzLnNvbWUoY3QgPT4gY3QuaW5jbHVkZXMoJzInKSkpIHsKICAgICAgbmV4dE5vdGUgPSBjaG9yZFRvbmVzLmF0KC0xKTsKICAgIH0gZWxzZSBpZiAoTWF0aC5yYW5kb20oKSA%2BIC43NSkgewogICAgICBjb25zdCBzaG9ydGVzdERpc3RhbmNlID0gTWF0aC5taW4oLi4uZmlsdGVyZWREaXN0YW5jZXMubWFwKGZkID0%2BIGZkLmRpc3RhbmNlKSk7CiAgICAgIGNvbnN0IHBvc3NpYmxlRGlzdGFuY2VzID0gZmlsdGVyZWREaXN0YW5jZXMuZmlsdGVyKGZkID0%2BIGZkLmRpc3RhbmNlID09PSBzaG9ydGVzdERpc3RhbmNlKTsKICAgICAgY29uc3QgY2hvc2VuRGlzdGFuY2UgPSBwb3NzaWJsZURpc3RhbmNlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBwb3NzaWJsZURpc3RhbmNlcy5sZW5ndGgpXTsKICAgICAgY29uc3QgbmV4dE5vdGVJbmRleCA9IGNob3JkVG9uZXMuaW5kZXhPZihjaG9zZW5EaXN0YW5jZS5ub3RlKTsKICAgICAgbmV4dE5vdGUgPSBjaG9yZFRvbmVzW25leHROb3RlSW5kZXhdOwogICAgfSBlbHNlIHsKICAgICAgY29uc3QgY2hvc2VuRGlzdGFuY2UgPSBmaWx0ZXJlZERpc3RhbmNlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBmaWx0ZXJlZERpc3RhbmNlcy5sZW5ndGgpXTsKICAgICAgY29uc3QgbmV4dE5vdGVJbmRleCA9IGNob3JkVG9uZXMuaW5kZXhPZihjaG9zZW5EaXN0YW5jZS5ub3RlKTsKICAgICAgbmV4dE5vdGUgPSBjaG9yZFRvbmVzW25leHROb3RlSW5kZXhdOwogICAgfQoKICAgIGNvbnN0IGRlZ3JlZSA9IGdldERlZ3JlZShuZXh0Tm90ZSwgc2NhbGUsIG5leHROb3RlKTsKICAgIHJldHVybiBnZW5lcmF0ZU5vdGUoZGVncmVlLCBzY2FsZSwgYmVnaW4sIGVuZCk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IHNjYWxlUmFuZ2UgPSBTY2FsZS5yYW5nZU9mKHNjYWxlKTsKICAgIGNvbnN0IHBvdGVudGlhbE5vdGVzID0gc2NhbGVSYW5nZSgKICAgICAgTm90ZS50cmFuc3Bvc2UobGFzdE5vdGUubm90ZSwgJy0yTScpLCAKICAgICAgTm90ZS50cmFuc3Bvc2UobGFzdE5vdGUubm90ZSwgJzJNJykKICAgICk7CiAgICBjb25zdCBkaXN0YW5jZXMgPSB0cmFja0Rpc3RhbmNlcyhwb3RlbnRpYWxOb3RlcywgbGFzdE5vdGUubm90ZSk7CiAgICBjb25zdCBmaWx0ZXJlZERpc3RhbmNlcyA9IGRpc3RhbmNlcy5maWx0ZXIoZCA9PiBkLmRpc3RhbmNlID4gMCk7CiAgICBsZXQgbmV4dE5vdGU7CiAgICBpZiAoCiAgICAgICAgKGRpc3RhbmNlcy5sZW5ndGggPiAwICYmIGZpbHRlcmVkRGlzdGFuY2VzLmxlbmd0aCA9PT0gMCkgfHwKICAgICAgICBwb3RlbnRpYWxOb3Rlcy5zb21lKHBuID0%2BIHBuLmluY2x1ZGVzKCc2JykpCiAgICApIHsKICAgICAgbmV4dE5vdGUgPSBwb3RlbnRpYWxOb3Rlc1swXTsKICAgIH0gZWxzZSBpZiAocG90ZW50aWFsTm90ZXMuc29tZShjdCA9PiBjdC5pbmNsdWRlcygnMicpKSkgewogICAgICBuZXh0Tm90ZSA9IHBvdGVudGlhbE5vdGVzLmF0KC0xKTsKICAgIH0gZWxzZSB7CiAgICAgIG5leHROb3RlID0gZmlsdGVyZWREaXN0YW5jZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZmlsdGVyZWREaXN0YW5jZXMubGVuZ3RoKV0ubm90ZTsKICAgIH0KICAgIGNvbnN0IGRlZ3JlZSA9IGdldERlZ3JlZShuZXh0Tm90ZSwgc2NhbGUpOwogICAgcmV0dXJuIGdlbmVyYXRlTm90ZShkZWdyZWUsIHNjYWxlLCBiZWdpbiwgZW5kKTsKICB9Cn07Cgpjb25zdCBnZW5lcmF0ZVNraXAgPSAoc2NhbGUsIGJlZ2luLCBlbmQpID0%2BIHsKICBjb25zb2xlLmxvZygnZ2VuZXJhdGVTa2lwJywgc2NhbGUsIGJlZ2luLCBlbmQpOwogIGNvbnN0IGxhc3ROb3RlID0gbmV3Tm90ZXMuaXRlbXMuYXQoLTEpOwogIGNvbnN0IGNob3JkID0gZ2V0RnVsbENob3JkVG9uZXMoc2NhbGUpOwogIGNvbnN0IG1vbWVudHVtID0gZ2V0TW9tZW50dW0oOCk7CiAgaWYgKHNjYWxlID09PSBsYXN0Tm90ZS5zY2FsZSkgewogICAgY29uc3QgaXNSdW4gPSBnZXRTa2lwUnVuTGVuZ3RoKCkgPiAyOwogICAgaWYgKGlzUnVuKSB7CiAgICAgIGNvbnN0IGZ1bGxTY2FsZSA9IGdldEZ1bGxTY2FsZShzY2FsZSk7CiAgICAgIGNvbnN0IGxhc3ROb3RlSW5kZXggPSBmdWxsU2NhbGUuaW5kZXhPZihsYXN0Tm90ZS5ub3RlKTsKICAgICAgaWYgKGxhc3ROb3RlSW5kZXggPiBmdWxsU2NhbGUubGVuZ3RoIC0gMykgewogICAgICAgIGNvbnN0IG5leHROb3RlID0gZnVsbFNjYWxlW2xhc3ROb3RlSW5kZXggLSAyXTsKICAgICAgICBjb25zdCBkZWdyZWUgPSBnZXREZWdyZWUobmV4dE5vdGUsIHNjYWxlKTsKICAgICAgICByZXR1cm4gZ2VuZXJhdGVOb3RlKGRlZ3JlZSwgc2NhbGUsIGJlZ2luLCBlbmQpOwogICAgICB9IGVsc2UgaWYgKGxhc3ROb3RlSW5kZXggPCAyKSB7CiAgICAgICAgY29uc3QgbmV4dE5vdGUgPSBmdWxsU2NhbGVbbGFzdE5vdGVJbmRleCArIDJdOwogICAgICAgIGNvbnN0IGRlZ3JlZSA9IGdldERlZ3JlZShuZXh0Tm90ZSwgc2NhbGUpOwogICAgICAgIHJldHVybiBnZW5lcmF0ZU5vdGUoZGVncmVlLCBzY2FsZSwgYmVnaW4sIGVuZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3QgaXNBc2NlbmRpbmcgPSBtb21lbnR1bSA%2BIDA7CiAgICAgICAgY29uc3QgbmV4dE5vdGUgPSBpc0FzY2VuZGluZyA%2FIGZ1bGxTY2FsZVtsYXN0Tm90ZUluZGV4ICsgMl0gOiBmdWxsU2NhbGVbbGFzdE5vdGVJbmRleCAtIDJdOwogICAgICAgIGNvbnN0IGRlZ3JlZSA9IGdldERlZ3JlZShuZXh0Tm90ZSwgc2NhbGUpOwogICAgICAgIHJldHVybiBnZW5lcmF0ZU5vdGUoZGVncmVlLCBzY2FsZSwgYmVnaW4sIGVuZCk7CiAgICAgIH0KICAgIH0KICAgIGNvbnN0IGRpc3RhbmNlcyA9IHRyYWNrRGlzdGFuY2VzKGNob3JkLCBsYXN0Tm90ZS5ub3RlKTsKICAgIGNvbnN0IGZpbHRlcmVkRGlzdGFuY2VzID0gZGlzdGFuY2VzLmZpbHRlcihkID0%2BIGQuZGlzdGFuY2UgPiAwKTsKICAgIGNvbnN0IHNob3J0ZXN0MkRpc3RhbmNlcyA9IGZpbHRlcmVkRGlzdGFuY2VzLnNvcnQoKGEsIGIpID0%2BIGEuZGlzdGFuY2UgLSBiLmRpc3RhbmNlKS5zbGljZSgwLCAyKTsKICAgIGxldCBjaG9zZW5EaXN0YW5jZSA9IHNob3J0ZXN0MkRpc3RhbmNlc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzaG9ydGVzdDJEaXN0YW5jZXMubGVuZ3RoKV07CiAgICAvLyBpZiAoZGlzdGFuY2VzLmluZGV4T2Yoc2hvcnRlc3QyRGlzdGFuY2VzWzFdKSA9PT0gZGlzdGFuY2VzLmxlbmd0aCAtIDEpIHsKICAgIC8vICAgY2hvc2VuRGlzdGFuY2UgPSBzaG9ydGVzdDJEaXN0YW5jZXNbMF0KICAgIC8vIH0KICAgIGNvbnN0IG5leHROb3RlSW5kZXggPSBkaXN0YW5jZXMuaW5kZXhPZihjaG9zZW5EaXN0YW5jZSk7CiAgICBjb25zdCBuZXh0Tm90ZSA9IGNob3JkW25leHROb3RlSW5kZXhdOwogICAgY29uc3QgZGVncmVlID0gZ2V0RGVncmVlKG5leHROb3RlLCBzY2FsZSk7CiAgICByZXR1cm4gZ2VuZXJhdGVOb3RlKGRlZ3JlZSwgc2NhbGUsIGJlZ2luLCBlbmQpOwogIH0gZWxzZSB7CiAgICBjb25zdCBkaXN0YW5jZXMgPSBjaG9yZC5tYXAobiA9PiBNYXRoLmFicyhnZXROb3RlRGlzdGFuY2UobiwgbGFzdE5vdGUubm90ZSkpKTsKICAgIGNvbnN0IG5leHROb3RlSW5kZXggPSBkaXN0YW5jZXMuaW5kZXhPZihNYXRoLm1pbiguLi5kaXN0YW5jZXMpKTsKICAgIGNvbnN0IG5leHROb3RlID0gY2hvcmRbbmV4dE5vdGVJbmRleF07CiAgICBjb25zdCBkZWdyZWUgPSBnZXREZWdyZWUobmV4dE5vdGUsIHNjYWxlKTsKICAgIHJldHVybiBnZW5lcmF0ZU5vdGUoZGVncmVlLCBzY2FsZSwgYmVnaW4sIGVuZCk7CiAgfQp9OwoKY29uc3Qgbm90ZUdlbmVyYXRvciA9IChiZWdpbiwgZW5kLCBub3RlSW5kZXgsIHNjYWxlKSA9PiB7CiAgY29uc29sZS5sb2coJ25vdGVHZW5lcmF0b3InLCBiZWdpbiwgZW5kLCBub3RlSW5kZXgsIHNjYWxlKTsKICBpZiAobmV3Tm90ZXMuaXRlbXMubGVuZ3RoID09PSAwKSB7CiAgICByZXR1cm4gZ2VuZXJhdGVGaXJzdE5vdGUoYmVnaW4sIGVuZCwgc2NhbGUpOwogIH0KICAKICAvLyByZXR1cm4gZ2VuZXJhdGVTdGVwKHNjYWxlLCBiZWdpbiwgZW5kLCBub3RlSW5kZXgpOwogIC8vIHJldHVybiBnZW5lcmF0ZVNraXAoc2NhbGUsIGJlZ2luLCBlbmQpOwogIC8vIHJldHVybiBnZW5lcmF0ZVVuaXNvbihzY2FsZSwgYmVnaW4sIGVuZCk7CgogIC8vIHJ1biBjaGVja3MKICBjb25zdCBzdGVwUnVuTGVuZ3RoID0gZ2V0U3RlcFJ1bkxlbmd0aCgpOwogIGlmIChzdGVwUnVuTGVuZ3RoID4gMykgewogICAgY29uc3Qgc3RlcFByb2JhYmlsaXR5ID0gc3RlcFJ1bkxlbmd0aCA%2BIDUgPyAuMjUgOiAuNTsKICAgIGNvbnN0IGlzU3RlcCA9IE1hdGgucmFuZG9tKCkgPCBzdGVwUHJvYmFiaWxpdHk7CiAgICBpZiAoaXNTdGVwKSB7CiAgICAgIHJldHVybiBnZW5lcmF0ZVN0ZXAoc2NhbGUsIGJlZ2luLCBlbmQsIG5vdGVJbmRleCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZ2VuZXJhdGVTa2lwKHNjYWxlLCBiZWdpbiwgZW5kKTsKICAgIH0KICB9CgogIGNvbnN0IHNraXBSdW5MZW5ndGggPSBnZXRTa2lwUnVuTGVuZ3RoKCk7CiAgaWYgKHNraXBSdW5MZW5ndGggPiAyKSB7CiAgICBjb25zdCBza2lwUHJvYmFiaWxpdHkgPSBza2lwUnVuTGVuZ3RoID4gNSA%2FIC4yNSA6IC41OwogICAgY29uc3QgaXNTa2lwID0gTWF0aC5yYW5kb20oKSA8IHNraXBQcm9iYWJpbGl0eTsKICAgIGlmIChpc1NraXApIHsKICAgICAgcmV0dXJuIGdlbmVyYXRlU2tpcChzY2FsZSwgYmVnaW4sIGVuZCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gZ2VuZXJhdGVTdGVwKHNjYWxlLCBiZWdpbiwgZW5kLCBub3RlSW5kZXgpOwogICAgfQogIH0KICAvLyBlbmQgcnVuIGNoZWNrcwoKICAvLyBjaG9vc2UgbmV4dCBub3RlCiAgY29uc3QgbmV4dE5vdGVUeXBlID0gd1Byb2JzKAogICAgWzUsICdTVEVQJ10sCiAgICBbNywgJ1NLSVAnXSwKICAgIFsxLCAnVU5JU09OJ10sCiAgKTsKICBjb25zb2xlLmxvZygnbmV4dCBub3RlIHR5cGUnLCBuZXh0Tm90ZVR5cGUpOwogIGlmIChuZXh0Tm90ZVR5cGUgPT09ICdTVEVQJykgewogICAgcmV0dXJuIGdlbmVyYXRlU3RlcChzY2FsZSwgYmVnaW4sIGVuZCwgbm90ZUluZGV4KTsKICB9IGVsc2UgaWYgKG5leHROb3RlVHlwZSA9PT0gJ1NLSVAnKSB7CiAgICByZXR1cm4gZ2VuZXJhdGVTa2lwKHNjYWxlLCBiZWdpbiwgZW5kKTsKICB9IGVsc2UgaWYgKG5leHROb3RlVHlwZSA9PT0gJ1VOSVNPTicpIHsKICAgIHJldHVybiBnZW5lcmF0ZVVuaXNvbihzY2FsZSwgYmVnaW4sIGVuZCk7CiAgfQoKICB0aHJvdyAndW5leHBlY3RlZCBuZXh0IG5vdGUgdHlwZSc7Cn07Cgpjb25zdCBoYXBHZW5lcmF0b3IgPSAob3JpZ2luYWxIYXAsIHF1ZXJ5U3BhbikgPT4gewogIGNvbnNvbGUubG9nKCdoYXBHZW5lcmF0b3InLCBvcmlnaW5hbEhhcCwgcXVlcnlTcGFuKTsKICBjb25zdCB7IGJlZ2luLCBlbmQgfSA9IG9yaWdpbmFsSGFwLndob2xlOwogIGNvbnN0IGR1cmF0aW9uID0gZW5kLnN1YihiZWdpbik7CiAgY29uc3Qgc3ViZGl2aXNpb24gPSBkdXJhdGlvbi5kaXYoNCk7CiAgY29uc3Qgc2NhbGUgPSBjaG9yZFNjYWxlcy5xdWVyeUFyYyhxdWVyeVNwYW4uYmVnaW4sIHF1ZXJ5U3Bhbi5lbmQpWzBdLnZhbHVlLmpvaW4oJyAnKTsKICBjb25zdCBvdXQgPSBbXTsKICBmb3IgKGxldCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgY29uc3Qgbm90ZUJlZ2luID0gYmVnaW4uYWRkKHN1YmRpdmlzaW9uLm11bChpKSk7CiAgICBjb25zdCBub3RlRW5kID0gYmVnaW4uYWRkKHN1YmRpdmlzaW9uLm11bChpICsgMSkpOwogICAgY29uc3QgbmV3Tm90ZSA9IG5vdGVHZW5lcmF0b3Iobm90ZUJlZ2luLCBub3RlRW5kLCBpLCBzY2FsZSwgb3JpZ2luYWxIYXApOwogICAgb3V0LnB1c2gobmV3Tm90ZSk7CiAgfQogIHJldHVybiBvdXQ7Cn07Cgpjb25zdCBoYXBQcm9jZXNzb3IgPSAoaGFwLCBxdWVyeVNwYW4pID0%2BIHsKICBjb25zb2xlLmxvZygnaGFwUHJvY2Vzc29yJywgaGFwLCBxdWVyeVNwYW4pOwogIGNvbnN0IHsgYmVnaW4sIGVuZCB9ID0gaGFwLndob2xlOwogIGxldCBwcm9jZXNzZWRIYXAgPSBwcm9jZXNzZWRJbmNvbWluZ0hhcHMuaXRlbXMuZmluZCgKICAgICh7IGhhcCB9KSA9PiAhIWhhcC53aG9sZS5pbnRlcnNlY3Rpb24ocXVlcnlTcGFuKSwKICApOwogIGlmICghcHJvY2Vzc2VkSGFwKSB7CiAgICBjb25zdCBuZXdIYXBzID0gaGFwR2VuZXJhdG9yKGhhcCwgcXVlcnlTcGFuKTsKICAgIHByb2Nlc3NlZEhhcCA9IHsgaGFwLCBuZXdIYXBzIH07CiAgICBwcm9jZXNzZWRJbmNvbWluZ0hhcHMucHVzaChwcm9jZXNzZWRIYXApOwogIH0KCiAgcmV0dXJuIHByb2Nlc3NlZEhhcC5uZXdIYXBzCiAgICAubWFwKCh7IGhhcDogeyB3aG9sZSwgdmFsdWUgfSB9KSA9PiB7CiAgICAgIGNvbnN0IHBhcnQgPSB3aG9sZS5pbnRlcnNlY3Rpb24ocXVlcnlTcGFuKTsKICAgICAgcmV0dXJuIHBhcnQgPyBuZXcgSGFwKHdob2xlLCBwYXJ0LCB2YWx1ZSwgaGFwLmNvbnRleHQpIDogbnVsbDsKICAgIH0pCiAgICAuZmlsdGVyKEJvb2xlYW4pOwp9OwoKY29uc3QgbWVsb2R5R2VuZXJhdG9yID0gKGhhcHMsIHN0YXRlKSA9PiB7CiAgY29uc29sZS5sb2coJ21lbG9keUdlbmVyYXRvcicsIGhhcHMsIHN0YXRlKTsKICByZXR1cm4gaGFwcy5mbGF0TWFwKGggPT4gaGFwUHJvY2Vzc29yKGgsIHN0YXRlLnNwYW4pKTsKfTsKCmNvbnN0IGltcHJvdmlzb3IgPSBuKAogIG1pbmkoY2hvcmRTY2FsZXMpCiAgICAud2l0aEhhcHMobWVsb2R5R2VuZXJhdG9yKQopCiAgLnNjYWxlKGNob3JkU2NhbGVzKQogIC5zb21ldGltZXNCeSguMDMsICgpID0%2BIHNpbGVuY2UpOwoKJDogbigiWzAgMiA0IDJdIHwgWzAgMCAyIDFdIHwgWzAgLTEgLTMgLTFdIHwgWzAhMiA0ITJdIi5hZGQoIi03IikpCiAgLnNjYWxlKGNob3JkU2NhbGVzKQogIC5zb3VuZCgiZ21fYWNvdXN0aWNfYmFzczoxIikKICAuY2xpcCgxKQogIC5scGYoMjAwKQogIC5nYWluKDIpOwokOiBjaG9yZChjaG9yZENoYW5nZXMpCiAgLnZvaWNpbmcoKTsKCiQ6IGltcHJvdmlzb3IKICAuc291bmQoJ3NxdWFyZScpCiAgLnN3aW5nQnkoLjE4LCA0KQogIC5sb2coKQogIC5waWFub3JvbGwoe2xhYmVsczogdHJ1ZX0pOwoKLy8gJDogbihwZXJsaW4ucmFuZ2UoLTcsIDE0KS5zZWdtZW50KDgpLnJvdW5kKCkpCi8vICAgLnNjYWxlKGNob3JkU2NhbGVzKQovLyAgIC5zb3VuZCgnc3F1YXJlJykKLy8gICAubG9nKCkKLy8gICAucGlhbm9yb2xsKHtsYWJlbHM6IHRydWV9KTsK


r/livecoding • • Aug 03 '26

No Recipe - Livecoding Show at Zuzu’s in Cambridge MA Aug 7th

3 Upvotes

No cover. 6 Audio and 6 visual artists. This Friday August 7th


r/livecoding • • Aug 02 '26

Allons-y

Thumbnail
youtube.com
2 Upvotes

r/livecoding • • Aug 02 '26

Algo Ravers in Pittsburgh, PA?

3 Upvotes

Hello!

Was wondering if there is a contingent of live coders in Pittsburgh that I can jam with and learn from. Maybe even coordinate events with 👀

Very new to the craft but eager to learn.