HVXZLNCCLSMOKMA6TU7H7LKCRH5TAOP3X3EY6MEWFWZRWMVHEFWQC TOKSRJMDHARCJBMYT5AA5N6EH5L7Y6TUGCZAIA2ZXTMNTJBB3EMQC GAKJROFZ5QBGUKTCAFC53JT5U2NYWVMUZHPYRALERQD7UUXSRHYAC 6DJMOJKEO5DIOEDV655SPA7C7HN2HXWMDJ7UF2CRDRBAF5YO3UEAC JNAQUQKBGJNCTE3JYJ2PPGITFT4447ITKNECMP5LVLIRMRXHHZHAC N2NUGNN4E37TNLC6JZE4H4HKJZPNVBV4VYTLXW57AP5BOU4ZK7LQC R2ASHK5CEE3PTRLS37GP4PXJ7HIGJ6UD72KKBI57UDJI7VRROQGQC 2L5MEZV344TOZLVY3432RHJFIRVXFD6O3GWLL5O4CV66BGAFTURQC R5QXEHUIZLELJGGCZAE7ATNS3CLRJ7JFRENMGH4XXH24C5WABZDQC I52S4E5FT6E6FHH3QEDJPWO7C6W7AIMAFDP2KQ5FEWXFQX7RY6CAC JV27LDDKKY57IEBWGBFPSHEARMOEGLBYGBJD27PDPTNWWYXA4T6AC ZM7NOBRMD5HHA35Y4JDC76EOA2RD4KQOQCPURXYKXA6ABMKOJIGQC IP4LD33DQFWQ4654YPNJRKQ3CNYSHRZPX6U6ZPY7OLE744XX3MEQC ZOLCTAGUUMQQ4MOZNVUANNOGEHWS7BYDTIMP3ZABLYKWUSAAMMPQC PRE6XPRNICDCHMF7C45A6DRPVT47IPAIWW6Q7AHNGW3D2PBGOPNAC RK2ASPN7A55RCEG2YRFZLFXNPSME2VKBE2ZXO257DYZPS5TPXC5QC UEG224LHBOPWSKOVXTKVAUEL47HET566LJF7ZSWVKMMLBSJWUHFAC clear_handlers = function()for k in pairs(car) docar[k] = nilendend
call_protected = function(f, ...)local args = {...}xpcall(function()f(unpack(args))end,send_errors_to_output)end
send_errors_to_output = function(err)local callstack = debug.traceback('', 3)local error_with_callstack = cleaned_up_frame(tostring(err))..'\n'..cleaned_up_callstack(callstack)Text.insert_text(Current_pane.output_editor_state, error_with_callstack)Text.redraw_all(Current_pane.output_editor_state)clear_handlers()end
if car.mouse_release then car.mouse_release(x,y, mouse_button) endif car.mousereleased then car.mousereleased(x,y, mouse_button) end
if car.mouse_release thencall_protected(car.mouse_release, x,y, mouse_button)endif car.mousereleased thencall_protected(car.mousereleased, x,y, mouse_button)end
if car.key_release then car.key_release(key, scancode) endif car.keyreleased then car.keyreleased(key, scancode) end
if car.key_release thencall_protected(car.key_release, key, scancode)endif car.keyreleased thencall_protected(car.keyreleased, key, scancode)end