///|
fn main {
  let sim = @moonsim.Sim::new(seed=515UL)
  let order = @moonsim.StateMachine::new("order", "created")
    .add(@moonsim.transition("created", "pay", "paid", action="charge"))
    .add(@moonsim.transition("paid", "ship", "shipped", action="notify"))
    .add(@moonsim.transition("shipped", "deliver", "delivered"))

  let events = ["pay", "ship", "refund", "deliver"]
  for i in 0..(?[^\/<>]+?)\<\/a\>/g
          },
          hljs.COMMENT(
            '//', // begin
            '\n', // end
          )
        ]
      }
    }

    hljs.registerLanguage('moonbit', moonbitLanguageFn);
    hljs.highlightAll();
    hljs.initLineNumbersOnLoad();

    const number = window.location.href.split('#')[1];

    function waitForLineNumbers() {
      setTimeout(function () {
        const target = document.querySelector(`.hljs-ln-line[data-line-number="${number}"]`);
        if (target == null) waitForLineNumbers();
        else target.scrollIntoView();
      }, 50);
    }

    waitForLineNumbers()