# Generated by stepmaker version 20081113 (instance: 798811497164)
# Generated on Thu Dec  4 13:20:05 2008
# uname -a: Linux pink-amd.qa.lab.tlv.redhat.com 2.6.21-1.3194.fc7 #1 SMP Wed May 23 22:47:07 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
# QEMU command line: ../qemu-kvm -cdrom /isos/windows/WindowsVista-32-bit.iso -m 512 -hda /vm/vista-32.qcow2 -nographic -monitor unix:/tmp/monitor_798811497164,server,nowait &
# --------------------------------
step 28.26
screendump 20080101_000001_6d9b50f2a5e757e76ec17a6db86c73ac.ppm
# Vista Welcome
barrier_2 219 83 483 434 0e89a95f9a7dff151adfe1ca3b20547c 141
# Sending keys: alt-n
key alt-n
# --------------------------------
step 30.20
screendump 20080101_000002_87d6635f8073cf0ef6b663ada7f9c4e3.ppm
# Vista Welcome 2
barrier_2 58 51 433 275 380a6a5205128aaac56124a14c69198d 10
# Sending keys: alt-i
key alt-i
# --------------------------------
step 36.55
screendump 20080101_000003_6376913bbcaf19177faca7d4d8ae9cac.ppm
# CD-Key (skip)
barrier_2 371 35 118 386 441943164cabcd5f147b6f0ba0667830 32
# Sending keys: alt-n
key alt-n
# --------------------------------
step 38.71
screendump 20080101_000004_c0f9f3021eb21da9fd40e7a77442f622.ppm
# CD-Key (skip) 2
barrier_2 274 19 201 240 b91e94409e31142db7d9e1c9f3628b67 11
# Sending keys: alt-o
key alt-o
# --------------------------------
step 45.03
screendump 20080101_000005_c1fd9369224629d1427f4560901f5902.ppm
# Vista Edition (Ultimate)
barrier_2 312 25 118 82 81cd512aef7721e84f7af433dce7ebc4 32
# Sending keys: tab down down down alt-i
key tab
key down
key down
key down
key alt-i
# --------------------------------
step 47.79
screendump 20080101_000006_09c51bfdd7dfb493ffb9f88fce6c5456.ppm
# Vista Edition (Ultimate)
barrier_2 331 33 115 417 b5e64bd6d974ef91d3a2ad6e863a66f9 14
# Sending keys: alt-n
key alt-n
# --------------------------------
step 49.79
screendump 20080101_000007_efb32b224f027e906242bf254ee72fff.ppm
# License
barrier_2 178 28 114 413 25bc8594e67ec5742b70e93bdb6b1227 10
# Sending keys: alt-a
key alt-a
# --------------------------------
step 50.98
screendump 20080101_000008_814ce1b00f806eb1fc4f3ec621e3ac76.ppm
# License 2
barrier_2 181 26 118 414 526e2f00448e71a178dfe72be87347df 6
# Sending keys: alt-n
key alt-n
# --------------------------------
step 52.56
screendump 20080101_000009_b55426ff74844260ea394443db573c0c.ppm
# Install (custom)
barrier_2 127 21 195 217 b598e0ea5c4d6852ef33ef6d0eab736b 8
# Sending keys: alt-c
key alt-c
# --------------------------------
step 60.43
screendump 20080101_000010_7d0871c17cd0a32a608b48c95f1bf594.ppm
# HDD Partitioning
barrier_2 202 141 499 348 aef7f6a17ed0fe6405d4944ed3bd66a7 39
# Sending keys: alt-n
key alt-n
# --------------------------------
step 1583.77
screendump 20080101_000011_6f46e28968b973c742a65482adfd36a3.ppm
# User name & Password
barrier_2 105 17 295 217 facd43b7a1eb7a52eba2facceca7d606 3600
# Sending keys: u s e r
key u
key s
key e
key r
# --------------------------------
step 1587.31
screendump 20080101_000012_e8595613efbdcf83d9188df59a0ae829.ppm
sleep 2
# Sending keys: alt-n
key alt-n
# --------------------------------
step 1590.56
screendump 20080101_000013_1e50852a8b25aa3d99bfa83fa11ec5d0.ppm
# PC name
barrier_2 44 15 281 219 8a1a328647db4ba125a0d721215a288c 16
# Sending keys: alt-n
key alt-n
# --------------------------------
step 1593.76
screendump 20080101_000014_cb10a011112859cb48e4ecc73df04a28.ppm
# Help Protect (skip)
barrier_2 265 20 139 129 1b4fdf10f974c2eee846bf2a8720708b 16
# Sending keys: alt-a
key alt-a
# --------------------------------
step 1596.53
screendump 20080101_000015_5f1691730fed2c87e2a38e1e9deffd21.ppm
# Time & Date Settings
barrier_2 259 24 136 130 d487984ebced8d89acb1fca00d120317 14
# Sending keys: alt-n
key alt-n
# --------------------------------
step 1598.21
screendump 20080101_000016_2d9f6e57a164380b6e785757faa19e88.ppm
# PC location (work)
barrier_2 283 26 134 127 6e154179b301da750e9e04f16bc142e2 8
# Sending keys: alt-w
key alt-w
# --------------------------------
step 1600.06
screendump 20080101_000017_5fbeb6208083f61f68b58d4f08697438.ppm
# Vista Finish
barrier_2 54 28 429 310 3124584cb74564a89d1665e8311df506 9
# Sending keys: alt-s
key alt-s
# --------------------------------
step 2044.77
screendump 20080101_000018_e233a19f836119df1d46b91b86f423c7.ppm
# Vista Start Menu
barrier_2 12 42 45 555 0ea80974a1a51105ead39934c36c2d08 1800
# Sending keys: 0xdc
key 0xdc
# --------------------------------
step 2052.83
screendump 20080101_000019_9a4156468d8fbca4814531127893194a.ppm
# Vista Start Menu Opened
# Sending keys: tab tab right right
key tab
key tab
key right
key right
# --------------------------------
step 2056.01
screendump 20080101_000020_ea049d5321da816f4e91bedb87b4e07d.ppm
# Vista Shutdown
barrier_2 17 30 387 449 481840dc7db32dd6337e5d94b0be22c6 16
# Sending keys: u
key u
