///|
/// Render a trace as a self-contained offline HTML player.
pub fn render_trace_html(trace : AlgorithmTrace) -> String {
  let safe_json = trace.to_json_string().replace_all(old="<", new="\\u003c")
  let out = StringBuilder()
  out.write_string(trace_player_document_head())
  out.write_string(safe_json)
  out.write_string(trace_player_document_tail())
  out.to_string()
}

///|
fn trace_player_document_head() -> String {
  (
    #|
    #|
    #|
    #|
    #|FrontierLab 算法轨迹播放器
    #|
#|
MoonBit 算法轨迹与可视化工具

#|
#|
0

#|
#|

事件统计
高亮图例
#|
) }