{"id":21937816,"url":"https://github.com/1dealgas/nemesis","last_synced_at":"2026-05-08T04:16:16.480Z","repository":{"id":289004965,"uuid":"945189786","full_name":"1dealGas/Nemesis","owner":"1dealGas","description":"Don‘t Leave the World Your Nemesis.","archived":false,"fork":false,"pushed_at":"2025-06-17T17:21:33.000Z","size":6122,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"Dev","last_synced_at":"2025-06-17T18:28:37.391Z","etag":null,"topics":["aerials","cpp","cpp20","defold","lua","mobile-game","rhythm-game","rhythm-game-charting"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1dealGas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-08T21:29:48.000Z","updated_at":"2025-06-17T17:21:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa5abc85-1ca5-4535-a8d2-b4b54e8ebd75","html_url":"https://github.com/1dealGas/Nemesis","commit_stats":null,"previous_names":["1dealgas/nemesis"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/1dealGas/Nemesis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1dealGas%2FNemesis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1dealGas%2FNemesis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1dealGas%2FNemesis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1dealGas%2FNemesis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1dealGas","download_url":"https://codeload.github.com/1dealGas/Nemesis/tar.gz/refs/heads/Dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1dealGas%2FNemesis/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264843232,"owners_count":23672151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aerials","cpp","cpp20","defold","lua","mobile-game","rhythm-game","rhythm-game-charting"],"created_at":"2024-11-29T01:25:54.242Z","updated_at":"2026-05-08T04:16:16.474Z","avatar_url":"https://github.com/1dealGas.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"### Don‘t Leave the World Your `Nemesis`.\n\n1dealGas's official `Chart[Fumen]` Compiler \u0026 Viewer of `Aerials`\n\n## Get Started\n\n1. Open the application, click `Works` button to open the workspace folder.\n\n2. Get the track `「Chronomica」by polysha` [here](https://masamunejp.bandcamp.com/album/polysha-soundcloud-freedl-works) (`wav` or `mp3` format).\n   \n   Let's use the filename `chronomica.wav` for example.\n   \n   *Additionally, `Nemesis` supports `Opus` format.*\n\n3. Create a code file `[Addon]`, put our official Addon lines into the file, save it, and then restart the `Nemesis` application.\n   \n   *If succeeded, the title of the `Nemesis` window will be `Nemesis with Addon`.*\n\n4. Create the `Chart[Fumen]` code file `chronomica.lua`, put our example Chart/Fumen lines into the file, and then save it.\n\n5. Click `Args Input` button of the `Nemesis` Window, type `chronomica` (with no file extension), and then click `Load` button.\n\n6. You are ready to do what you want since then.\n\n## APIs of `Chart[Fumen]`\n\nThese APIs are stated `local` in the `Chart[Fumen]` header (see [`Viewer.script`](./Viewer.script)), so there is no need to add sentences like `local Wish = Wish`.\n\n#### `Time {}`\n\n```lua\n--[ Examples: ]--\nTime {                       -- For 4/4-only tracks\n    Offset = 0,              -- Beat 0 starts from 0ms\n    0, 170,                  -- Bar, BPM\n    ···\n}\nTime {                       -- For tracks with Tempo Variations\n    Offset = 1,              -- Offset must be positive\n    Tempo = { 0, 4, 4,       -- Bar, Beat Count of a Bar, Tone Divisor\n              1, 3, 4,\n              25, 4, 4 },\n    0, 0, 201,               -- Bar(to be converted to Beat), Additional Beats, BPM\n    ···                      -- Negative BPM as Linear BPM\n}\n```\n\n#### `Log {}`\n\n```lua\n--[ Example: ]--\nLog {                        -- Check the \"*.series\" file for the output.\n    Name = \"Tint R\",         -- tostring( os.clock ) by default\n    {0}, 1, STATIC,          -- Bar 0, Val: 1, Static Ease (Ratio === 0)\n    {60}, 0.5, LINEAR,       -- ...\n    {61}, 1\n}\n```\n\n#### `Xs {}, Ys{}, Xd{}, Cs{}`\n\n```lua\n--[ Example: ]--\nXs {                         -- Okay to omit the \"Bar 0\" frame.\n    {30}, 1, LINEAR,         -- Xs: Scale Factor X\n    {31}, 0.5, LINEAR,       -- Ys: Scale Factor Y\n    {32}, 1                  -- Cs: Flow Speed Factor, Designer Side\n}                            -- Xd: Offset X by Px\n```\n\n#### `Wish {}`\n\n```lua\n--[ Example: ]--\nlocal myWish = Wish {        -- When failed, a nil will be returned.\n    WithCs = true,           -- true by default\n    Special = true,          -- false by default\n    {1}, 4, 3, LINEAR,       -- Bar 1, X=4, Y=3, Linear Ease\n\n    -- Add Radius(5 here) \u0026 Degree(0 here) like this\n    -12, oldWish {1,-12}.x, oldWish {1,-12}.y, {5, 0, LINEAR},\n    ···\n}\n```\n\n#### `Helper {}`\n\n```lua\n--[ Example: ]--\nlocal helper = Helper {      -- When failed, a nil will be returned.\n    {1}, 4, 3, LINEAR,       -- Bar 1, X=4, Y=3, Linear Ease\n    -12, 8, 9, LINEAR,       -- Bar 1 then 12/16 Tone, X=8, Y=9, Linear Ease\n    ···\n}   -- Then you can use the Helper to do some interpolations.\n```\n\n#### `Child {}`\n\n```lua\n--[ Example: ]--\nChild {\n    Wish = nil,              -- The last Wish of the Fumen by default\n    Radius = 7.0,            -- 7.0 by Default\n    InitLoop = 0.25,         -- 0.25 by default\n    DeltaLoop = 1.25,        -- 0 by default\n    {1, -1}, 2, 3, 4, ···    -- Times\n}\n```\n\n#### `Hint {}`\n\n```lua\n--[ Example: ]--\nHint {\n    Wish = myWish,           -- The last Wish of the Fumen by default\n    Special = false,         -- False by default\n    {1}, 1, 2, 3, 4, ···     -- Times\n}\n```\n\n#### `Echo {}`\n\n```lua\n--[ Example: ]--\nEcho {\n    Radius = 7.0,            -- 0 by Default\n    Special = false,         -- Scored if true. false by default\n    InitLoop = 0.25,         -- 0.25 by default (0 when Radius is 0)\n    DeltaLoop = 1.25,        -- 0 by default (0 when Radius is 0)\n    {1}, 8, 0.5,             -- T1, X1, Y1\n    -12, 8, 0.5,             -- T2, X2, Y2\n    ···\n}\n```\n\n#### Utils\n\n```lua\n--[ Usage: ]--\nlocal cos, sin = CosSin(deg)\nlocal since_tone_or_nil = SinceTone(set_to_or_nil)\nlocal tone_time = Toneof(context_time)\n```\n\n## Addons\n\nWhen the user types a new absolute time (`{bar, tone}`, like`{1, 1/16}`) into an API function, a **time context switching** will happen. For `Addon` authors, pay attention to:\n\n1. Convert all user-input times into tones with `Toneof(t)` **AT FIRST**, and then store the current time context with `local S = SinceTone()` **IMMEDIATELY**;\n\n2. **ALWAYS** call API functions with zero-bar absolute time(s) like `{0, tone}`, or `tone` time(s) after setting `SinceTone` to 0;\n\n3. **ALWAYS** reset the time context with `SinceTone(S)` before exiting an Addon function.\n\nOfficial addons are as follows, **under the `Apache-2.0` License**. Considering the code style, we decided not to let them builtin:\n\n```lua\n-- Duo\n--\nlocal DUO_RADIUS = 3\nlocal DUO_WITHCS = false\nlocal DUO_BEFORE_TONE = 0.5\nlocal DUO_WISH_SPECIAL = true\n\nlocal function Duo(t, x, y, ...)\n    t = Toneof(t)\n    local degs, t0, S = {...}, (t - DUO_BEFORE_TONE), SinceTone() ; SinceTone(0)\n    if t0 \u003e 0 and degs[1] then\n        Wish { Special = DUO_WISH_SPECIAL, WithCs = DUO_WITHCS, t0, x, y, 0, t, x, y }\n        for i = 1, #degs do\n            local D = degs[i]\n            if type(D) == \"number\" then\n                Child { t, Radius = DUO_RADIUS, InitLoop = D/360 }\n            else\n                Child { t, Radius = DUO_RADIUS, InitLoop = D[1]/360, DeltaLoop = D[2] }\n            end\n        end\n    end SinceTone(S)\nend\n\n\n-- Rail\n--\nlocal RAIL_Y = 0.5\nlocal RAIL_RADIUS = 7\nlocal RAIL_INITLOOP = 0.25\nlocal RAIL_DELTALOOP = 0\nlocal RAIL_BEFORE_TONE = 0.75\nlocal RAIL_CHILD_SPECIAL = false\nlocal RAIL_WISH_SPECIAL = false\nlocal RAIL_WISH_WITHCS = true\n\nlocal function Rail(x, ...)\n    local args = {...}\n    local arglen = #args\n    if arglen \u003e 0 then\n        for i = 1, arglen do  args[i] = Toneof( args[i] )  end\n        table.sort(args)\n\n        local tprv = args[1]\n        if tprv \u003e RAIL_BEFORE_TONE then\n            local tgl, tg = 1, {tprv}\n            local gsl, gs = 1, {tg}\n            for i = 2, arglen do\n                local tcur = args[i]\n                if tcur-tprv \u003c= RAIL_BEFORE_TONE then   tgl = tgl+1   tg[tgl] = tcur\n                else                                    gsl = gsl+1   tg,tgl = {tcur},1   gs[gsl] = tg\n                end                                     tprv = tcur\n            end\n\n            local S = SinceTone() ; SinceTone(0)\n            for i = 1, gsl do\n                local tsi = gs[i] ; tsi.Radius, tsi.Special = RAIL_RADIUS, RAIL_CHILD_SPECIAL\n                                    tsi.InitLoop, tsi.DeltaLoop = RAIL_INITLOOP, RAIL_DELTALOOP\n                gs[i] = Wish {  Special = RAIL_WISH_SPECIAL, WithCs = RAIL_WISH_WITHCS,\n                                tsi[1]-RAIL_BEFORE_TONE, x, RAIL_Y, STATIC,\n                                tsi[#tsi], x, RAIL_Y  }\n                Child(tsi) end\n            return gs, SinceTone(S)\n        end\n    end\nend\n\n\n-- Slide\n--\nlocal SLIDE_MOD = 4\nlocal SLIDE_INTERVAL = 1/32\n\nlocal function Slide(T)\n    local tlen, end_time = #T, 0\n    if tlen \u003c 5 then\n        return end\n    for i = 1, tlen, 4 do\n        end_time = Toneof( T[i] )\n        T[i] = end_time\n    end\n\n    local S, helper = SinceTone(), Helper(T), SinceTone(0)\n    local echo1 = { Radius = T.Radius, InitLoop = T.InitLoop, DeltaLoop = T.DeltaLoop                 }\n    local echo2 = { Radius = T.Radius, InitLoop = T.InitLoop, DeltaLoop = T.DeltaLoop, Special = true }\n    local k, e1, e2, cur = 1, 1, 1, T[1]+SLIDE_INTERVAL\n    while cur \u003c end_time do\n        local xy = helper(cur)\n        if k % SLIDE_MOD ~= 0 then echo1[e1], echo1[e1+1], echo1[e1+2], e1 = cur, xy.x, xy.y, e1+3\n        else                       echo2[e2], echo2[e2+1], echo2[e2+2], e2 = cur, xy.x, xy.y, e2+3 end\n        k, cur = k+1, cur+SLIDE_INTERVAL\n    end\n    Echo(echo1) ; Echo(echo2)\n    SinceTone(S)\nend\n\n\n-- Arc\n--\nlocal function Arc(T)\n    local tlen = #T\n    if tlen \u003c 9 then\n        return end\n    for i = 1, tlen, 5 do\n        T[i] = Toneof( T[i] )\n    end\n\n    local S, W = SinceTone(), {}, SinceTone(0)\n    for i = 1, (tlen-1)/5 do\n        local ti, wi = i*5-4, i*8-7\n        local r, d0, d1 = 0, T[ti+3], T[ti+8]\n        local px, py, c0, s0 = T[ti+1], T[ti+2], CosSin( d0 )\n        local dx, dy, c1, s1 = T[ti+6]-px, T[ti+7]-py, CosSin( d1 )\n\n        if dx ~= 0 and c1 ~= c0 then        r = dx / (c1 - c0)\n        elseif dy ~= 0 and s1 ~= s0 then    r = dy / (s1 - s0)\n        else                                r, d0, d1 = 0, 0, 0\n        end                                 px, py = (px - r*c0), (py - r*s0)\n\n        W[wi], W[wi+1], W[wi+2], W[wi+3] = T[ti], px, py, {r, d0, T[ti+4]}\n        W[wi+4], W[wi+5], W[wi+6], W[wi+7] = T[ti+5], px, py, {r, d1, 0}\n    end SinceTone(S)\n        W.WithCs, W.Special = T.WithCs, T.Special\n    return T.Helper and Helper(W) or Wish(W)\nend\n```\n\n## Example `Chart[Fumen]` Code\n\nAuthor: `Clock Futuros :: The World She Messed υρ`, under the `Apache-2.0` License.\n\n```lua\nTime {\n    Offset = 10,\n    Tempo = { 0, 6, 4,\n              1, 4, 4 },\n    0, 0, 180\n}\nCs {\n         {0}, 1,    STATIC,\n    {24.251}, 1011, STATIC,\n    {24.255}, 0.6,  LINEAR,\n        {25}, 1,    STATIC,\n        {31}, 0.88, STATIC,\n        1/48, 1,    STATIC,\n    {36.251}, 0,    OUTSINE,\n        {37}, 1,    STATIC,\n        {43}, 0.88, STATIC,\n        1/64, 1,    STATIC,\n     {48.25}, 0.5,  STATIC,\n    {48.375}, 0.73, STATIC,\n      {48.5}, 0.5,  LINEAR,\n        {49}, 1,    STATIC,\n    {49.001}, 0.88, STATIC,\n        1/64, 1,    STATIC,\n        {55}, 0.88, STATIC,\n        1/64, 1,    STATIC,\n     {60.25}, 1,    LINEAR,\n      {60.5}, 0.73, STATIC,\n     {61.75}, 0.5,  STATIC,\n    {61.875}, 0.73, STATIC,\n        {62}, 0.5,  LINEAR,\n      {62.5}, 1,    STATIC,\n    {62.501}, 0.88, STATIC,\n        1/64, 1,    STATIC,\n        {64}, 0.88, STATIC,\n        1/64, 1,    STATIC,\n    {64.375}, 0.88, STATIC,\n        1/64, 1,    STATIC,\n     {64.75}, 0.80, STATIC,\n        1/64, 1.04, STATIC,\n    {65.125}, 0.80, STATIC,\n        1/64, 1.08, STATIC,\n      {65.5}, 0.37, INSINE,\n     {66.25}, 1,    STATIC,\n    {66.251}, 0.73, STATIC,\n     {66.75}, 0.76, STATIC,\n        1/64, 1011, STATIC,\n        2/64, 0.79, STATIC,\n        3/64, 1011, STATIC,\n        4/64, 0.82, STATIC,\n        5/64, 1011, STATIC,\n        6/64, 0.85, STATIC,\n        7/64, 1011, STATIC,\n        8/64, 0.88, STATIC,\n        9/64, 1011, STATIC,\n       10/64, 0.91, STATIC,\n       11/64, 1011, STATIC,\n       12/64, 0.94, STATIC,\n       13/64, 1011, STATIC,\n       14/64, 0.97, STATIC,\n       15/64, 1011, STATIC,\n       16/64, 1,    STATIC,\n     {71.75}, 1,    LINEAR,\n        5/16, 2,    STATIC,\n       21/64, 0.88, STATIC,\n     {73.75}, 0.5,  INSINE,\n      {74.5}, 0.88, STATIC,\n     {74.75}, 1,    STATIC,\n        1/48, 0.87, STATIC,\n    {75.125}, 1.01, STATIC,\n        1/48, 0.86, STATIC,\n      {75.5}, 1.02, STATIC,\n        1/48, 0.85, STATIC,\n    {75.875}, 1.03, STATIC,\n        1/48, 0.84, STATIC,\n     {76.25}, 1.04, STATIC,\n        1/48, 0.83, STATIC,\n    {76.625}, 1.05, STATIC,\n        1/48, 0.82, STATIC,\n        {77}, 1.06, STATIC,\n        1/48, 0.81, STATIC,\n    {77.375}, 1.07, STATIC,\n        1/48, 0.8,  STATIC,\n     {77.75}, 1.08, STATIC,\n        1/48, 0.79, STATIC,\n    {78.125}, 1.09, STATIC,\n        1/48, 0.78, STATIC,\n      {78.5}, 1.1,  STATIC,\n        1/48, 0.77, STATIC,\n    {78.875}, 1.11, STATIC,\n        1/48, 0.76, STATIC,\n     {79.25}, 1.12, STATIC,\n        1/48, 0.75, STATIC,\n    {79.625}, 1.13, STATIC,\n        1/48, 0.74, STATIC,\n        {80}, 1.14, STATIC,\n        1/48, 0.73, STATIC,\n      {80.5}, 0.37, OUTSINE,\n        {81}, 0.73, STATIC\n}\n\n-- Since {0}\n--\nWish {\n    {0}, 8, 4, INSINE,\n    {1}, 8, 0.5\n}\nWish {\n    Special = true,\n    {0, 1}, 8, 0.5, STATIC,\n    {1}, 8, 0.5\n} ; Hint{0}\nWish {\n    {3.5}, 8, 7.5, INSINE,\n    {4}, 8, 0.5\n} ; Hint{0}\n\nWish {   -- A1\n    {0.5}, 8, 7.5, INSINE,\n    {1}, 8, 0.5, OUTSINE,\n    {2.5}, 5.5, 0.5, INSINE,\n    {4}, 8, 0.5, OUTSINE,\n    {6.25}, 10.5, 0.5\n}\nChild{ {1.75}, {2.875}, {5}, {6.25} }\n\nWish {   -- A2\n    {1}, 8, 0.5, OUTSINE,\n    {2.5}, 7.25, 0.5, INSINE,\n    {4}, 8, 0.5, OUTSINE,\n    {5.25}, 8.5, 0.5\n}\nChild{ {2.25}, {5.25} }\n\nWish {   -- A3\n    {1}, 8, 0.5, OUTSINE,\n    {2.5}, 8.75, 0.5, INSINE,\n    {4}, 8, 0.5, OUTSINE,\n    {5.25}, 7.5, 0.5\n}\nChild{ {2.5} }\n\nWish {   -- A4\n    {1}, 8, 0.5, OUTSINE,\n    {2.5}, 10.5, 0.5, INSINE,\n    {4}, 8, 0.5, OUTSINE,\n    {6.25}, 5.5, 0.5\n}\nChild{ {2}, {3.25}, {4.75}, {5.5} }\nChild{ InitLoop = 17/64, {5.5} }\nRail(8, {5.875})\n\n-- Since {7}\n--\nWish {   -- B1\n    {7}, 6.5, 0.5, OUTSINE,\n    {8}, 5.5, 0.5, INSINE,\n    {9}, 6.5, 0.5, OUTSINE,\n    {10}, 7.5, 0.5, INSINE,\n    {11.5}, 6, 0.5, STATIC,\n    {11.5}, 6, 2.5, {2, -90, LINEAR},\n    {12.25}, 6, 2.5, {2, 0}\n}\nWish {   -- B2\n    {7}, 9.5, 0.5, OUTSINE,\n    {8}, 10.5, 0.5, INSINE,\n    {9}, 9.5, 0.5, OUTSINE,\n    {10}, 8.5, 0.5, INSINE,\n    {11.5}, 10, 0.5, STATIC,\n    {11.5}, 10, 2.5, {2, 270, LINEAR},\n    {12.25}, 10, 2.5, {2, 180, STATIC},\n    {12.25}, 8, 2.5, {0, 90, OUTSINE},\n    {13}, 8, 2.5, {6.5, 90}\n}\nWish {\n    Special = true,\n    {11.5}, 8, 2.5, STATIC,\n    {12.25}, 8, 2.5\n} ; Hint{0}\n\nWish {   -- B3\n    {7}, 8, 0.5, STATIC,\n    {11.25}, 8, 0.5\n}\nChild { {10.5}, {11.25} }\n\nDuo({7}, 8,4, 0,90,180,270)\nDuo({11.5}, 8,5.5, 45,135,225,315)\n\nDUO_RADIUS = 2\nDuo({7.75}, 5,4, 60,240)\nDuo({8}, 11,4, 60,240)\nDuo(-4, 7,4, 60,240)\nDuo(-8, 9,4, 60,240)\nDuo(-14, 5,4, 60,240)\nDuo({9,-4}, 11,4, 60,240)\nDuo(-8, 9,4, 60,240)\nDuo(-12, 7,4, 60,240)\nDuo({10}, 10,4, 60,240)\nDuo(-12, 6,4, 60,240)\n\n-- Since {12.75}\n--\nRail(4,\n    {25}, {35.25}, {35.5}\n)\nRail(5,\n    {12.75}, {13.25}, {14.25}, {17.5},\n    {20.25}, {25.75}, {28.75},\n    {31.25}, {31.75}, {35.875}\n)\n\nRail(6,\n    {14.875}, {16.5}, {18.25},\n    {21.25}, {23.25}, {24}, {24.75}, {25.25}, {27.25}, {28},\n    {30.25}, {33.75}, {34.75}, {35.375}, {36.25}\n)\nRail(6.5,\n    {22.625}, {31}\n)\n\nRail(7,\n    {12.875}, {13.125}, {13.75}, {17}, {19.75},\n    {20.5}, {25.75}, {27.5},\n    {31.75}, {33}, {34}, {35}\n)\nRail(7.875,\n    {27.75}\n)\n\nRail(8,\n    {14.5}, {15.5}, {16.25}, {17.875}, {18.125}, {18.75}, {19.25},\n    {21.5}, {23}, {24.875}, -4, {26.875}, {27.25}, {28.5}, {29}, {29.875},\n    {30.125}, {30.75}, -2, -6, {31.5}, {32}, {33.875}, {34.5},\n    {35.25}, {35.5}, {35.875}, -4\n)\nRail(8.125,\n    {27.75}\n)\nRail(8.75,\n    {18}\n)\nRail(8.875,\n    {30}, {32.25}\n)\n\nRail(9,\n    {13}, {13.5}, {15.25}, {15.75}, {16.75}, {19.5},\n    {25.5}, {30.375}, {32.5}, -4, {33.625}, {36}\n)\nRail(9.125,\n    {32.25}\n)\nRail(9.5,\n    {22.75}, {31}\n)\n\nRail(10,\n    {14}, {15.875}, {18.875}, -4,\n    {20}, {20.875}, {21.75}, {25}, {27.125}, {27.875}, {28.25},\n    {34}, {36.25}\n)\nRail(10.5,\n    {15.125}\n)\n\nRail(11,\n    {13.375}, {16}, {17.25}, {19.375},\n    {25.375}, {26}, {28.75},\n    {30.25}, {31.375}, {32.5}, {33.375}\n)\nRail(12,\n    {19}, {22}, {28}\n)\n\nDUO_RADIUS = 1.75\nDuo({22.375}, 12,5, {60,-1/8},{240,-1/8})\nDuo({23.5}, 4,5, {120,1/8},{300,1/8})\nDuo({24.25}, 8,5, 90,225,315)\nDuo({26.25}, 6,5, 120,300)\nDuo({26.5}, 10,5, 120,300)\nDuo({29.25}, 10,5, 60,240)\nDuo({29.5}, 6,5, 60,240)\nDuo({33.25}, 5,3.5, 30,210)\nDuo({34.75}, 11,3.5, 150,330)\n\n-- Since {37}\n--\nRail(4,\n    {37.5}, {39.375},\n    {40.375}, {43.375}, {45.25}, {48.125},\n    {50.5}, {51.25}, {56.75}, {59.25},\n    {60.75}\n) ; Child{ InitLoop = 17/64, {60.75} }\nRail(4.5,\n    {44.75}, {59,-15}\n)\n\nRail(5,\n    {37}, {38},\n    {40}, {43}, {45.625}, {46.25}, {49.5},\n    {52.375}, -2, -4, -11, -13, {54.5}, {55}, {58.875}\n)\nRail(5.5,\n    {40.625}, {43.625}, {48},\n    {56}, -1, -7,\n    {60,-1}\n)\nRail(5.875,\n    {45.75}, {57.75}\n)\n\nRail(6,\n    {39.25}, {39.75},\n    {40.25}, {42.25}, {43.25}, {44.5}, {45.125}, {47.5}, {49.375}, {49.625},\n    {50.125}, {50.625}, {51.125}, {51.625}, {53,-7}, {54.25},\n    {56.875}, {57.875}, {58}, {58.5}, {59}, {60.875}\n) ; Child{ InitLoop = 17/64, {60.875} }\nRail(6.125,\n    {45.75}, {57.75}\n)\nRail(6.5,\n    {56,-5}, {60,-3}\n)\nRail(6.875,\n    {59.5}\n)\n\nRail(7,\n    {38.5}, {39.625},\n    {41}, {41.75}, {42.125}, {42.75}, {44.25}, {44.875}, 1,\n    {46.25}, {47}, {47.875}, {49},\n    {50.25}, 1/12, {51,-15}, {52,-13}, -15, {53,-5}, {54},\n    {55}, {55.25}, {58.25}, {58.625}, {59.125}\n)\nRail(7.125,\n    {59.5}\n)\nRail(7.5,\n    {56,-3}\n)\nRail(7.875,\n    {50.75}\n)\n\nRAIL_INITLOOP = 15/64\nRail(8, {39.5}) ; Child{ InitLoop = 17/64, 0 }\nRail(8, {46}) ; Child{ InitLoop = 17/64, 0 }\n\nRAIL_INITLOOP = 0.25\nRail(8,\n    {40}, {41.25}, {41.5}, {42.625},\n    {45.25}, {46.5}, {47.25}, {47,-11}, {48,-1}\n) ; Child{ InitLoop = 17/64, {47.25} }\n\nRail(8,\n    {49.25}, {49.75},\n    {51}, {51.5}, {52,-1}, -3, {52.25,-3}, -5, {53.625}, {53.875}, {54.25},\n    {55.375}, {56.75}, {57}, {57,-7}, -9, -13, -15\n)\nRail(8.125,\n    {50.75}\n)\nRail(8.5,\n    {60}\n)\nRail(8.875,\n    {52.75}, {53.25}\n)\n\nRail(9,\n    {38},\n    {41}, 0.75, 1.125, 1.75, {44.25}, {45.125}, -4, {46.625}, {47.125}, {47.875},\n    {50, 7/24}, 9/24, {51.875}, {52.875}, {54.375},\n    {55.25}, {55.75}, {56.375}, {58.125}, -8, {59.125}, -5\n)\nRail(9.125,\n    {52.75}, {53.25}\n)\nRail(9.5,\n    {38.5}, {60.125}\n)\nRail(9.875,\n    {56.25}\n)\n\nRail(10,\n    {37.375}, {38.875}, -6, {39.625}, -4,\n    {40.75}, {41.875}, {43.5}, {44.375}, {45,-13}, {46.75}, {47.5}\n) ; Child{ InitLoop = 15/64, {46.75} }\nRail(10,\n    {49.125}, -8, -16, -24, -32, -40,\n    {53.375}, -8, {55.625}, {56.625}, {57.375}, -2, -4, {58.25}, {59.625},\n    {60,-15}\n) ; Child{ InitLoop = 15/64, {60,-15} }\nRail(10.125,\n    {56.25}\n)\nRail(10.375,\n    {60.25}\n)\nRail(10.5,\n    {43.25}, {47.75}, {57.125}, {57,-3}\n)\nRail(10.625,\n    {60.25}\n)\nRail(10.875,\n    {52.25}\n)\n\nRail(11,\n    {37},\n    {40.625}, {43}, {44.5}, {45}, {45.5}, {45,-15}, {46.625},\n    {52}, {52.125}, {53}, {53.125}, {54.125}, {54.625}, {55.75}, {56.125}, {58.375}\n)\nRail(11.125,\n    {52.25}\n)\nRail(11.5,\n    {37.625}, {38.75}, -6, {39.75},\n    {44.75}, {59.875}\n)\n\nRail(12,\n    {37.25}, {38.25},\n    {40.375}, {43.75}, {47.625}, {49}, {49.25}, {49.75},\n    {50.5}, {51.25}, {56.5}, {59.25},\n    {60,-13}\n) ; Child{ InitLoop = 15/64, {60,-13} }\n\nDUO_RADIUS = 1\nDuo({60,-8}, 7.125,4, 135,225)\nDuo({60,-9}, 8.875,4, 45,315)\n\nDUO_RADIUS = 1.75\nDuo({41.25}, 4.5,4, 135,225)\nDuo({41.5}, 11.5,4, 45,315)\n\nDUO_RADIUS = 2\nDuo({60,-10}, 7.125,4, 150,210)\nDuo({60,-11}, 8.875,4, 30,330)\n\nDUO_RADIUS = 2.5\nDuo({53.5}, 11,4, 30, 330)\nDuo({53.75}, 5,4, 150, 210)\nDuo({57.25}, 6,4, 155, 205)\nDuo({58.75}, 10,4, 30, 330)\n\nDUO_RADIUS = 2.75\nDuo({44}, 8,2, 25, 155)\nDuo({48.25}, 8,4.75, 45,135,225,315)\nDuo({48.375}, 8,4.75, 30,150,210,330)\nDuo({48.5}, 8,4.75, 15,165,195,345)\nDuo({51.75}, 8,2.5, 80, 100)\nDuo({54.75}, 8,4, 130, 50)\nDuo({59.75}, 8,2, 83, 97)\n\nDUO_RADIUS = 4\nDuo({61}, 8,5.75, 170, 10)\n\n-- Since {61}\n--\nWish {\n    {61}, 8, 4, OUTSINE,\n    {61.75}, 5, 4, STATIC,\n    {62}, 5, 4\n}\nChild { Radius = 2.75, InitLoop = 0.125,\n        {61.75}, -2, -4 }\nChild { Radius = 2.75, InitLoop = 0.5,\n        {61.75}, -2, -4 }\nChild { Radius = 2.75, InitLoop = 0.875,\n        {61.75}, -2, -4 }\nWish {\n    {61}, 8, 4, OUTSINE,\n    {61.75}, 11, 4, STATIC,\n    {62}, 11, 4\n}\nChild { Radius = 2.75, InitLoop = 0,\n        {61.75}, -2, -4 }\nChild { Radius = 2.75, InitLoop = 0.375,\n        {61.75}, -2, -4 }\nChild { Radius = 2.75, InitLoop = 0.625,\n        {61.75}, -2, -4 }\nWish {\n    {61}, 8, 4, INSINE,\n    {61.625}, 8, 9\n}\nWish {\n    {61}, 8, 4, INSINE,\n    {61.625}, 8, -1\n}\n\nRail(4,\n    {62.5},\n    {75.625}, -2, {76.375}, -2, {79.875}\n)\nRail(4.5,\n    {74.5}, -2\n)\n\nRail(5,\n    {68.625}, -2, {69}, -2,\n    {71.75}, {79.125}, {79.75}\n)\nRail(5.25,\n    {63.125}\n)\n\nRail(6,\n    {62.75}, {63.75,-1}, {64.25}, {64.875}, {65.375}, {66.25}, {70.75}\n) ; Child{ InitLoop = 17/64, 0 }\nRail(6,\n    {71.75,-1}, {75.625}, -2, {76.375}, -2, {79}\n)\nRail(6.5,\n    {71.625}\n)\n\nRail(7,\n    {62.625}, {63.125}, {63.5}, {64.5},\n    {67.375}, {67.75}, -2, {68.5}, -3, {68.875}, -3, {69.25}, -2, {69.875},\n    {70.25}, {71}, 2/24, -5, -7, {75.25}, -2, {76.75}, -2, {79.75}\n)\nRail(7.5,\n    {74.5}, -2\n)\n\nRAIL_INITLOOP = 15/64\nRail(8, {62.5}) ; Child{ InitLoop = 17/64, 0 }\nRail(8, {67}) ; Child{ InitLoop = 17/64, 0 }\nRAIL_INITLOOP = 0.25\n\nRail(8,\n    {63.25}, {63.625}, {64}, {64.375}, {64.75}, {65.125},\n    {70}, {70.375}, -4, -8, {79}, {79.5}, {79.875}, -4\n)\nRail(8.5,\n    {76}, -2\n)\nRail(8.875,\n    {63}, {63.75}\n)\n\nRail(9,\n    {64.125}, {67,-3}, -6, -9, -12, -14, {68,-6}, -8, -14, {69.25}, -2,\n    {70.125}, {70.5}, {71,1/24}, 3/24, -6,\n    {75.25}, -2, {76.75}, -2, {77.125}, -2, {79.125}, -4\n)\nRail(9.125,\n    {63.75}\n)\nRail(9.5,\n    {71.5,-3}\n)\nRail(9.75,\n    {63.25}\n)\n\nRail(10,\n    {62.75}, {63.875}, {64.625}, {65}, {65.25}, {66.25},\n    {70.25}, {70.75}, {72,-1}, {74.875}, -2,\n    {80.125}\n)\nRail(11,\n    {67.125}, -2, {67.5}, -2, {70}\n) ; Child{ InitLoop = 15/64, {70} }\n\nRail(11,\n    {72}, {77.125}, -2, {79.375}\n)\nRail(11.5,\n    {76}, -2\n)\nRail(12,\n    {63.625}, {74.875}, -2, {79.5}\n)\n\nRAIL_Y = 4.25\nRAIL_RADIUS = 3.5\n\nRail(5, {77.5}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\nRail(7, {77.5}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\n\nRail(9, {77.875}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\nRail(11, {77.875}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\n\nRail(4, {78.25}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\nRail(6, {78.25}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\n\nRail(10, {78.625}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\nRail(12, {78.625}, -2)\nChild{ Radius = 3.5, InitLoop = 0.75, 0, -2 }\n\nDUO_RADIUS = 1.5\nDuo({79.25}, 7,4, 90,270)\nDuo({79.625}, 10,4, 90,270)\nDuo({80}, 6,4, 90,270)\nDuo({80.25}, 9,2.25, 90,270)\n\nDUO_RADIUS = 2\nDuo({64}, 4,4.5, 135,225)\nDuo({64.375}, 12,4.5, 45,315)\nDuo({64.75}, 4,2.5, 135,225)\nDuo({65.125}, 12,2.5, 45,315)\nDuo({66.625}, 12,3.25, 30,330)\nDuo({66.875}, 4,3.25, 150,210)\nDuo({68}, 5,4, 135,225)\nDuo({68}, 11,4, 45,315)\nDuo({69.5}, 4.25,3.5, 135,225)\nDuo({69.5}, 11.75,3.5, 45,315)\nDuo({72.25}, 8,4, 70,110,250,290)\n\nDUO_RADIUS = 3\nDuo({65.5}, 8,4, 70,110)\nDuo({70.5}, 4.5,3.75, 135,225)\nDuo({71.25}, 11.5,3.75, 45,315)\n\nDUO_RADIUS = 3.5\nDuo({80.5}, 8,5, 0,60,120,180)\n\nDUO_RADIUS = 4.25\nDuo({68.125}, 8,2.25, 85,95)\nDuo({69.625}, 8,2.25, 83,97)\n\nDUO_RADIUS = 5\nDUO_WITHCS = true\nDuo({71.5}, 8,1.125, 90) ; Child{ Radius = 5.5, {71.5} }\nDuo({73}, 8,4, 0,180)\n\nWish {\n    Special = true,\n    {65.75}, 8, 4, STATIC,\n    {66.25}, 8, 4\n}\nWish {\n    {65.5}, 8, 4, {3, 270, INSINE},\n    {65.875}, 8, 4, {1.5, 270, INSINE},\n    {66.25}, 8, 4, {0, 90}\n}\nWish {\n    {65.5}, 8, 4, {2, -90, OUTSINE},\n    {65.875}, 8, 4, {0.75, -90, INSINE},\n    {66.25}, 8, 4, {0, 90}\n}\nWish {\n    {65.5}, 8, 4, {3, 90, INSINE},\n    {65.875}, 8, 4, {1.5, 90, INSINE},\n    {66.25}, 8, 4, {0, -90}\n}\nWish {\n    {65.5}, 8, 4, {2, 90, OUTSINE},\n    {65.875}, 8, 4, {0.75, 90, INSINE},\n    {66.25}, 8, 4, {0, 270}\n} ; Hint{0}\n\nWish {   -- C1\n    {72.75}, 6.5, 0.5, STATIC,\n    {73}, 6.5, 3.5, {3, 270, INSINE},\n    {73.75}, 6.5, 3.5, {2.5, 180}\n}\nWish {\n    {73.25}, 4, 3.5, STATIC,\n    {73.75}, 4, 3.5\n} ; Hint{0}\n\nWish {   -- C2\n    {72.875}, 8, 0.5, STATIC,\n    {73}, 8, 0.5, INSINE,\n    {74}, 8, 4.5\n}\nWish {\n    {73.5}, 8, 4.5, STATIC,\n    {74}, 8, 4.5\n} ; Hint{0}\n\nWish {   -- C3\n    {73}, 9.5, 5.5, {5, -90, INSINE},\n    {74.25}, 9.5, 5.5, {2.5, 0}\n}\nWish{\n    {73.75}, 12, 5.5, STATIC,\n    {74.25}, 12, 5.5\n} ; Hint{0}\n\n-- Since {81}\n--\nWish {\n    {80.5}, 8, 0.5, OUTSINE,\n    {82}, 4, 0.5, INSINE,\n    {83.5}, 8, 0.5\n}\nChild {\n    {81.125}, -4, -8, -12, -16, -20, -24, -28, -32, -36\n}\n\nWish {\n    {80.5}, 8, 0.5, OUTSINE,\n    {82}, 12, 0.5, INSINE,\n    {83.5}, 8, 0.5\n}\nChild {\n    {81}, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1dealgas%2Fnemesis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1dealgas%2Fnemesis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1dealgas%2Fnemesis/lists"}