summaryrefslogtreecommitdiffhomepage
path: root/samples
diff options
context:
space:
mode:
authorAmir Rajan <[email protected]>2020-08-06 08:12:27 -0500
committerAmir Rajan <[email protected]>2020-08-06 08:12:27 -0500
commit64046616ce54fff32c3dd949a4b7702136f38a3e (patch)
tree1fff22cf553b2cf3eb5fe8095b572fd0cce63196 /samples
parent161d498dc905f04b595c927309993acdcb4d394c (diff)
downloaddragonruby-game-toolkit-contrib-64046616ce54fff32c3dd949a4b7702136f38a3e.tar.gz
dragonruby-game-toolkit-contrib-64046616ce54fff32c3dd949a4b7702136f38a3e.zip
Synced with 1.14
Diffstat (limited to 'samples')
-rw-r--r--samples/99_sample_sprite_animation_creator/app/main.rb447
-rw-r--r--samples/99_sample_sprite_animation_creator/license-for-sample.txt9
-rw-r--r--samples/99_sample_sprite_animation_creator/replay.txt908
-rw-r--r--samples/99_sample_sprite_animation_creator/sprites/square-blue.pngbin0 -> 283 bytes
-rw-r--r--samples/99_sample_sprite_animation_creator/sprites/square-white.pngbin0 -> 279 bytes
5 files changed, 1364 insertions, 0 deletions
diff --git a/samples/99_sample_sprite_animation_creator/app/main.rb b/samples/99_sample_sprite_animation_creator/app/main.rb
new file mode 100644
index 0000000..14456e3
--- /dev/null
+++ b/samples/99_sample_sprite_animation_creator/app/main.rb
@@ -0,0 +1,447 @@
+class OneBitLowrezPaint
+ attr_gtk
+
+ def tick
+ outputs.background_color = [0, 0, 0]
+ defaults
+ render_instructions
+ render_canvas
+ render_buttons_frame_selection
+ render_animation_frame_thumbnails
+ render_animation
+ input_mouse_click
+ input_keyboard
+ calc_auto_export
+ calc_buttons_frame_selection
+ calc_animation_frames
+ process_queue_create_sprite
+ process_queue_reset_sprite
+ process_queue_update_rt_animation_frame
+ end
+
+ def defaults
+ state.animation_frames_per_second = 12
+ queues.create_sprite ||= []
+ queues.reset_sprite ||= []
+ queues.update_rt_animation_frame ||= []
+
+ if !state.animation_frames
+ state.animation_frames ||= []
+ add_animation_frame_to_end
+ end
+
+ state.last_mouse_down ||= 0
+ state.last_mouse_up ||= 0
+
+ state.buttons_frame_selection.left = 10
+ state.buttons_frame_selection.top = grid.top - 10
+ state.buttons_frame_selection.size = 20
+
+ defaults_canvas_sprite
+
+ state.edit_mode ||= :drawing
+ end
+
+ def defaults_canvas_sprite
+ rt_canvas.size = 16
+ rt_canvas.zoom = 30
+ rt_canvas.width = rt_canvas.size * rt_canvas.zoom
+ rt_canvas.height = rt_canvas.size * rt_canvas.zoom
+ rt_canvas.sprite = { x: 0,
+ y: 0,
+ w: rt_canvas.width,
+ h: rt_canvas.height,
+ path: :rt_canvas }.center_inside_rect(x: 0, y: 0, w: 640, h: 720)
+
+ return unless state.tick_count == 1
+
+ outputs[:rt_canvas].width = rt_canvas.width
+ outputs[:rt_canvas].height = rt_canvas.height
+ outputs[:rt_canvas].sprites << (rt_canvas.size + 1).map_with_index do |x|
+ (rt_canvas.size + 1).map_with_index do |y|
+ path = 'sprites/square-white.png'
+ path = 'sprites/square-blue.png' if x == 7 || x == 8
+ { x: x * rt_canvas.zoom,
+ y: y * rt_canvas.zoom,
+ w: rt_canvas.zoom,
+ h: rt_canvas.zoom,
+ path: path,
+ a: 50 }
+ end
+ end
+ end
+
+ def render_instructions
+ instructions = <<-S
+* Instructions:
+- All data is stored in the ~canvas~ directory.
+- Hold ~d~ to set the edit mode to erase.
+- Release ~d~ to set the edit mode drawing.
+- Press ~a~ to added a frame to the end.
+- Press ~b~ to select the previous frame.
+- Press ~f~ to select the next frame.
+- Press ~c~ to copy a frame.
+- Press ~v~ to paste a copied frame into the selected frame.
+- Press ~x~ to delete the currently selected frame.
+- Press ~w~ to save the canvas and export all sprites.
+- Press ~l~ to load the canvas.
+S
+
+ instructions.strip.each_line.with_index do |l, i|
+ outputs.labels << { x: 840, y: 500 - (i * 20), text: "#{l}",
+ r: 180, g: 180, b: 180, size_enum: -3 }
+ end
+ end
+
+ def render_canvas
+ return if state.tick_count.zero?
+ outputs.sprites << rt_canvas.sprite
+ end
+
+ def render_buttons_frame_selection
+ args.outputs.primitives << state.buttons_frame_selection.items.map_with_index do |b, i|
+ label = { x: b.x + state.buttons_frame_selection.size.half,
+ y: b.y,
+ text: "#{i + 1}", r: 180, g: 180, b: 180,
+ size_enum: -4, alignment_enum: 1 }.label
+
+ selection_border = b.merge(r: 40, g: 40, b: 40).border
+
+ if i == state.animation_frames_selected_index
+ selection_border = b.merge(r: 40, g: 230, b: 200).border
+ end
+
+ [selection_border, label]
+ end
+ end
+
+ def render_animation_frame_thumbnails
+ return if state.tick_count.zero?
+
+ outputs[:current_animation_frame].width = rt_canvas.size
+ outputs[:current_animation_frame].height = rt_canvas.size
+ outputs[:current_animation_frame].solids << selected_animation_frame[:pixels].map_with_index do |f, i|
+ { x: f.x,
+ y: f.y,
+ w: 1,
+ h: 1, r: 255, g: 255, b: 255 }
+ end
+
+ outputs.sprites << rt_canvas.sprite.merge(path: :current_animation_frame)
+
+ state.animation_frames.map_with_index do |animation_frame, animation_frame_index|
+ outputs.sprites << state.buttons_frame_selection[:items][animation_frame_index][:inner_rect]
+ .merge(path: animation_frame[:rt_name])
+ end
+ end
+
+ def render_animation
+ sprite_index = 0.frame_index count: state.animation_frames.length,
+ hold_for: 60 / state.animation_frames_per_second,
+ repeat: true
+
+ args.outputs.sprites << { x: 700 - 8,
+ y: 120,
+ w: 16,
+ h: 16,
+ path: (sprite_path sprite_index) }
+
+ args.outputs.sprites << { x: 700 - 16,
+ y: 230,
+ w: 32,
+ h: 32,
+ path: (sprite_path sprite_index) }
+
+ args.outputs.sprites << { x: 700 - 32,
+ y: 360,
+ w: 64,
+ h: 64,
+ path: (sprite_path sprite_index) }
+
+ args.outputs.sprites << { x: 700 - 64,
+ y: 520,
+ w: 128,
+ h: 128,
+ path: (sprite_path sprite_index) }
+ end
+
+ def input_mouse_click
+ if inputs.mouse.up
+ state.last_mouse_up = state.tick_count
+ elsif inputs.mouse.moved && user_is_editing?
+ edit_current_animation_frame inputs.mouse.point
+ end
+
+ return unless inputs.mouse.click
+
+ clicked_frame_button = state.buttons_frame_selection.items.find do |b|
+ inputs.mouse.point.inside_rect? b
+ end
+
+ if (clicked_frame_button)
+ state.animation_frames_selected_index = clicked_frame_button[:index]
+ end
+
+ if (inputs.mouse.point.inside_rect? rt_canvas.sprite)
+ state.last_mouse_down = state.tick_count
+ edit_current_animation_frame inputs.mouse.point
+ end
+ end
+
+ def input_keyboard
+ # w to save
+ if inputs.keyboard.key_down.w
+ t = Time.now
+ state.save_description = "Time: #{t} (#{t.to_i})"
+ gtk.serialize_state 'canvas/state.txt', state
+ gtk.serialize_state "tmp/canvas_backups/#{t.to_i}/state.txt", state
+ animation_frames.each_with_index do |animation_frame, i|
+ queues.update_rt_animation_frame << { index: i,
+ at: state.tick_count + i,
+ queue_sprite_creation: true }
+ queues.create_sprite << { index: i,
+ at: state.tick_count + animation_frames.length + i,
+ path_override: "tmp/canvas_backups/#{t.to_i}/sprite-#{i}.png" }
+ end
+ gtk.notify! "Canvas saved."
+ end
+
+ # l to load
+ if inputs.keyboard.key_down.l
+ args.state = gtk.deserialize_state 'canvas/state.txt'
+ animation_frames.each_with_index do |a, i|
+ queues.update_rt_animation_frame << { index: i,
+ at: state.tick_count + i,
+ queue_sprite_creation: true }
+ end
+ gtk.notify! "Canvas loaded."
+ end
+
+ # d to go into delete mode, release to paint
+ if inputs.keyboard.key_held.d
+ state.edit_mode = :erasing
+ gtk.notify! "Erasing." if inputs.keyboard.key_held.d == (state.tick_count - 1)
+ elsif inputs.keyboard.key_up.d
+ state.edit_mode = :drawing
+ gtk.notify! "Drawing."
+ end
+
+ # a to add a frame to the end
+ if inputs.keyboard.key_down.a
+ queues.create_sprite << { index: state.animation_frames_selected_index,
+ at: state.tick_count }
+ queues.create_sprite << { index: state.animation_frames_selected_index + 1,
+ at: state.tick_count }
+ add_animation_frame_to_end
+ gtk.notify! "Frame added to end."
+ end
+
+ # c or t to copy
+ if (inputs.keyboard.key_down.c || inputs.keyboard.key_down.t)
+ state.clipboard = [selected_animation_frame[:pixels]].flatten
+ gtk.notify! "Current frame copied."
+ end
+
+ # v or q to paste
+ if (inputs.keyboard.key_down.v || inputs.keyboard.key_down.q) && state.clipboard
+ selected_animation_frame[:pixels] = [state.clipboard].flatten
+ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
+ at: state.tick_count,
+ queue_sprite_creation: true }
+ gtk.notify! "Pasted."
+ end
+
+ # f to go forward/next frame
+ if (inputs.keyboard.key_down.f)
+ if (state.animation_frames_selected_index == (state.animation_frames.length - 1))
+ state.animation_frames_selected_index = 0
+ else
+ state.animation_frames_selected_index += 1
+ end
+ gtk.notify! "Next frame."
+ end
+
+ # b to go back/previous frame
+ if (inputs.keyboard.key_down.b)
+ if (state.animation_frames_selected_index == 0)
+ state.animation_frames_selected_index = state.animation_frames.length - 1
+ else
+ state.animation_frames_selected_index -= 1
+ end
+ gtk.notify! "Previous frame."
+ end
+
+ # x to delete frame
+ if (inputs.keyboard.key_down.x) && animation_frames.length > 1
+ state.clipboard = selected_animation_frame[:pixels]
+ state.animation_frames = animation_frames.find_all { |v| v[:index] != state.animation_frames_selected_index }
+ if state.animation_frames_selected_index >= state.animation_frames.length
+ state.animation_frames_selected_index = state.animation_frames.length - 1
+ end
+ gtk.notify! "Frame deleted."
+ end
+ end
+
+ def calc_auto_export
+ return if user_is_editing?
+ return if state.last_mouse_up.elapsed_time != 30
+ # auto export current animation frame if there is no editing for 30 ticks
+ queues.create_sprite << { index: state.animation_frames_selected_index,
+ at: state.tick_count }
+ end
+
+ def calc_buttons_frame_selection
+ state.buttons_frame_selection.items = animation_frames.length.map_with_index do |i|
+ { x: state.buttons_frame_selection.left + i * state.buttons_frame_selection.size,
+ y: state.buttons_frame_selection.top - state.buttons_frame_selection.size,
+ inner_rect: {
+ x: (state.buttons_frame_selection.left + 2) + i * state.buttons_frame_selection.size,
+ y: (state.buttons_frame_selection.top - state.buttons_frame_selection.size + 2),
+ w: 16,
+ h: 16,
+ },
+ w: state.buttons_frame_selection.size,
+ h: state.buttons_frame_selection.size,
+ index: i }
+ end
+ end
+
+ def calc_animation_frames
+ animation_frames.each_with_index do |animation_frame, i|
+ animation_frame[:index] = i
+ animation_frame[:rt_name] = "animation_frame_#{i}"
+ end
+ end
+
+ def process_queue_create_sprite
+ sprites_to_create = queues.create_sprite
+ .find_all { |h| h[:at].elapsed? }
+
+ queues.create_sprite = queues.create_sprite - sprites_to_create
+
+ sprites_to_create.each do |h|
+ export_animation_frame h[:index], h[:path_override]
+ end
+ end
+
+ def process_queue_reset_sprite
+ sprites_to_reset = queues.reset_sprite
+ .find_all { |h| h[:at].elapsed? }
+
+ queues.reset_sprite -= sprites_to_reset
+
+ sprites_to_reset.each { |h| gtk.reset_sprite (sprite_path h[:index]) }
+ end
+
+ def process_queue_update_rt_animation_frame
+ animation_frames_to_update = queues.update_rt_animation_frame
+ .find_all { |h| h[:at].elapsed? }
+
+ queues.update_rt_animation_frame -= animation_frames_to_update
+
+ animation_frames_to_update.each do |h|
+ update_animation_frame_render_target animation_frames[h[:index]]
+
+ if h[:queue_sprite_creation]
+ queues.create_sprite << { index: h[:index],
+ at: state.tick_count + 1 }
+ end
+ end
+ end
+
+ def update_animation_frame_render_target animation_frame
+ return if !animation_frame
+
+ outputs[animation_frame[:rt_name]].width = state.rt_canvas.size
+ outputs[animation_frame[:rt_name]].height = state.rt_canvas.size
+ outputs[animation_frame[:rt_name]].solids << animation_frame[:pixels].map do |f|
+ { x: f.x,
+ y: f.y,
+ w: 1,
+ h: 1, r: 255, g: 255, b: 255 }
+ end
+ end
+
+ def animation_frames
+ state.animation_frames
+ end
+
+ def add_animation_frame_to_end
+ animation_frames << {
+ index: animation_frames.length,
+ pixels: [],
+ rt_name: "animation_frame_#{animation_frames.length}"
+ }
+
+ state.animation_frames_selected_index = (animation_frames.length - 1)
+ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
+ at: state.tick_count,
+ queue_sprite_creation: true }
+ end
+
+ def sprite_path i
+ "canvas/sprite-#{i}.png"
+ end
+
+ def export_animation_frame i, path_override = nil
+ return if !state.animation_frames[i]
+
+ outputs.screenshots << state.buttons_frame_selection
+ .items[i][:inner_rect]
+ .merge(path: path_override || (sprite_path i))
+
+ outputs.screenshots << state.buttons_frame_selection
+ .items[i][:inner_rect]
+ .merge(path: "tmp/sprite_backups/#{Time.now.to_i}-sprite-#{i}.png")
+
+ queues.reset_sprite << { index: i, at: state.tick_count }
+ end
+
+ def selected_animation_frame
+ state.animation_frames[state.animation_frames_selected_index]
+ end
+
+ def edit_current_animation_frame point
+ draw_area_point = (to_draw_area point)
+ if state.edit_mode == :drawing && (!selected_animation_frame[:pixels].include? draw_area_point)
+ selected_animation_frame[:pixels] << draw_area_point
+ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
+ at: state.tick_count,
+ queue_sprite_creation: !user_is_editing? }
+ elsif state.edit_mode == :erasing && (selected_animation_frame[:pixels].include? draw_area_point)
+ selected_animation_frame[:pixels] = selected_animation_frame[:pixels].reject { |p| p == draw_area_point }
+ queues.update_rt_animation_frame << { index: state.animation_frames_selected_index,
+ at: state.tick_count,
+ queue_sprite_creation: !user_is_editing? }
+ end
+ end
+
+ def user_is_editing?
+ state.last_mouse_down > state.last_mouse_up
+ end
+
+ def to_draw_area point
+ x, y = point
+ x -= rt_canvas.sprite.x
+ y -= rt_canvas.sprite.y
+ { x: x.idiv(rt_canvas.zoom),
+ y: y.idiv(rt_canvas.zoom) }
+ end
+
+ def rt_canvas
+ state.rt_canvas ||= state.new_entity(:rt_canvas)
+ end
+
+ def queues
+ state.queues ||= state.new_entity(:queues)
+ end
+end
+
+$game = OneBitLowrezPaint.new
+
+def tick args
+ $game.args = args
+ $game.tick
+end
+
+# $gtk.reset
diff --git a/samples/99_sample_sprite_animation_creator/license-for-sample.txt b/samples/99_sample_sprite_animation_creator/license-for-sample.txt
new file mode 100644
index 0000000..376dd0e
--- /dev/null
+++ b/samples/99_sample_sprite_animation_creator/license-for-sample.txt
@@ -0,0 +1,9 @@
+Copyright 2019 Anton K. (ai Doge)
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/samples/99_sample_sprite_animation_creator/replay.txt b/samples/99_sample_sprite_animation_creator/replay.txt
new file mode 100644
index 0000000..ca25af6
--- /dev/null
+++ b/samples/99_sample_sprite_animation_creator/replay.txt
@@ -0,0 +1,908 @@
+replay_version 2.0
+stopped_at 2856
+seed 100
+recorded_at Thu Aug 06 06:37:39 2020
+[:key_up_raw, 13, 0, 2, 1, 2]
+[:mouse_move, 280, 591, 2, 2, 73]
+[:mouse_move, 290, 613, 2, 3, 74]
+[:mouse_move, 292, 621, 2, 4, 75]
+[:mouse_move, 284, 628, 2, 5, 76]
+[:mouse_move, 272, 628, 2, 6, 77]
+[:mouse_move, 255, 628, 2, 7, 78]
+[:mouse_move, 215, 606, 2, 8, 79]
+[:mouse_move, 193, 590, 2, 9, 80]
+[:mouse_move, 156, 544, 2, 10, 81]
+[:mouse_move, 151, 535, 2, 11, 82]
+[:mouse_move, 138, 503, 2, 12, 83]
+[:mouse_move, 137, 490, 2, 13, 84]
+[:mouse_move, 137, 472, 2, 14, 85]
+[:mouse_move, 139, 470, 2, 15, 86]
+[:mouse_move, 145, 462, 2, 16, 87]
+[:mouse_move, 149, 459, 2, 17, 89]
+[:mouse_move, 150, 458, 2, 18, 90]
+[:mouse_move, 151, 457, 2, 19, 91]
+[:mouse_move, 152, 457, 2, 20, 92]
+[:mouse_move, 152, 456, 2, 21, 93]
+[:mouse_move, 152, 451, 2, 22, 114]
+[:mouse_move, 153, 442, 2, 23, 115]
+[:mouse_move, 158, 427, 2, 24, 116]
+[:mouse_move, 160, 422, 2, 25, 117]
+[:mouse_move, 166, 404, 2, 26, 118]
+[:mouse_move, 169, 398, 2, 27, 119]
+[:mouse_move, 175, 386, 2, 28, 120]
+[:mouse_move, 180, 378, 2, 29, 121]
+[:mouse_move, 183, 373, 2, 30, 122]
+[:mouse_move, 185, 370, 2, 31, 123]
+[:mouse_move, 188, 366, 2, 32, 124]
+[:mouse_move, 189, 364, 2, 33, 125]
+[:mouse_move, 190, 362, 2, 34, 126]
+[:mouse_move, 191, 361, 2, 35, 128]
+[:mouse_button_pressed, 1, 0, 1, 36, 291]
+[:mouse_move, 190, 358, 2, 37, 291]
+[:mouse_move, 190, 357, 2, 38, 292]
+[:mouse_move, 189, 354, 2, 39, 293]
+[:mouse_move, 186, 346, 2, 40, 294]
+[:mouse_move, 185, 344, 2, 41, 295]
+[:mouse_move, 182, 326, 2, 42, 296]
+[:mouse_move, 182, 323, 2, 43, 296]
+[:mouse_move, 182, 318, 2, 44, 297]
+[:mouse_move, 182, 315, 2, 45, 298]
+[:mouse_move, 182, 311, 2, 46, 299]
+[:mouse_move, 183, 307, 2, 47, 301]
+[:mouse_move, 185, 302, 2, 48, 302]
+[:mouse_move, 187, 299, 2, 49, 303]
+[:mouse_move, 190, 295, 2, 50, 304]
+[:mouse_move, 193, 292, 2, 51, 305]
+[:mouse_move, 199, 287, 2, 52, 306]
+[:mouse_move, 203, 283, 2, 53, 307]
+[:mouse_move, 206, 280, 2, 54, 308]
+[:mouse_move, 216, 273, 2, 55, 309]
+[:mouse_move, 220, 271, 2, 56, 310]
+[:mouse_move, 232, 264, 2, 57, 311]
+[:mouse_move, 238, 261, 2, 58, 312]
+[:mouse_move, 250, 256, 2, 59, 313]
+[:mouse_move, 256, 253, 2, 60, 314]
+[:mouse_move, 266, 251, 2, 61, 315]
+[:mouse_move, 275, 248, 2, 62, 316]
+[:mouse_move, 288, 245, 2, 63, 317]
+[:mouse_move, 294, 245, 2, 64, 318]
+[:mouse_move, 307, 245, 2, 65, 319]
+[:mouse_move, 316, 245, 2, 66, 320]
+[:mouse_move, 332, 247, 2, 67, 321]
+[:mouse_move, 343, 250, 2, 68, 322]
+[:mouse_move, 350, 253, 2, 69, 323]
+[:mouse_move, 367, 261, 2, 70, 324]
+[:mouse_move, 385, 272, 2, 71, 325]
+[:mouse_move, 394, 279, 2, 72, 326]
+[:mouse_move, 408, 294, 2, 73, 327]
+[:mouse_move, 416, 301, 2, 74, 328]
+[:mouse_move, 426, 318, 2, 75, 329]
+[:mouse_move, 432, 326, 2, 76, 330]
+[:mouse_move, 439, 342, 2, 77, 331]
+[:mouse_move, 442, 351, 2, 78, 332]
+[:mouse_move, 447, 369, 2, 79, 333]
+[:mouse_move, 449, 382, 2, 80, 334]
+[:mouse_move, 451, 405, 2, 81, 335]
+[:mouse_move, 452, 410, 2, 82, 336]
+[:mouse_move, 452, 417, 2, 83, 337]
+[:mouse_move, 449, 426, 2, 84, 338]
+[:mouse_move, 444, 437, 2, 85, 338]
+[:mouse_move, 440, 441, 2, 86, 339]
+[:mouse_move, 430, 450, 2, 87, 340]
+[:mouse_move, 423, 456, 2, 88, 341]
+[:mouse_move, 412, 464, 2, 89, 342]
+[:mouse_move, 407, 467, 2, 90, 343]
+[:mouse_move, 402, 470, 2, 91, 344]
+[:mouse_move, 382, 480, 2, 92, 345]
+[:mouse_move, 371, 485, 2, 93, 346]
+[:mouse_move, 351, 491, 2, 94, 347]
+[:mouse_move, 344, 492, 2, 95, 348]
+[:mouse_move, 321, 498, 2, 96, 349]
+[:mouse_move, 312, 499, 2, 97, 350]
+[:mouse_move, 290, 497, 2, 98, 351]
+[:mouse_move, 283, 496, 2, 99, 352]
+[:mouse_move, 266, 490, 2, 100, 353]
+[:mouse_move, 260, 487, 2, 101, 354]
+[:mouse_move, 246, 478, 2, 102, 355]
+[:mouse_move, 241, 472, 2, 103, 356]
+[:mouse_move, 230, 461, 2, 104, 357]
+[:mouse_move, 226, 455, 2, 105, 358]
+[:mouse_move, 217, 443, 2, 106, 359]
+[:mouse_move, 213, 435, 2, 107, 360]
+[:mouse_move, 207, 422, 2, 108, 361]
+[:mouse_move, 205, 418, 2, 109, 362]
+[:mouse_move, 201, 401, 2, 110, 363]
+[:mouse_move, 199, 396, 2, 111, 364]
+[:mouse_move, 197, 385, 2, 112, 365]
+[:mouse_move, 197, 380, 2, 113, 366]
+[:mouse_move, 196, 372, 2, 114, 367]
+[:mouse_move, 196, 367, 2, 115, 368]
+[:mouse_move, 195, 361, 2, 116, 369]
+[:mouse_move, 195, 358, 2, 117, 370]
+[:mouse_move, 195, 353, 2, 118, 371]
+[:mouse_move, 195, 347, 2, 119, 372]
+[:mouse_move, 196, 344, 2, 120, 373]
+[:mouse_move, 196, 338, 2, 121, 374]
+[:mouse_move, 197, 337, 2, 122, 375]
+[:mouse_move, 197, 334, 2, 123, 376]
+[:mouse_move, 197, 333, 2, 124, 377]
+[:mouse_move, 197, 332, 2, 125, 379]
+[:mouse_button_up, 1, 0, 1, 126, 393]
+[:mouse_move, 224, 331, 2, 127, 394]
+[:mouse_move, 237, 327, 2, 128, 395]
+[:mouse_move, 257, 317, 2, 129, 396]
+[:mouse_move, 267, 310, 2, 130, 397]
+[:mouse_move, 289, 295, 2, 131, 398]
+[:mouse_move, 315, 268, 2, 132, 399]
+[:mouse_move, 340, 234, 2, 133, 400]
+[:mouse_move, 353, 204, 2, 134, 401]
+[:mouse_move, 359, 188, 2, 135, 402]
+[:mouse_move, 361, 172, 2, 136, 403]
+[:mouse_move, 361, 163, 2, 137, 404]
+[:mouse_move, 361, 154, 2, 138, 405]
+[:mouse_move, 361, 152, 2, 139, 406]
+[:mouse_move, 361, 151, 2, 140, 407]
+[:mouse_move, 361, 150, 2, 141, 408]
+[:key_down_raw, 97, 0, 2, 142, 408]
+[:mouse_move, 360, 150, 2, 143, 408]
+[:mouse_move, 360, 151, 2, 144, 412]
+[:key_up_raw, 97, 0, 2, 145, 412]
+[:mouse_move, 360, 152, 2, 146, 413]
+[:mouse_move, 360, 153, 2, 147, 414]
+[:mouse_move, 360, 155, 2, 148, 415]
+[:mouse_move, 360, 157, 2, 149, 416]
+[:mouse_move, 361, 170, 2, 150, 417]
+[:mouse_move, 361, 171, 2, 151, 418]
+[:mouse_move, 361, 174, 2, 152, 419]
+[:mouse_move, 361, 175, 2, 153, 421]
+[:mouse_move, 361, 176, 2, 154, 423]
+[:mouse_move, 359, 179, 2, 155, 425]
+[:mouse_move, 359, 180, 2, 156, 427]
+[:mouse_move, 358, 181, 2, 157, 428]
+[:mouse_move, 358, 182, 2, 158, 429]
+[:mouse_move, 358, 183, 2, 159, 430]
+[:mouse_move, 345, 202, 2, 160, 431]
+[:mouse_move, 340, 207, 2, 161, 432]
+[:mouse_move, 337, 210, 2, 162, 433]
+[:mouse_move, 335, 213, 2, 163, 434]
+[:mouse_move, 331, 217, 2, 164, 435]
+[:mouse_move, 327, 221, 2, 165, 436]
+[:mouse_move, 325, 223, 2, 166, 437]
+[:mouse_move, 325, 224, 2, 167, 438]
+[:mouse_move, 322, 226, 2, 168, 439]
+[:mouse_move, 322, 228, 2, 169, 440]
+[:mouse_move, 321, 229, 2, 170, 441]
+[:mouse_move, 321, 230, 2, 171, 445]
+[:mouse_move, 320, 231, 2, 172, 463]
+[:mouse_move, 319, 233, 2, 173, 465]
+[:mouse_move, 318, 233, 2, 174, 466]
+[:mouse_move, 318, 234, 2, 175, 467]
+[:mouse_move, 316, 236, 2, 176, 468]
+[:mouse_move, 315, 236, 2, 177, 469]
+[:mouse_move, 314, 238, 2, 178, 470]
+[:mouse_move, 313, 238, 2, 179, 471]
+[:mouse_move, 312, 239, 2, 180, 472]
+[:mouse_move, 311, 240, 2, 181, 474]
+[:mouse_move, 310, 240, 2, 182, 477]
+[:mouse_button_pressed, 1, 0, 1, 183, 499]
+[:mouse_move, 307, 239, 2, 184, 499]
+[:mouse_move, 303, 238, 2, 185, 500]
+[:mouse_move, 295, 234, 2, 186, 501]
+[:mouse_move, 291, 233, 2, 187, 502]
+[:mouse_move, 262, 231, 2, 188, 503]
+[:mouse_move, 256, 232, 2, 189, 504]
+[:mouse_move, 254, 233, 2, 190, 505]
+[:mouse_move, 249, 236, 2, 191, 506]
+[:mouse_move, 246, 239, 2, 192, 507]
+[:mouse_move, 243, 242, 2, 193, 508]
+[:mouse_move, 241, 244, 2, 194, 509]
+[:mouse_move, 235, 250, 2, 195, 510]
+[:mouse_move, 234, 252, 2, 196, 511]
+[:mouse_move, 230, 258, 2, 197, 512]
+[:mouse_move, 227, 262, 2, 198, 513]
+[:mouse_move, 223, 268, 2, 199, 514]
+[:mouse_move, 221, 270, 2, 200, 515]
+[:mouse_move, 219, 273, 2, 201, 516]
+[:mouse_move, 217, 277, 2, 202, 517]
+[:mouse_move, 215, 281, 2, 203, 518]
+[:mouse_move, 213, 288, 2, 204, 519]
+[:mouse_move, 212, 292, 2, 205, 520]
+[:mouse_move, 211, 302, 2, 206, 521]
+[:mouse_move, 210, 307, 2, 207, 522]
+[:mouse_move, 210, 318, 2, 208, 523]
+[:mouse_move, 210, 323, 2, 209, 524]
+[:mouse_move, 212, 335, 2, 210, 525]
+[:mouse_move, 214, 340, 2, 211, 526]
+[:mouse_move, 218, 351, 2, 212, 527]
+[:mouse_move, 222, 356, 2, 213, 528]
+[:mouse_move, 230, 368, 2, 214, 529]
+[:mouse_move, 235, 374, 2, 215, 530]
+[:mouse_move, 247, 387, 2, 216, 531]
+[:mouse_move, 254, 393, 2, 217, 532]
+[:mouse_move, 268, 407, 2, 218, 533]
+[:mouse_move, 275, 413, 2, 219, 534]
+[:mouse_move, 290, 424, 2, 220, 535]
+[:mouse_move, 298, 429, 2, 221, 536]
+[:mouse_move, 311, 436, 2, 222, 537]
+[:mouse_move, 319, 441, 2, 223, 538]
+[:mouse_move, 333, 445, 2, 224, 539]
+[:mouse_move, 337, 446, 2, 225, 540]
+[:mouse_move, 350, 448, 2, 226, 541]
+[:mouse_move, 357, 448, 2, 227, 542]
+[:mouse_move, 368, 445, 2, 228, 543]
+[:mouse_move, 376, 440, 2, 229, 544]
+[:mouse_move, 382, 435, 2, 230, 545]
+[:mouse_move, 393, 424, 2, 231, 546]
+[:mouse_move, 398, 418, 2, 232, 547]
+[:mouse_move, 405, 404, 2, 233, 548]
+[:mouse_move, 408, 397, 2, 234, 549]
+[:mouse_move, 414, 385, 2, 235, 550]
+[:mouse_move, 415, 380, 2, 236, 551]
+[:mouse_move, 418, 368, 2, 237, 552]
+[:mouse_move, 419, 362, 2, 238, 553]
+[:mouse_move, 420, 352, 2, 239, 554]
+[:mouse_move, 420, 349, 2, 240, 555]
+[:mouse_move, 420, 342, 2, 241, 556]
+[:mouse_move, 420, 340, 2, 242, 557]
+[:mouse_move, 420, 339, 2, 243, 558]
+[:mouse_move, 420, 337, 2, 244, 559]
+[:mouse_move, 420, 336, 2, 245, 560]
+[:mouse_move, 420, 334, 2, 246, 561]
+[:mouse_move, 417, 332, 2, 247, 562]
+[:mouse_move, 416, 331, 2, 248, 563]
+[:mouse_move, 412, 327, 2, 249, 564]
+[:mouse_move, 410, 325, 2, 250, 565]
+[:mouse_move, 402, 320, 2, 251, 566]
+[:mouse_move, 397, 317, 2, 252, 567]
+[:mouse_move, 385, 312, 2, 253, 568]
+[:mouse_move, 379, 310, 2, 254, 569]
+[:mouse_move, 366, 305, 2, 255, 570]
+[:mouse_move, 358, 303, 2, 256, 571]
+[:mouse_move, 352, 302, 2, 257, 572]
+[:mouse_move, 338, 300, 2, 258, 573]
+[:mouse_move, 331, 300, 2, 259, 574]
+[:mouse_move, 314, 300, 2, 260, 575]
+[:mouse_move, 307, 301, 2, 261, 576]
+[:mouse_move, 293, 302, 2, 262, 577]
+[:mouse_move, 288, 303, 2, 263, 578]
+[:mouse_move, 275, 305, 2, 264, 579]
+[:mouse_move, 267, 305, 2, 265, 580]
+[:mouse_move, 258, 307, 2, 266, 581]
+[:mouse_move, 250, 308, 2, 267, 582]
+[:mouse_move, 239, 310, 2, 268, 583]
+[:mouse_move, 233, 311, 2, 269, 584]
+[:mouse_move, 225, 312, 2, 270, 585]
+[:mouse_move, 222, 313, 2, 271, 586]
+[:mouse_move, 217, 315, 2, 272, 587]
+[:mouse_move, 215, 315, 2, 273, 588]
+[:mouse_move, 212, 317, 2, 274, 589]
+[:mouse_move, 212, 318, 2, 275, 590]
+[:mouse_move, 211, 319, 2, 276, 591]
+[:mouse_move, 211, 320, 2, 277, 593]
+[:mouse_button_up, 1, 0, 1, 278, 608]
+[:mouse_move, 215, 335, 2, 279, 608]
+[:mouse_move, 220, 349, 2, 280, 609]
+[:mouse_move, 225, 378, 2, 281, 610]
+[:mouse_move, 226, 403, 2, 282, 612]
+[:mouse_move, 226, 419, 2, 283, 613]
+[:mouse_move, 220, 442, 2, 284, 614]
+[:mouse_move, 210, 449, 2, 285, 615]
+[:mouse_move, 196, 450, 2, 286, 616]
+[:mouse_move, 187, 450, 2, 287, 617]
+[:mouse_move, 173, 441, 2, 288, 618]
+[:mouse_move, 168, 435, 2, 289, 619]
+[:mouse_move, 164, 427, 2, 290, 620]
+[:mouse_move, 161, 422, 2, 291, 621]
+[:mouse_move, 159, 415, 2, 292, 622]
+[:mouse_move, 159, 414, 2, 293, 623]
+[:mouse_move, 159, 412, 2, 294, 624]
+[:mouse_move, 159, 411, 2, 295, 625]
+[:mouse_move, 159, 410, 2, 296, 627]
+[:mouse_move, 160, 410, 2, 297, 632]
+[:mouse_move, 161, 410, 2, 298, 639]
+[:key_down_raw, 97, 0, 2, 299, 673]
+[:key_up_raw, 97, 0, 2, 300, 677]
+[:mouse_move, 161, 409, 2, 301, 680]
+[:mouse_move, 162, 408, 2, 302, 682]
+[:mouse_move, 162, 407, 2, 303, 683]
+[:mouse_move, 163, 405, 2, 304, 684]
+[:mouse_move, 164, 403, 2, 305, 685]
+[:mouse_move, 164, 402, 2, 306, 689]
+[:key_down_raw, 98, 0, 2, 307, 705]
+[:key_up_raw, 98, 0, 2, 308, 709]
+[:key_down_raw, 99, 0, 2, 309, 723]
+[:key_up_raw, 99, 0, 2, 310, 729]
+[:key_down_raw, 98, 0, 2, 311, 763]
+[:key_up_raw, 98, 0, 2, 312, 769]
+[:key_down_raw, 102, 0, 2, 313, 874]
+[:key_up_raw, 102, 0, 2, 314, 877]
+[:key_down_raw, 102, 0, 2, 315, 881]
+[:key_up_raw, 102, 0, 2, 316, 886]
+[:key_down_raw, 113, 0, 2, 317, 898]
+[:key_up_raw, 113, 0, 2, 318, 902]
+[:mouse_move, 167, 401, 2, 319, 945]
+[:mouse_move, 170, 399, 2, 320, 946]
+[:mouse_move, 180, 393, 2, 321, 947]
+[:mouse_move, 190, 388, 2, 322, 948]
+[:mouse_move, 202, 382, 2, 323, 949]
+[:mouse_move, 216, 376, 2, 324, 950]
+[:mouse_move, 226, 375, 2, 325, 951]
+[:mouse_move, 235, 374, 2, 326, 952]
+[:mouse_move, 245, 375, 2, 327, 953]
+[:mouse_move, 247, 377, 2, 328, 954]
+[:mouse_move, 255, 383, 2, 329, 955]
+[:mouse_move, 261, 387, 2, 330, 956]
+[:mouse_move, 270, 391, 2, 331, 957]
+[:mouse_move, 275, 393, 2, 332, 958]
+[:mouse_move, 285, 393, 2, 333, 959]
+[:mouse_move, 296, 392, 2, 334, 960]
+[:mouse_move, 318, 377, 2, 335, 961]
+[:mouse_move, 331, 365, 2, 336, 962]
+[:mouse_move, 368, 335, 2, 337, 963]
+[:mouse_move, 386, 319, 2, 338, 964]
+[:mouse_move, 404, 303, 2, 339, 965]
+[:mouse_move, 426, 281, 2, 340, 966]
+[:mouse_move, 438, 269, 2, 341, 967]
+[:mouse_move, 449, 257, 2, 342, 968]
+[:mouse_move, 456, 250, 2, 343, 969]
+[:mouse_move, 467, 237, 2, 344, 970]
+[:mouse_move, 468, 235, 2, 345, 971]
+[:mouse_move, 471, 231, 2, 346, 972]
+[:mouse_move, 472, 230, 2, 347, 973]
+[:mouse_move, 473, 228, 2, 348, 974]
+[:mouse_move, 474, 228, 2, 349, 975]
+[:mouse_move, 475, 226, 2, 350, 976]
+[:mouse_move, 475, 225, 2, 351, 977]
+[:mouse_move, 476, 223, 2, 352, 978]
+[:mouse_move, 476, 222, 2, 353, 980]
+[:mouse_button_pressed, 1, 0, 1, 354, 992]
+[:mouse_move, 473, 223, 2, 355, 992]
+[:mouse_move, 470, 225, 2, 356, 993]
+[:mouse_move, 466, 226, 2, 357, 994]
+[:mouse_move, 460, 229, 2, 358, 995]
+[:mouse_move, 455, 231, 2, 359, 996]
+[:mouse_move, 401, 266, 2, 360, 997]
+[:mouse_move, 381, 280, 2, 361, 998]
+[:mouse_move, 371, 287, 2, 362, 999]
+[:mouse_move, 354, 301, 2, 363, 1000]
+[:mouse_move, 346, 308, 2, 364, 1001]
+[:mouse_move, 329, 323, 2, 365, 1002]
+[:mouse_move, 322, 331, 2, 366, 1003]
+[:mouse_move, 307, 343, 2, 367, 1004]
+[:mouse_move, 301, 349, 2, 368, 1005]
+[:mouse_move, 287, 362, 2, 369, 1006]
+[:mouse_move, 281, 369, 2, 370, 1007]
+[:mouse_move, 264, 387, 2, 371, 1008]
+[:mouse_move, 256, 396, 2, 372, 1009]
+[:mouse_move, 246, 407, 2, 373, 1010]
+[:mouse_move, 234, 420, 2, 374, 1012]
+[:mouse_move, 231, 423, 2, 375, 1013]
+[:mouse_move, 226, 430, 2, 376, 1014]
+[:mouse_move, 224, 432, 2, 377, 1015]
+[:mouse_move, 223, 434, 2, 378, 1016]
+[:mouse_move, 221, 436, 2, 379, 1017]
+[:mouse_move, 220, 438, 2, 380, 1018]
+[:mouse_move, 219, 439, 2, 381, 1019]
+[:mouse_move, 218, 440, 2, 382, 1020]
+[:mouse_move, 217, 441, 2, 383, 1021]
+[:mouse_move, 216, 442, 2, 384, 1023]
+[:mouse_move, 214, 445, 2, 385, 1024]
+[:mouse_move, 212, 447, 2, 386, 1025]
+[:mouse_move, 211, 448, 2, 387, 1026]
+[:mouse_move, 209, 450, 2, 388, 1027]
+[:mouse_move, 209, 451, 2, 389, 1028]
+[:mouse_move, 208, 452, 2, 390, 1029]
+[:mouse_move, 207, 452, 2, 391, 1030]
+[:mouse_move, 206, 453, 2, 392, 1031]
+[:mouse_move, 206, 454, 2, 393, 1032]
+[:mouse_move, 204, 456, 2, 394, 1033]
+[:mouse_move, 203, 457, 2, 395, 1034]
+[:mouse_move, 202, 458, 2, 396, 1035]
+[:mouse_button_up, 1, 0, 1, 397, 1050]
+[:mouse_move, 217, 484, 2, 398, 1050]
+[:mouse_move, 232, 510, 2, 399, 1051]
+[:mouse_move, 256, 554, 2, 400, 1052]
+[:mouse_move, 266, 571, 2, 401, 1053]
+[:mouse_move, 278, 588, 2, 402, 1054]
+[:mouse_move, 288, 604, 2, 403, 1055]
+[:mouse_move, 299, 620, 2, 404, 1056]
+[:mouse_move, 302, 624, 2, 405, 1057]
+[:mouse_move, 303, 626, 2, 406, 1058]
+[:mouse_move, 303, 624, 2, 407, 1062]
+[:mouse_move, 302, 622, 2, 408, 1063]
+[:mouse_move, 302, 621, 2, 409, 1064]
+[:mouse_move, 301, 619, 2, 410, 1065]
+[:mouse_move, 301, 618, 2, 411, 1066]
+[:mouse_move, 301, 617, 2, 412, 1068]
+[:mouse_move, 301, 616, 2, 413, 1072]
+[:mouse_move, 301, 615, 2, 414, 1075]
+[:mouse_move, 301, 614, 2, 415, 1076]
+[:mouse_move, 301, 612, 2, 416, 1077]
+[:mouse_move, 301, 611, 2, 417, 1078]
+[:mouse_move, 299, 604, 2, 418, 1079]
+[:mouse_move, 297, 599, 2, 419, 1080]
+[:mouse_move, 292, 586, 2, 420, 1081]
+[:mouse_move, 268, 518, 2, 421, 1082]
+[:mouse_move, 261, 492, 2, 422, 1083]
+[:mouse_move, 252, 466, 2, 423, 1084]
+[:mouse_move, 243, 437, 2, 424, 1085]
+[:mouse_move, 239, 425, 2, 425, 1086]
+[:mouse_move, 218, 366, 2, 426, 1087]
+[:mouse_move, 216, 360, 2, 427, 1088]
+[:mouse_move, 215, 358, 2, 428, 1089]
+[:mouse_move, 216, 358, 2, 429, 1100]
+[:mouse_move, 216, 360, 2, 430, 1102]
+[:mouse_move, 217, 360, 2, 431, 1103]
+[:mouse_move, 221, 366, 2, 432, 1104]
+[:mouse_move, 225, 372, 2, 433, 1105]
+[:mouse_move, 232, 383, 2, 434, 1106]
+[:mouse_move, 237, 391, 2, 435, 1107]
+[:mouse_move, 242, 399, 2, 436, 1108]
+[:mouse_move, 245, 404, 2, 437, 1109]
+[:mouse_move, 248, 409, 2, 438, 1110]
+[:mouse_move, 249, 410, 2, 439, 1111]
+[:mouse_move, 250, 411, 2, 440, 1112]
+[:mouse_move, 250, 412, 2, 441, 1118]
+[:mouse_move, 251, 412, 2, 442, 1125]
+[:mouse_move, 251, 413, 2, 443, 1127]
+[:key_down_raw, 97, 0, 2, 444, 1217]
+[:key_up_raw, 97, 0, 2, 445, 1221]
+[:key_down_raw, 97, 0, 2, 446, 1233]
+[:key_up_raw, 97, 0, 2, 447, 1237]
+[:key_down_raw, 98, 0, 2, 448, 1248]
+[:key_up_raw, 98, 0, 2, 449, 1252]
+[:key_down_raw, 98, 0, 2, 450, 1256]
+[:key_up_raw, 98, 0, 2, 451, 1258]
+[:key_down_raw, 98, 0, 2, 452, 1293]
+[:key_up_raw, 98, 0, 2, 453, 1297]
+[:key_down_raw, 99, 0, 2, 454, 1334]
+[:key_up_raw, 99, 0, 2, 455, 1339]
+[:key_down_raw, 98, 0, 2, 456, 1419]
+[:key_up_raw, 98, 0, 2, 457, 1422]
+[:key_down_raw, 98, 0, 2, 458, 1426]
+[:key_up_raw, 98, 0, 2, 459, 1429]
+[:key_down_raw, 98, 0, 2, 460, 1473]
+[:key_up_raw, 98, 0, 2, 461, 1478]
+[:key_down_raw, 113, 0, 2, 462, 1534]
+[:key_up_raw, 113, 0, 2, 463, 1538]
+[:key_down_raw, 98, 0, 2, 464, 1636]
+[:key_up_raw, 98, 0, 2, 465, 1642]
+[:key_down_raw, 102, 0, 2, 466, 1676]
+[:key_up_raw, 102, 0, 2, 467, 1680]
+[:key_down_raw, 102, 0, 2, 468, 1684]
+[:key_up_raw, 102, 0, 2, 469, 1688]
+[:key_down_raw, 113, 0, 2, 470, 1697]
+[:key_up_raw, 113, 0, 2, 471, 1700]
+[:key_down_raw, 98, 0, 2, 472, 1739]
+[:key_up_raw, 98, 0, 2, 473, 1742]
+[:key_down_raw, 98, 0, 2, 474, 1746]
+[:key_up_raw, 98, 0, 2, 475, 1748]
+[:key_down_raw, 102, 0, 2, 476, 1866]
+[:key_up_raw, 102, 0, 2, 477, 1871]
+[:key_down_raw, 120, 0, 2, 478, 1891]
+[:key_up_raw, 120, 0, 2, 479, 1896]
+[:mouse_move, 251, 415, 2, 480, 1934]
+[:mouse_move, 255, 423, 2, 481, 1935]
+[:mouse_move, 261, 433, 2, 482, 1936]
+[:mouse_move, 277, 463, 2, 483, 1937]
+[:mouse_move, 288, 481, 2, 484, 1938]
+[:mouse_move, 302, 510, 2, 485, 1939]
+[:mouse_move, 310, 526, 2, 486, 1940]
+[:mouse_move, 323, 551, 2, 487, 1941]
+[:mouse_move, 324, 554, 2, 488, 1942]
+[:mouse_move, 327, 562, 2, 489, 1943]
+[:mouse_move, 328, 565, 2, 490, 1944]
+[:mouse_move, 328, 567, 2, 491, 1945]
+[:mouse_move, 328, 566, 2, 492, 1949]
+[:mouse_move, 326, 564, 2, 493, 1950]
+[:mouse_move, 325, 562, 2, 494, 1951]
+[:mouse_move, 323, 556, 2, 495, 1952]
+[:mouse_move, 323, 553, 2, 496, 1953]
+[:mouse_move, 321, 549, 2, 497, 1954]
+[:mouse_move, 320, 545, 2, 498, 1955]
+[:mouse_move, 319, 540, 2, 499, 1956]
+[:mouse_move, 319, 538, 2, 500, 1957]
+[:mouse_move, 319, 535, 2, 501, 1958]
+[:mouse_move, 319, 534, 2, 502, 1959]
+[:mouse_move, 319, 533, 2, 503, 2199]
+[:mouse_move, 318, 533, 2, 504, 2201]
+[:mouse_move, 317, 531, 2, 505, 2207]
+[:mouse_move, 316, 530, 2, 506, 2208]
+[:mouse_move, 314, 527, 2, 507, 2209]
+[:mouse_move, 311, 522, 2, 508, 2210]
+[:mouse_move, 300, 505, 2, 509, 2211]
+[:mouse_move, 293, 492, 2, 510, 2212]
+[:mouse_move, 272, 455, 2, 511, 2213]
+[:key_down_raw, 100, 0, 2, 512, 2214]
+[:mouse_move, 259, 434, 2, 513, 2214]
+[:mouse_move, 243, 403, 2, 514, 2215]
+[:mouse_move, 232, 382, 2, 515, 2216]
+[:mouse_move, 221, 355, 2, 516, 2217]
+[:mouse_move, 220, 351, 2, 517, 2218]
+[:mouse_move, 218, 344, 2, 518, 2219]
+[:mouse_move, 216, 335, 2, 519, 2220]
+[:mouse_move, 216, 332, 2, 520, 2221]
+[:mouse_move, 216, 327, 2, 521, 2222]
+[:key_down_raw, 100, 0, 2, 522, 2229]
+[:key_down_raw, 100, 0, 2, 523, 2231]
+[:key_down_raw, 100, 0, 2, 524, 2233]
+[:key_down_raw, 100, 0, 2, 525, 2235]
+[:key_down_raw, 100, 0, 2, 526, 2237]
+[:mouse_button_pressed, 1, 0, 1, 527, 2238]
+[:key_down_raw, 100, 0, 2, 528, 2239]
+[:mouse_move, 216, 325, 2, 529, 2239]
+[:mouse_move, 216, 315, 2, 530, 2240]
+[:key_down_raw, 100, 0, 2, 531, 2241]
+[:mouse_move, 216, 305, 2, 532, 2241]
+[:mouse_move, 219, 281, 2, 533, 2242]
+[:key_down_raw, 100, 0, 2, 534, 2243]
+[:mouse_move, 230, 234, 2, 535, 2243]
+[:mouse_move, 231, 228, 2, 536, 2243]
+[:key_down_raw, 100, 0, 2, 537, 2244]
+[:mouse_move, 233, 223, 2, 538, 2244]
+[:mouse_move, 237, 214, 2, 539, 2245]
+[:mouse_move, 244, 207, 2, 540, 2246]
+[:key_down_raw, 100, 0, 2, 541, 2246]
+[:mouse_move, 247, 204, 2, 542, 2247]
+[:mouse_move, 254, 199, 2, 543, 2248]
+[:key_down_raw, 100, 0, 2, 544, 2248]
+[:mouse_move, 257, 197, 2, 545, 2249]
+[:mouse_move, 262, 194, 2, 546, 2250]
+[:key_down_raw, 100, 0, 2, 547, 2250]
+[:mouse_move, 264, 194, 2, 548, 2251]
+[:mouse_move, 268, 193, 2, 549, 2252]
+[:key_down_raw, 100, 0, 2, 550, 2252]
+[:mouse_move, 269, 193, 2, 551, 2253]
+[:mouse_move, 271, 193, 2, 552, 2254]
+[:key_down_raw, 100, 0, 2, 553, 2254]
+[:mouse_move, 272, 195, 2, 554, 2255]
+[:mouse_move, 274, 202, 2, 555, 2256]
+[:key_down_raw, 100, 0, 2, 556, 2256]
+[:mouse_move, 275, 208, 2, 557, 2257]
+[:mouse_move, 276, 225, 2, 558, 2258]
+[:key_down_raw, 100, 0, 2, 559, 2258]
+[:mouse_move, 275, 234, 2, 560, 2259]
+[:mouse_move, 270, 247, 2, 561, 2260]
+[:key_down_raw, 100, 0, 2, 562, 2260]
+[:mouse_move, 265, 255, 2, 563, 2261]
+[:mouse_move, 254, 270, 2, 564, 2262]
+[:key_down_raw, 100, 0, 2, 565, 2262]
+[:mouse_move, 248, 275, 2, 566, 2263]
+[:mouse_move, 235, 285, 2, 567, 2264]
+[:key_down_raw, 100, 0, 2, 568, 2264]
+[:mouse_move, 232, 287, 2, 569, 2265]
+[:mouse_move, 223, 291, 2, 570, 2266]
+[:key_down_raw, 100, 0, 2, 571, 2266]
+[:mouse_move, 219, 293, 2, 572, 2267]
+[:mouse_move, 214, 295, 2, 573, 2268]
+[:key_down_raw, 100, 0, 2, 574, 2268]
+[:mouse_move, 212, 296, 2, 575, 2269]
+[:mouse_move, 210, 297, 2, 576, 2270]
+[:key_down_raw, 100, 0, 2, 577, 2270]
+[:mouse_move, 208, 297, 2, 578, 2270]
+[:mouse_move, 208, 298, 2, 579, 2271]
+[:mouse_move, 207, 298, 2, 580, 2272]
+[:key_down_raw, 100, 0, 2, 581, 2272]
+[:mouse_move, 206, 298, 2, 582, 2273]
+[:key_down_raw, 100, 0, 2, 583, 2274]
+[:mouse_move, 206, 297, 2, 584, 2276]
+[:key_down_raw, 100, 0, 2, 585, 2276]
+[:mouse_move, 207, 291, 2, 586, 2276]
+[:mouse_move, 209, 285, 2, 587, 2277]
+[:mouse_move, 213, 271, 2, 588, 2278]
+[:key_down_raw, 100, 0, 2, 589, 2278]
+[:mouse_move, 215, 265, 2, 590, 2278]
+[:mouse_move, 221, 251, 2, 591, 2279]
+[:mouse_move, 227, 238, 2, 592, 2280]
+[:key_down_raw, 100, 0, 2, 593, 2280]
+[:mouse_move, 231, 228, 2, 594, 2280]
+[:mouse_move, 235, 219, 2, 595, 2281]
+[:mouse_move, 240, 211, 2, 596, 2282]
+[:key_down_raw, 100, 0, 2, 597, 2282]
+[:mouse_move, 247, 203, 2, 598, 2283]
+[:mouse_move, 250, 199, 2, 599, 2284]
+[:key_down_raw, 100, 0, 2, 600, 2284]
+[:mouse_move, 259, 194, 2, 601, 2285]
+[:mouse_move, 264, 193, 2, 602, 2286]
+[:key_down_raw, 100, 0, 2, 603, 2286]
+[:mouse_move, 276, 192, 2, 604, 2287]
+[:mouse_move, 281, 192, 2, 605, 2288]
+[:key_down_raw, 100, 0, 2, 606, 2288]
+[:mouse_move, 289, 194, 2, 607, 2289]
+[:mouse_move, 294, 194, 2, 608, 2290]
+[:key_down_raw, 100, 0, 2, 609, 2290]
+[:mouse_move, 301, 197, 2, 610, 2291]
+[:key_down_raw, 100, 0, 2, 611, 2292]
+[:mouse_move, 305, 199, 2, 612, 2292]
+[:mouse_move, 308, 201, 2, 613, 2293]
+[:key_down_raw, 100, 0, 2, 614, 2294]
+[:mouse_move, 310, 201, 2, 615, 2294]
+[:mouse_move, 311, 202, 2, 616, 2295]
+[:mouse_move, 312, 203, 2, 617, 2296]
+[:key_down_raw, 100, 0, 2, 618, 2296]
+[:mouse_move, 312, 205, 2, 619, 2298]
+[:key_down_raw, 100, 0, 2, 620, 2298]
+[:mouse_move, 312, 207, 2, 621, 2299]
+[:mouse_move, 310, 216, 2, 622, 2300]
+[:key_down_raw, 100, 0, 2, 623, 2300]
+[:mouse_move, 306, 224, 2, 624, 2301]
+[:mouse_move, 298, 235, 2, 625, 2302]
+[:key_down_raw, 100, 0, 2, 626, 2302]
+[:mouse_move, 295, 238, 2, 627, 2303]
+[:mouse_move, 286, 247, 2, 628, 2304]
+[:key_down_raw, 100, 0, 2, 629, 2304]
+[:mouse_move, 280, 252, 2, 630, 2305]
+[:mouse_move, 270, 261, 2, 631, 2306]
+[:key_down_raw, 100, 0, 2, 632, 2306]
+[:mouse_move, 267, 263, 2, 633, 2307]
+[:mouse_move, 258, 274, 2, 634, 2308]
+[:key_down_raw, 100, 0, 2, 635, 2308]
+[:mouse_move, 254, 279, 2, 636, 2309]
+[:mouse_move, 245, 295, 2, 637, 2310]
+[:key_down_raw, 100, 0, 2, 638, 2310]
+[:mouse_move, 242, 303, 2, 639, 2311]
+[:mouse_move, 240, 315, 2, 640, 2312]
+[:key_down_raw, 100, 0, 2, 641, 2312]
+[:mouse_move, 238, 323, 2, 642, 2313]
+[:mouse_move, 238, 335, 2, 643, 2314]
+[:key_down_raw, 100, 0, 2, 644, 2314]
+[:mouse_move, 238, 338, 2, 645, 2315]
+[:mouse_move, 238, 345, 2, 646, 2316]
+[:key_down_raw, 100, 0, 2, 647, 2316]
+[:mouse_move, 241, 349, 2, 648, 2317]
+[:mouse_move, 247, 350, 2, 649, 2318]
+[:key_down_raw, 100, 0, 2, 650, 2318]
+[:mouse_move, 252, 350, 2, 651, 2319]
+[:mouse_move, 260, 344, 2, 652, 2320]
+[:key_down_raw, 100, 0, 2, 653, 2320]
+[:mouse_move, 264, 340, 2, 654, 2321]
+[:mouse_move, 266, 337, 2, 655, 2322]
+[:key_down_raw, 100, 0, 2, 656, 2322]
+[:mouse_move, 268, 334, 2, 657, 2322]
+[:mouse_move, 270, 331, 2, 658, 2323]
+[:mouse_move, 271, 329, 2, 659, 2324]
+[:key_down_raw, 100, 0, 2, 660, 2324]
+[:mouse_move, 272, 326, 2, 661, 2324]
+[:mouse_move, 272, 323, 2, 662, 2325]
+[:mouse_move, 272, 319, 2, 663, 2326]
+[:key_down_raw, 100, 0, 2, 664, 2326]
+[:mouse_move, 271, 317, 2, 665, 2326]
+[:mouse_move, 266, 312, 2, 666, 2327]
+[:mouse_move, 262, 310, 2, 667, 2328]
+[:key_down_raw, 100, 0, 2, 668, 2328]
+[:mouse_move, 256, 308, 2, 669, 2328]
+[:mouse_move, 249, 306, 2, 670, 2329]
+[:mouse_move, 243, 305, 2, 671, 2330]
+[:key_down_raw, 100, 0, 2, 672, 2330]
+[:mouse_move, 236, 304, 2, 673, 2330]
+[:mouse_move, 231, 304, 2, 674, 2331]
+[:mouse_move, 226, 306, 2, 675, 2332]
+[:key_down_raw, 100, 0, 2, 676, 2332]
+[:mouse_move, 219, 309, 2, 677, 2332]
+[:mouse_move, 211, 315, 2, 678, 2333]
+[:mouse_move, 206, 323, 2, 679, 2334]
+[:key_down_raw, 100, 0, 2, 680, 2334]
+[:mouse_move, 200, 332, 2, 681, 2334]
+[:mouse_move, 197, 340, 2, 682, 2335]
+[:mouse_move, 195, 344, 2, 683, 2336]
+[:key_down_raw, 100, 0, 2, 684, 2336]
+[:mouse_move, 190, 353, 2, 685, 2336]
+[:mouse_move, 190, 358, 2, 686, 2337]
+[:mouse_move, 188, 363, 2, 687, 2338]
+[:key_down_raw, 100, 0, 2, 688, 2338]
+[:mouse_move, 187, 376, 2, 689, 2339]
+[:mouse_move, 187, 379, 2, 690, 2340]
+[:key_down_raw, 100, 0, 2, 691, 2340]
+[:mouse_move, 195, 388, 2, 692, 2341]
+[:mouse_move, 201, 391, 2, 693, 2342]
+[:key_down_raw, 100, 0, 2, 694, 2342]
+[:mouse_move, 212, 395, 2, 695, 2343]
+[:mouse_move, 218, 395, 2, 696, 2344]
+[:key_down_raw, 100, 0, 2, 697, 2344]
+[:mouse_move, 229, 395, 2, 698, 2345]
+[:mouse_move, 234, 393, 2, 699, 2346]
+[:key_down_raw, 100, 0, 2, 700, 2346]
+[:mouse_move, 241, 385, 2, 701, 2347]
+[:key_down_raw, 100, 0, 2, 702, 2348]
+[:mouse_move, 245, 380, 2, 703, 2348]
+[:mouse_move, 247, 374, 2, 704, 2349]
+[:mouse_move, 251, 366, 2, 705, 2350]
+[:key_down_raw, 100, 0, 2, 706, 2350]
+[:mouse_move, 252, 363, 2, 707, 2351]
+[:mouse_move, 254, 359, 2, 708, 2352]
+[:key_down_raw, 100, 0, 2, 709, 2352]
+[:mouse_move, 254, 357, 2, 710, 2353]
+[:mouse_move, 255, 356, 2, 711, 2354]
+[:key_down_raw, 100, 0, 2, 712, 2354]
+[:mouse_move, 256, 357, 2, 713, 2356]
+[:key_down_raw, 100, 0, 2, 714, 2356]
+[:mouse_move, 257, 360, 2, 715, 2357]
+[:mouse_move, 259, 373, 2, 716, 2358]
+[:key_down_raw, 100, 0, 2, 717, 2358]
+[:mouse_move, 260, 382, 2, 718, 2359]
+[:mouse_move, 263, 395, 2, 719, 2360]
+[:key_down_raw, 100, 0, 2, 720, 2360]
+[:mouse_move, 263, 402, 2, 721, 2361]
+[:mouse_move, 264, 414, 2, 722, 2362]
+[:key_down_raw, 100, 0, 2, 723, 2362]
+[:mouse_move, 265, 420, 2, 724, 2363]
+[:mouse_move, 266, 428, 2, 725, 2364]
+[:key_down_raw, 100, 0, 2, 726, 2364]
+[:mouse_move, 267, 431, 2, 727, 2365]
+[:mouse_move, 270, 434, 2, 728, 2366]
+[:key_down_raw, 100, 0, 2, 729, 2366]
+[:mouse_move, 273, 437, 2, 730, 2367]
+[:mouse_move, 279, 437, 2, 731, 2368]
+[:key_down_raw, 100, 0, 2, 732, 2368]
+[:mouse_move, 281, 437, 2, 733, 2369]
+[:mouse_move, 290, 436, 2, 734, 2370]
+[:key_down_raw, 100, 0, 2, 735, 2370]
+[:mouse_move, 294, 434, 2, 736, 2371]
+[:mouse_move, 301, 431, 2, 737, 2372]
+[:key_down_raw, 100, 0, 2, 738, 2372]
+[:mouse_move, 304, 431, 2, 739, 2373]
+[:mouse_move, 312, 428, 2, 740, 2374]
+[:key_down_raw, 100, 0, 2, 741, 2374]
+[:mouse_move, 318, 427, 2, 742, 2375]
+[:mouse_move, 325, 425, 2, 743, 2376]
+[:key_down_raw, 100, 0, 2, 744, 2376]
+[:mouse_move, 327, 424, 2, 745, 2377]
+[:mouse_move, 330, 423, 2, 746, 2378]
+[:key_down_raw, 100, 0, 2, 747, 2378]
+[:mouse_move, 333, 422, 2, 748, 2378]
+[:mouse_move, 335, 422, 2, 749, 2379]
+[:mouse_move, 338, 420, 2, 750, 2380]
+[:key_down_raw, 100, 0, 2, 751, 2380]
+[:mouse_move, 340, 420, 2, 752, 2380]
+[:mouse_move, 344, 419, 2, 753, 2381]
+[:mouse_move, 347, 419, 2, 754, 2382]
+[:key_down_raw, 100, 0, 2, 755, 2382]
+[:mouse_move, 351, 419, 2, 756, 2382]
+[:mouse_move, 353, 419, 2, 757, 2383]
+[:mouse_move, 358, 419, 2, 758, 2384]
+[:key_down_raw, 100, 0, 2, 759, 2384]
+[:mouse_move, 360, 419, 2, 760, 2384]
+[:mouse_move, 365, 419, 2, 761, 2385]
+[:mouse_move, 367, 419, 2, 762, 2386]
+[:key_down_raw, 100, 0, 2, 763, 2386]
+[:mouse_move, 373, 420, 2, 764, 2386]
+[:mouse_move, 378, 420, 2, 765, 2387]
+[:mouse_move, 382, 420, 2, 766, 2388]
+[:key_down_raw, 100, 0, 2, 767, 2388]
+[:mouse_move, 389, 419, 2, 768, 2389]
+[:mouse_move, 394, 417, 2, 769, 2390]
+[:key_down_raw, 100, 0, 2, 770, 2390]
+[:mouse_move, 401, 411, 2, 771, 2391]
+[:mouse_move, 404, 407, 2, 772, 2392]
+[:key_down_raw, 100, 0, 2, 773, 2392]
+[:mouse_move, 411, 398, 2, 774, 2393]
+[:mouse_move, 412, 394, 2, 775, 2394]
+[:key_down_raw, 100, 0, 2, 776, 2394]
+[:mouse_move, 415, 387, 2, 777, 2395]
+[:mouse_move, 416, 383, 2, 778, 2396]
+[:key_down_raw, 100, 0, 2, 779, 2396]
+[:mouse_move, 418, 375, 2, 780, 2397]
+[:mouse_move, 418, 370, 2, 781, 2398]
+[:key_down_raw, 100, 0, 2, 782, 2398]
+[:mouse_move, 419, 359, 2, 783, 2399]
+[:mouse_move, 419, 354, 2, 784, 2400]
+[:key_down_raw, 100, 0, 2, 785, 2400]
+[:mouse_move, 419, 348, 2, 786, 2401]
+[:mouse_move, 419, 344, 2, 787, 2402]
+[:key_down_raw, 100, 0, 2, 788, 2402]
+[:mouse_move, 419, 341, 2, 789, 2403]
+[:mouse_move, 419, 338, 2, 790, 2404]
+[:key_down_raw, 100, 0, 2, 791, 2404]
+[:mouse_move, 419, 337, 2, 792, 2405]
+[:mouse_move, 417, 336, 2, 793, 2406]
+[:key_down_raw, 100, 0, 2, 794, 2406]
+[:mouse_move, 415, 336, 2, 795, 2408]
+[:key_down_raw, 100, 0, 2, 796, 2408]
+[:mouse_move, 414, 336, 2, 797, 2409]
+[:key_down_raw, 100, 0, 2, 798, 2410]
+[:key_down_raw, 100, 0, 2, 799, 2412]
+[:mouse_move, 414, 334, 2, 800, 2414]
+[:key_down_raw, 100, 0, 2, 801, 2414]
+[:mouse_move, 416, 334, 2, 802, 2416]
+[:key_down_raw, 100, 0, 2, 803, 2416]
+[:mouse_move, 418, 339, 2, 804, 2418]
+[:key_down_raw, 100, 0, 2, 805, 2418]
+[:mouse_move, 419, 347, 2, 806, 2419]
+[:mouse_move, 420, 366, 2, 807, 2420]
+[:key_down_raw, 100, 0, 2, 808, 2420]
+[:mouse_move, 420, 383, 2, 809, 2421]
+[:mouse_move, 412, 412, 2, 810, 2422]
+[:key_down_raw, 100, 0, 2, 811, 2422]
+[:mouse_move, 409, 420, 2, 812, 2423]
+[:mouse_move, 402, 433, 2, 813, 2424]
+[:key_down_raw, 100, 0, 2, 814, 2424]
+[:mouse_move, 399, 439, 2, 815, 2425]
+[:mouse_move, 395, 446, 2, 816, 2426]
+[:key_down_raw, 100, 0, 2, 817, 2426]
+[:mouse_move, 393, 448, 2, 818, 2427]
+[:mouse_move, 390, 451, 2, 819, 2428]
+[:key_down_raw, 100, 0, 2, 820, 2428]
+[:mouse_move, 389, 452, 2, 821, 2429]
+[:mouse_move, 387, 453, 2, 822, 2430]
+[:key_down_raw, 100, 0, 2, 823, 2430]
+[:mouse_move, 385, 453, 2, 824, 2431]
+[:mouse_move, 383, 453, 2, 825, 2432]
+[:key_down_raw, 100, 0, 2, 826, 2432]
+[:mouse_move, 381, 453, 2, 827, 2432]
+[:mouse_move, 379, 452, 2, 828, 2433]
+[:mouse_move, 377, 451, 2, 829, 2434]
+[:key_down_raw, 100, 0, 2, 830, 2434]
+[:mouse_move, 376, 449, 2, 831, 2434]
+[:mouse_move, 374, 445, 2, 832, 2435]
+[:mouse_move, 373, 442, 2, 833, 2436]
+[:key_down_raw, 100, 0, 2, 834, 2436]
+[:mouse_move, 371, 437, 2, 835, 2436]
+[:mouse_move, 370, 435, 2, 836, 2437]
+[:mouse_move, 370, 432, 2, 837, 2438]
+[:key_down_raw, 100, 0, 2, 838, 2438]
+[:mouse_move, 370, 428, 2, 839, 2438]
+[:mouse_move, 370, 424, 2, 840, 2439]
+[:mouse_move, 370, 419, 2, 841, 2440]
+[:key_down_raw, 100, 0, 2, 842, 2440]
+[:mouse_move, 370, 417, 2, 843, 2440]
+[:mouse_move, 371, 414, 2, 844, 2441]
+[:mouse_move, 373, 411, 2, 845, 2442]
+[:key_down_raw, 100, 0, 2, 846, 2442]
+[:mouse_move, 376, 409, 2, 847, 2442]
+[:mouse_move, 378, 407, 2, 848, 2443]
+[:mouse_move, 380, 406, 2, 849, 2444]
+[:key_down_raw, 100, 0, 2, 850, 2444]
+[:mouse_move, 383, 405, 2, 851, 2444]
+[:mouse_move, 385, 405, 2, 852, 2445]
+[:mouse_move, 386, 404, 2, 853, 2446]
+[:key_down_raw, 100, 0, 2, 854, 2446]
+[:mouse_move, 388, 403, 2, 855, 2447]
+[:mouse_move, 389, 403, 2, 856, 2448]
+[:key_down_raw, 100, 0, 2, 857, 2448]
+[:key_down_raw, 100, 0, 2, 858, 2450]
+[:key_down_raw, 100, 0, 2, 859, 2452]
+[:key_down_raw, 100, 0, 2, 860, 2454]
+[:key_down_raw, 100, 0, 2, 861, 2456]
+[:mouse_move, 389, 404, 2, 862, 2458]
+[:key_down_raw, 100, 0, 2, 863, 2458]
+[:key_down_raw, 100, 0, 2, 864, 2460]
+[:key_down_raw, 100, 0, 2, 865, 2462]
+[:key_down_raw, 100, 0, 2, 866, 2464]
+[:key_down_raw, 100, 0, 2, 867, 2466]
+[:key_up_raw, 100, 0, 2, 868, 2468]
+[:mouse_button_up, 1, 0, 1, 869, 2473]
+[:mouse_move, 276, 362, 2, 870, 2473]
+[:mouse_move, 239, 339, 2, 871, 2474]
+[:mouse_move, 210, 314, 2, 872, 2475]
+[:mouse_move, 186, 291, 2, 873, 2476]
+[:mouse_move, 167, 265, 2, 874, 2477]
+[:mouse_move, 159, 253, 2, 875, 2478]
+[:mouse_move, 154, 245, 2, 876, 2479]
+[:mouse_move, 150, 236, 2, 877, 2480]
+[:mouse_move, 149, 234, 2, 878, 2481]
+[:mouse_move, 149, 232, 2, 879, 2482]
+[:mouse_move, 152, 232, 2, 880, 2484]
+[:mouse_move, 154, 233, 2, 881, 2485]
+[:mouse_move, 157, 236, 2, 882, 2486]
+[:mouse_move, 159, 238, 2, 883, 2487]
+[:mouse_move, 163, 242, 2, 884, 2488]
+[:mouse_move, 165, 245, 2, 885, 2489]
+[:mouse_move, 170, 253, 2, 886, 2490]
+[:mouse_move, 173, 257, 2, 887, 2491]
+[:mouse_move, 180, 270, 2, 888, 2492]
+[:mouse_move, 183, 275, 2, 889, 2493]
+[:mouse_move, 190, 287, 2, 890, 2494]
+[:mouse_move, 192, 290, 2, 891, 2495]
+[:mouse_move, 199, 303, 2, 892, 2496]
+[:mouse_move, 203, 307, 2, 893, 2497]
+[:mouse_move, 206, 313, 2, 894, 2498]
+[:mouse_move, 207, 317, 2, 895, 2499]
+[:mouse_move, 209, 321, 2, 896, 2500]
+[:mouse_move, 210, 322, 2, 897, 2501]
+[:mouse_move, 211, 324, 2, 898, 2502]
+[:mouse_move, 212, 325, 2, 899, 2504]
+[:mouse_move, 213, 326, 2, 900, 2505]
+[:mouse_move, 214, 326, 2, 901, 2510]
+[:key_down_raw, 96, 0, 2, 902, 2711]
+[:key_up_raw, 96, 0, 2, 903, 2716]
+[:key_down_raw, 13, 0, 2, 904, 2856]
diff --git a/samples/99_sample_sprite_animation_creator/sprites/square-blue.png b/samples/99_sample_sprite_animation_creator/sprites/square-blue.png
new file mode 100644
index 0000000..b840849
--- /dev/null
+++ b/samples/99_sample_sprite_animation_creator/sprites/square-blue.png
Binary files differ
diff --git a/samples/99_sample_sprite_animation_creator/sprites/square-white.png b/samples/99_sample_sprite_animation_creator/sprites/square-white.png
new file mode 100644
index 0000000..378c565
--- /dev/null
+++ b/samples/99_sample_sprite_animation_creator/sprites/square-white.png
Binary files differ