Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 1 | [ |
| 2 | { |
| 3 | "cmd": [ |
| 4 | "python", |
| 5 | "-u", |
| 6 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 7 | "--json-output", |
| 8 | "/path/to/tmp/json", |
| 9 | "ensure-directory", |
| 10 | "--mode", |
| 11 | "0777", |
| 12 | "[START_DIR]/tmp" |
| 13 | ], |
| 14 | "infra_step": true, |
| 15 | "name": "makedirs tmp_dir" |
| 16 | }, |
| 17 | { |
| 18 | "cmd": [ |
| 19 | "python", |
| 20 | "-u", |
| 21 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 22 | "--json-output", |
| 23 | "/path/to/tmp/json", |
| 24 | "copy", |
| 25 | "[START_DIR]/skia/infra/bots/assets/skp/VERSION", |
| 26 | "/path/to/tmp/" |
| 27 | ], |
| 28 | "infra_step": true, |
| 29 | "name": "Get skp VERSION" |
| 30 | }, |
| 31 | { |
| 32 | "cmd": [ |
| 33 | "python", |
| 34 | "-u", |
| 35 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 36 | "--json-output", |
| 37 | "/path/to/tmp/json", |
| 38 | "copy", |
| 39 | "42", |
| 40 | "[START_DIR]/tmp/SKP_VERSION" |
| 41 | ], |
| 42 | "infra_step": true, |
| 43 | "name": "write SKP_VERSION" |
| 44 | }, |
| 45 | { |
| 46 | "cmd": [ |
| 47 | "python", |
| 48 | "-u", |
| 49 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 50 | "--json-output", |
| 51 | "/path/to/tmp/json", |
| 52 | "copy", |
| 53 | "[START_DIR]/skia/infra/bots/assets/skimage/VERSION", |
| 54 | "/path/to/tmp/" |
| 55 | ], |
| 56 | "infra_step": true, |
| 57 | "name": "Get skimage VERSION" |
| 58 | }, |
| 59 | { |
| 60 | "cmd": [ |
| 61 | "python", |
| 62 | "-u", |
| 63 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 64 | "--json-output", |
| 65 | "/path/to/tmp/json", |
| 66 | "copy", |
| 67 | "42", |
| 68 | "[START_DIR]/tmp/SK_IMAGE_VERSION" |
| 69 | ], |
| 70 | "infra_step": true, |
| 71 | "name": "write SK_IMAGE_VERSION" |
| 72 | }, |
| 73 | { |
| 74 | "cmd": [ |
| 75 | "python", |
| 76 | "-u", |
| 77 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 78 | "--json-output", |
| 79 | "/path/to/tmp/json", |
| 80 | "copy", |
| 81 | "[START_DIR]/skia/infra/bots/assets/svg/VERSION", |
| 82 | "/path/to/tmp/" |
| 83 | ], |
| 84 | "infra_step": true, |
| 85 | "name": "Get svg VERSION" |
| 86 | }, |
| 87 | { |
| 88 | "cmd": [ |
| 89 | "python", |
| 90 | "-u", |
| 91 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 92 | "--json-output", |
| 93 | "/path/to/tmp/json", |
| 94 | "copy", |
| 95 | "42", |
| 96 | "[START_DIR]/tmp/SVG_VERSION" |
| 97 | ], |
| 98 | "infra_step": true, |
| 99 | "name": "write SVG_VERSION" |
| 100 | }, |
| 101 | { |
| 102 | "cmd": [ |
| 103 | "python", |
| 104 | "-u", |
| 105 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 106 | "--json-output", |
| 107 | "/path/to/tmp/json", |
| 108 | "rmtree", |
| 109 | "[START_DIR]/test" |
| 110 | ], |
| 111 | "infra_step": true, |
| 112 | "name": "rmtree test" |
| 113 | }, |
| 114 | { |
| 115 | "cmd": [ |
| 116 | "python", |
| 117 | "-u", |
| 118 | "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py", |
| 119 | "--json-output", |
| 120 | "/path/to/tmp/json", |
| 121 | "ensure-directory", |
| 122 | "--mode", |
| 123 | "0777", |
| 124 | "[START_DIR]/test" |
| 125 | ], |
| 126 | "infra_step": true, |
| 127 | "name": "makedirs test" |
| 128 | }, |
| 129 | { |
| 130 | "cmd": [ |
| 131 | "python", |
| 132 | "-u", |
Stephan Altmüller | 64cc576 | 2018-08-02 08:51:38 +0200 | [diff] [blame] | 133 | "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = sys.argv[1]\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n try:\n with contextlib.closing(\n urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n hashes = w.read()\n with open(sys.argv[2], 'w') as f:\n f.write(hashes)\n break\n except Exception as e:\n print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n print e\n if retry == RETRIES:\n raise\n waittime = WAIT_BASE * math.pow(2, retry)\n print 'Retry in %d seconds.' % waittime\n time.sleep(waittime)\n", |
| 134 | "https://example.com/hashes.txt", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 135 | "[START_DIR]/tmp/uninteresting_hashes.txt" |
| 136 | ], |
| 137 | "env": { |
| 138 | "CHROME_HEADLESS": "1", |
Robert Iannucci | f4d4b87 | 2019-02-16 14:10:41 -0800 | [diff] [blame] | 139 | "PATH": "<PATH>:RECIPE_REPO[depot_tools]" |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 140 | }, |
| 141 | "infra_step": true, |
| 142 | "name": "get uninteresting hashes", |
| 143 | "~followup_annotations": [ |
| 144 | "@@@STEP_LOG_LINE@python.inline@@@@", |
| 145 | "@@@STEP_LOG_LINE@python.inline@import contextlib@@@", |
| 146 | "@@@STEP_LOG_LINE@python.inline@import math@@@", |
| 147 | "@@@STEP_LOG_LINE@python.inline@import socket@@@", |
| 148 | "@@@STEP_LOG_LINE@python.inline@import sys@@@", |
| 149 | "@@@STEP_LOG_LINE@python.inline@import time@@@", |
| 150 | "@@@STEP_LOG_LINE@python.inline@import urllib2@@@", |
| 151 | "@@@STEP_LOG_LINE@python.inline@@@@", |
Stephan Altmüller | 64cc576 | 2018-08-02 08:51:38 +0200 | [diff] [blame] | 152 | "@@@STEP_LOG_LINE@python.inline@HASHES_URL = sys.argv[1]@@@", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 153 | "@@@STEP_LOG_LINE@python.inline@RETRIES = 5@@@", |
| 154 | "@@@STEP_LOG_LINE@python.inline@TIMEOUT = 60@@@", |
| 155 | "@@@STEP_LOG_LINE@python.inline@WAIT_BASE = 15@@@", |
| 156 | "@@@STEP_LOG_LINE@python.inline@@@@", |
| 157 | "@@@STEP_LOG_LINE@python.inline@socket.setdefaulttimeout(TIMEOUT)@@@", |
| 158 | "@@@STEP_LOG_LINE@python.inline@for retry in range(RETRIES):@@@", |
| 159 | "@@@STEP_LOG_LINE@python.inline@ try:@@@", |
| 160 | "@@@STEP_LOG_LINE@python.inline@ with contextlib.closing(@@@", |
| 161 | "@@@STEP_LOG_LINE@python.inline@ urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@", |
| 162 | "@@@STEP_LOG_LINE@python.inline@ hashes = w.read()@@@", |
Stephan Altmüller | 64cc576 | 2018-08-02 08:51:38 +0200 | [diff] [blame] | 163 | "@@@STEP_LOG_LINE@python.inline@ with open(sys.argv[2], 'w') as f:@@@", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 164 | "@@@STEP_LOG_LINE@python.inline@ f.write(hashes)@@@", |
| 165 | "@@@STEP_LOG_LINE@python.inline@ break@@@", |
| 166 | "@@@STEP_LOG_LINE@python.inline@ except Exception as e:@@@", |
| 167 | "@@@STEP_LOG_LINE@python.inline@ print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@", |
| 168 | "@@@STEP_LOG_LINE@python.inline@ print e@@@", |
| 169 | "@@@STEP_LOG_LINE@python.inline@ if retry == RETRIES:@@@", |
| 170 | "@@@STEP_LOG_LINE@python.inline@ raise@@@", |
| 171 | "@@@STEP_LOG_LINE@python.inline@ waittime = WAIT_BASE * math.pow(2, retry)@@@", |
| 172 | "@@@STEP_LOG_LINE@python.inline@ print 'Retry in %d seconds.' % waittime@@@", |
| 173 | "@@@STEP_LOG_LINE@python.inline@ time.sleep(waittime)@@@", |
| 174 | "@@@STEP_LOG_END@python.inline@@@" |
| 175 | ] |
| 176 | }, |
| 177 | { |
| 178 | "cmd": [ |
| 179 | "python", |
| 180 | "-u", |
| 181 | "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n" |
| 182 | ], |
| 183 | "name": "get swarming bot id", |
| 184 | "stdout": "/path/to/tmp/", |
| 185 | "~followup_annotations": [ |
| 186 | "@@@STEP_LOG_LINE@python.inline@import os@@@", |
| 187 | "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@", |
| 188 | "@@@STEP_LOG_END@python.inline@@@" |
| 189 | ] |
| 190 | }, |
| 191 | { |
| 192 | "cmd": [ |
| 193 | "python", |
| 194 | "-u", |
| 195 | "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n" |
| 196 | ], |
| 197 | "name": "get swarming task id", |
| 198 | "stdout": "/path/to/tmp/", |
| 199 | "~followup_annotations": [ |
| 200 | "@@@STEP_LOG_LINE@python.inline@import os@@@", |
| 201 | "@@@STEP_LOG_LINE@python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@", |
| 202 | "@@@STEP_LOG_END@python.inline@@@" |
| 203 | ] |
| 204 | }, |
| 205 | { |
| 206 | "cmd": [ |
Eric Boren | 322a859 | 2018-06-01 10:08:53 -0400 | [diff] [blame] | 207 | "[START_DIR]/build/dm", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 208 | "--resourcePath", |
| 209 | "[START_DIR]/skia/resources", |
| 210 | "--skps", |
| 211 | "[START_DIR]/skp", |
| 212 | "--images", |
| 213 | "[START_DIR]/skimage/dm", |
| 214 | "--colorImages", |
| 215 | "[START_DIR]/skimage/colorspace", |
| 216 | "--nameByHash", |
| 217 | "--properties", |
| 218 | "gitHash", |
| 219 | "abc123", |
| 220 | "builder", |
Ben Wagner | b1f5d61 | 2019-02-21 19:24:09 -0500 | [diff] [blame] | 221 | "Test-Mac10.13-Clang-MacBookPro11.5-GPU-RadeonHD8870M-x86_64-Release-All-MoltenVK_Vulkan", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 222 | "buildbucket_build_id", |
| 223 | "123454321", |
Eric Boren | 113cba8 | 2019-02-26 13:52:43 -0500 | [diff] [blame] | 224 | "task_id", |
| 225 | "task_12345", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 226 | "swarming_bot_id", |
| 227 | "skia-bot-123", |
| 228 | "swarming_task_id", |
| 229 | "123456", |
| 230 | "--svgs", |
| 231 | "[START_DIR]/svg", |
| 232 | "--key", |
| 233 | "arch", |
| 234 | "x86_64", |
| 235 | "compiler", |
| 236 | "Clang", |
| 237 | "configuration", |
| 238 | "Release", |
| 239 | "cpu_or_gpu", |
| 240 | "GPU", |
| 241 | "cpu_or_gpu_value", |
| 242 | "RadeonHD8870M", |
| 243 | "extra_config", |
| 244 | "MoltenVK_Vulkan", |
| 245 | "model", |
| 246 | "MacBookPro11.5", |
| 247 | "os", |
Ben Wagner | b1f5d61 | 2019-02-21 19:24:09 -0500 | [diff] [blame] | 248 | "Mac10.13", |
Ben Wagner | 58a2e3d | 2019-02-08 13:01:40 -0500 | [diff] [blame] | 249 | "style", |
| 250 | "default", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 251 | "--uninterestingHashesFile", |
| 252 | "[START_DIR]/tmp/uninteresting_hashes.txt", |
| 253 | "--writePath", |
Eric Boren | cd0a98c | 2018-06-20 13:23:16 -0400 | [diff] [blame] | 254 | "[START_DIR]/[SWARM_OUT_DIR]", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 255 | "--dont_write", |
| 256 | "pdf", |
| 257 | "--randomProcessorTest", |
| 258 | "--nocpu", |
| 259 | "--config", |
Chris Dalton | aec79e6 | 2018-05-29 12:02:19 -0600 | [diff] [blame] | 260 | "vk", |
Greg Daniel | d521ce3 | 2019-04-26 09:47:14 -0400 | [diff] [blame] | 261 | "vkmsaa8", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 262 | "--src", |
| 263 | "tests", |
| 264 | "gm", |
| 265 | "image", |
| 266 | "colorImage", |
| 267 | "svg", |
| 268 | "--blacklist", |
| 269 | "_", |
Robert Phillips | 520f85b | 2019-05-01 14:57:35 -0400 | [diff] [blame^] | 270 | "tests", |
| 271 | "_", |
| 272 | "VkDrawableImportTest", |
| 273 | "_", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 274 | "svg", |
| 275 | "_", |
| 276 | "svgparse_", |
| 277 | "_", |
| 278 | "image", |
| 279 | "gen_platf", |
| 280 | "rgba32abf.bmp", |
| 281 | "_", |
| 282 | "image", |
| 283 | "gen_platf", |
| 284 | "rgb24prof.bmp", |
| 285 | "_", |
| 286 | "image", |
| 287 | "gen_platf", |
| 288 | "rgb24lprof.bmp", |
| 289 | "_", |
| 290 | "image", |
| 291 | "gen_platf", |
| 292 | "8bpp-pixeldata-cropped.bmp", |
| 293 | "_", |
| 294 | "image", |
| 295 | "gen_platf", |
| 296 | "4bpp-pixeldata-cropped.bmp", |
| 297 | "_", |
| 298 | "image", |
| 299 | "gen_platf", |
| 300 | "32bpp-pixeldata-cropped.bmp", |
| 301 | "_", |
| 302 | "image", |
| 303 | "gen_platf", |
| 304 | "24bpp-pixeldata-cropped.bmp", |
| 305 | "_", |
| 306 | "image", |
| 307 | "gen_platf", |
| 308 | "frame_larger_than_image.gif", |
| 309 | "_", |
| 310 | "image", |
| 311 | "gen_platf", |
| 312 | "inc0.png", |
| 313 | "_", |
| 314 | "image", |
| 315 | "gen_platf", |
| 316 | "inc1.png", |
| 317 | "_", |
| 318 | "image", |
| 319 | "gen_platf", |
| 320 | "inc2.png", |
| 321 | "_", |
| 322 | "image", |
| 323 | "gen_platf", |
| 324 | "inc3.png", |
| 325 | "_", |
| 326 | "image", |
| 327 | "gen_platf", |
| 328 | "inc4.png", |
| 329 | "_", |
| 330 | "image", |
| 331 | "gen_platf", |
| 332 | "inc5.png", |
| 333 | "_", |
| 334 | "image", |
| 335 | "gen_platf", |
| 336 | "inc6.png", |
| 337 | "_", |
| 338 | "image", |
| 339 | "gen_platf", |
| 340 | "inc7.png", |
| 341 | "_", |
| 342 | "image", |
| 343 | "gen_platf", |
| 344 | "inc8.png", |
| 345 | "_", |
| 346 | "image", |
| 347 | "gen_platf", |
| 348 | "inc9.png", |
| 349 | "_", |
| 350 | "image", |
| 351 | "gen_platf", |
| 352 | "inc10.png", |
| 353 | "_", |
| 354 | "image", |
| 355 | "gen_platf", |
| 356 | "inc11.png", |
| 357 | "_", |
| 358 | "image", |
| 359 | "gen_platf", |
| 360 | "inc12.png", |
| 361 | "_", |
| 362 | "image", |
| 363 | "gen_platf", |
| 364 | "inc13.png", |
| 365 | "_", |
| 366 | "image", |
| 367 | "gen_platf", |
| 368 | "inc14.png", |
| 369 | "_", |
| 370 | "image", |
| 371 | "gen_platf", |
Leon Scroggins III | a66ac00 | 2018-10-26 09:45:11 -0400 | [diff] [blame] | 372 | "incInterlaced.png", |
| 373 | "_", |
| 374 | "image", |
| 375 | "gen_platf", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 376 | "incInterlaced.gif", |
| 377 | "_", |
| 378 | "image", |
| 379 | "gen_platf", |
| 380 | "inc1.gif", |
| 381 | "_", |
| 382 | "image", |
| 383 | "gen_platf", |
| 384 | "inc0.gif", |
| 385 | "_", |
| 386 | "image", |
| 387 | "gen_platf", |
| 388 | "butterfly.gif", |
| 389 | "_", |
| 390 | "image", |
| 391 | "gen_platf", |
| 392 | "testimgari.jpg", |
| 393 | "_", |
| 394 | "image", |
| 395 | "gen_platf", |
| 396 | "rle8-height-negative.bmp", |
| 397 | "_", |
| 398 | "image", |
| 399 | "gen_platf", |
| 400 | "rle4-height-negative.bmp", |
| 401 | "_", |
| 402 | "image", |
Leon Scroggins III | 3abcd82 | 2018-10-18 11:28:36 -0400 | [diff] [blame] | 403 | "gen_platf", |
| 404 | "error", |
| 405 | "_", |
| 406 | "image", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 407 | "_", |
| 408 | "interlaced1.png", |
| 409 | "_", |
| 410 | "image", |
| 411 | "_", |
| 412 | "interlaced2.png", |
| 413 | "_", |
| 414 | "image", |
| 415 | "_", |
| 416 | "interlaced3.png", |
| 417 | "_", |
| 418 | "image", |
| 419 | "_", |
| 420 | ".arw", |
| 421 | "_", |
| 422 | "image", |
| 423 | "_", |
| 424 | ".cr2", |
| 425 | "_", |
| 426 | "image", |
| 427 | "_", |
| 428 | ".dng", |
| 429 | "_", |
| 430 | "image", |
| 431 | "_", |
| 432 | ".nef", |
| 433 | "_", |
| 434 | "image", |
| 435 | "_", |
| 436 | ".nrw", |
| 437 | "_", |
| 438 | "image", |
| 439 | "_", |
| 440 | ".orf", |
| 441 | "_", |
| 442 | "image", |
| 443 | "_", |
| 444 | ".raf", |
| 445 | "_", |
| 446 | "image", |
| 447 | "_", |
| 448 | ".rw2", |
| 449 | "_", |
| 450 | "image", |
| 451 | "_", |
| 452 | ".pef", |
| 453 | "_", |
| 454 | "image", |
| 455 | "_", |
| 456 | ".srw", |
| 457 | "_", |
| 458 | "image", |
| 459 | "_", |
| 460 | ".ARW", |
| 461 | "_", |
| 462 | "image", |
| 463 | "_", |
| 464 | ".CR2", |
| 465 | "_", |
| 466 | "image", |
| 467 | "_", |
| 468 | ".DNG", |
| 469 | "_", |
| 470 | "image", |
| 471 | "_", |
| 472 | ".NEF", |
| 473 | "_", |
| 474 | "image", |
| 475 | "_", |
| 476 | ".NRW", |
| 477 | "_", |
| 478 | "image", |
| 479 | "_", |
| 480 | ".ORF", |
| 481 | "_", |
| 482 | "image", |
| 483 | "_", |
| 484 | ".RAF", |
| 485 | "_", |
| 486 | "image", |
| 487 | "_", |
| 488 | ".RW2", |
| 489 | "_", |
| 490 | "image", |
| 491 | "_", |
| 492 | ".PEF", |
| 493 | "_", |
| 494 | "image", |
| 495 | "_", |
| 496 | ".SRW", |
| 497 | "_", |
| 498 | "gm", |
| 499 | "_", |
| 500 | "vertices_scaled_shader", |
| 501 | "_", |
| 502 | "gm", |
| 503 | "_", |
| 504 | "vertices", |
| 505 | "--match", |
| 506 | "~^InitialTextureClear$", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 507 | "~^RGB565TextureTest$", |
| 508 | "~^RGBA4444TextureTest$", |
Jim Van Verth | 3bc37fd | 2019-02-22 14:08:01 -0500 | [diff] [blame] | 509 | "~^TextureIdleProcFlushTest$", |
Robert Phillips | 5586379 | 2019-04-04 16:48:22 -0400 | [diff] [blame] | 510 | "~^TextureStripAtlasManagerColorFilterTest$", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 511 | "~^WritePixelsNonTextureMSAA_Gpu$", |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 512 | "--nonativeFonts", |
| 513 | "--verbose" |
| 514 | ], |
| 515 | "env": { |
| 516 | "CHROME_HEADLESS": "1", |
Robert Iannucci | f4d4b87 | 2019-02-16 14:10:41 -0800 | [diff] [blame] | 517 | "PATH": "<PATH>:RECIPE_REPO[depot_tools]" |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 518 | }, |
| 519 | "name": "dm" |
| 520 | }, |
| 521 | { |
recipe-roller | 96ea340 | 2018-10-30 15:22:37 -0700 | [diff] [blame] | 522 | "jsonResult": null, |
| 523 | "name": "$result" |
Chris Dalton | 2b937f5 | 2018-05-17 10:17:10 -0600 | [diff] [blame] | 524 | } |
| 525 | ] |