blob: b5db1083562616764f7aa394daaaf5775e0028e9 [file] [log] [blame]
[email protected]e2504c82014-05-15 19:39:141# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
[email protected]d26d8dd2014-05-16 19:34:345# GYP-to-GN project mappings:
6#
7# gpu.gyp:command_buffer_client => //gpu/command_buffer/client
8#
9# gpu.gyp:command_buffer_common => //gpu/command_buffer/common
10#
[email protected]229094b932014-06-05 20:26:4811# gpu.gyp:command_buffer_service => //gpu/command_buffer/service
12
13# gpu/gpu.gyp:gl_in_process_context =>
14# //gpu/command_buffer/client:gl_in_process_context
15#
[email protected]d26d8dd2014-05-16 19:34:3416# gpu.gyp:gles2_cmd_helper => //gpu/command_buffer/client:gles2_cmd_helper
17#
[email protected]b3df0ff2014-05-20 19:20:4018# gpu.gyp:gles2_c_lib => //gpu/command_buffer/client:gles2_c_lib
[email protected]d26d8dd2014-05-16 19:34:3419#
20# gpu.gyp:gles2_implementation =>
[email protected]d05751a22014-05-29 20:54:2421# //gpu/command_buffer/client:gles2_implementation
[email protected]d05751a22014-05-29 20:54:2422#
23# gpu.gyp:gpu_config => //gpu/config
24#
25# gpu.gyp:gpu_ipc => //gpu/ipc
26#
27# gpu.gyp:disk_cache_proto => //gpu/command_buffer/service:disk_cache_proto
[email protected]d26d8dd2014-05-16 19:34:3428#
29# command_buffer/command_buffer.gyp:gles2_utils =>
brettw157d6cf62015-04-02 05:34:4330# //gpu/command_buffer/common:gles2_utils
[email protected]d7e69fa2014-07-24 21:19:2831#
32# gpu/skia_bindings/skia_bindings.gyp:gpu_skia_bindings => //gpu/skia_bindings
[email protected]d05751a22014-05-29 20:54:2433
qsrfb5251d12015-01-21 15:57:2234import("//testing/test.gni")
dprankedb5527d72015-03-08 04:22:4735import("//build/config/ui.gni")
qsrfb5251d12015-01-21 15:57:2236
brettw8f2fd172015-03-16 22:14:1837config("gpu_implementation") {
38 defines = [ "GPU_IMPLEMENTATION" ]
39}
40
[email protected]d05751a22014-05-29 20:54:2441component("gpu") {
brettw7dab582e2014-09-20 01:44:1142 public_deps = [
brettw542f7532015-04-06 22:35:4543 "//gpu/command_buffer/client:client_sources",
[email protected]fc39a282014-07-29 09:14:0244 "//gpu/command_buffer/client:gles2_cmd_helper_sources",
brettw542f7532015-04-06 22:35:4545 "//gpu/command_buffer/common:common_sources",
46 "//gpu/command_buffer/service:service_sources",
47 "//gpu/config:config_sources",
penghuang346a46f92016-03-31 21:37:5248 "//gpu/ipc/client:ipc_client_sources",
markdittmercbf36ce2016-03-02 16:08:2949 "//gpu/ipc/common:ipc_common_sources",
markdittmerd88b8352016-04-08 15:28:4550 "//gpu/ipc/service:ipc_service_sources",
[email protected]d05751a22014-05-29 20:54:2451 ]
52}
53
hendrikw68d2c332015-09-03 23:02:1854# GYP version: //gpu/gpu.gyp:command_buffer_gles2
55shared_library("command_buffer_gles2") {
56 sources = [
57 # TODO(hendrikw): Move egl out of gles2_conform_support.
58 "gles2_conform_support/egl/config.cc",
59 "gles2_conform_support/egl/config.h",
kkinnunen4b0a5f722016-05-11 12:43:1760 "gles2_conform_support/egl/context.cc",
61 "gles2_conform_support/egl/context.h",
hendrikw68d2c332015-09-03 23:02:1862 "gles2_conform_support/egl/display.cc",
63 "gles2_conform_support/egl/display.h",
64 "gles2_conform_support/egl/egl.cc",
65 "gles2_conform_support/egl/surface.cc",
66 "gles2_conform_support/egl/surface.h",
kkinnunen6aceb552016-02-15 08:04:3567 "gles2_conform_support/egl/test_support.cc",
68 "gles2_conform_support/egl/test_support.h",
kkinnunen4b0a5f722016-05-11 12:43:1769 "gles2_conform_support/egl/thread_state.cc",
70 "gles2_conform_support/egl/thread_state.h",
hendrikw68d2c332015-09-03 23:02:1871 ]
72
73 deps = [
thakis709d0def2015-12-21 20:25:2474 ":gpu",
hendrikw68d2c332015-09-03 23:02:1875 "//base",
76 "//gpu/command_buffer/client:gles2_c_lib",
77 "//gpu/command_buffer/client:gles2_implementation",
kkinnunen4b0a5f722016-05-11 12:43:1778 "//gpu/command_buffer/common:gles2_utils",
hendrikw68d2c332015-09-03 23:02:1879 "//ui/gl:gl",
80 ]
81
hendrikw68d2c332015-09-03 23:02:1882 defines = [
83 "COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY",
84 "EGLAPIENTRY=",
85 ]
86 if (current_os == "win") {
87 defines += [ "EGLAPI=__declspec(dllexport)" ]
88 } else {
89 defines += [ "EGLAPI=__attribute__((visibility(\"default\")))" ]
90 }
91}
92
kkinnunen6aceb552016-02-15 08:04:3593# GYP version: //gpu/gpu.gyp:command_buffer_gles2_tests
94test("command_buffer_gles2_tests") {
95 sources = [
96 "command_buffer/tests/command_buffer_gles2_tests_main.cc",
97 "command_buffer/tests/egl_test.cc",
98 ]
99
100 deps = [
101 ":command_buffer_gles2",
102 "//base",
103 "//base/test:test_support",
104 "//base/third_party/dynamic_annotations",
105 "//testing/gmock",
106 "//testing/gtest",
107 ]
108
109 defines = [
110 "COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY",
111 "EGLAPIENTRY=",
112 ]
113 if (current_os == "win") {
114 defines += [ "EGLAPI=__declspec(dllimport)" ]
115 } else {
116 defines += [ "EGLAPI=" ]
117 }
118
119 libs = []
120
121 if (is_android) {
122 libs += [ "android" ]
123 deps += [ "//ui/android:ui_java" ]
124 }
brucedawson4b964372016-04-19 02:06:01125 if (is_linux && !is_component_build) {
kkinnunen6aceb552016-02-15 08:04:35126 configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
127 }
128}
129
[email protected]c7990dbf2014-07-23 22:35:10130source_set("test_support") {
Brett Wilson0c8745a2014-09-08 22:59:49131 testonly = true
[email protected]d05751a22014-05-29 20:54:24132 sources = [
[email protected]d05751a22014-05-29 20:54:24133 "command_buffer/client/gles2_interface_stub.cc",
134 "command_buffer/client/gles2_interface_stub.h",
satoruxc5bd7a32015-02-18 01:54:52135 "command_buffer/service/error_state_mock.cc",
136 "command_buffer/service/gles2_cmd_decoder_mock.cc",
[email protected]d05751a22014-05-29 20:54:24137 ]
138
brettw7dab582e2014-09-20 01:44:11139 public_deps = [
[email protected]d05751a22014-05-29 20:54:24140 ":gpu",
jbromancba3d2fe2014-09-16 01:04:24141 "//gpu/command_buffer/client:gles2_interface",
brettw7dab582e2014-09-20 01:44:11142 ]
143 deps = [
[email protected]d05751a22014-05-29 20:54:24144 "//testing/gmock",
145 "//testing/gtest",
146 "//ui/gl:gl_unittest_utils",
147 ]
148}
149
brettw4897a612015-03-02 23:13:15150test("gl_tests") {
151 sources = [
152 "command_buffer/tests/compressed_texture_test.cc",
kkinnunen631033e2015-09-23 06:39:04153 "command_buffer/tests/es3_misc_functions_unittest.cc",
brettw4897a612015-03-02 23:13:15154 "command_buffer/tests/gl_bind_uniform_location_unittest.cc",
kkinnunena9d27e72015-12-21 17:23:44155 "command_buffer/tests/gl_chromium_framebuffer_mixed_samples_unittest.cc",
brettw4897a612015-03-02 23:13:15156 "command_buffer/tests/gl_chromium_framebuffer_multisample_unittest.cc",
157 "command_buffer/tests/gl_chromium_path_rendering_unittest.cc",
158 "command_buffer/tests/gl_clear_framebuffer_unittest.cc",
christiank83120092015-06-17 11:40:10159 "command_buffer/tests/gl_compressed_copy_texture_CHROMIUM_unittest.cc",
erikchen38cbbce2016-03-16 17:45:44160 "command_buffer/tests/gl_copy_tex_image_2d_workaround_unittest.cc",
brettw4897a612015-03-02 23:13:15161 "command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc",
dongseong.hwang9e8922b2015-09-01 11:04:49162 "command_buffer/tests/gl_cube_map_texture_unittest.cc",
brettw4897a612015-03-02 23:13:15163 "command_buffer/tests/gl_depth_texture_unittest.cc",
jinsukkim25219612016-01-20 23:24:07164 "command_buffer/tests/gl_dynamic_config_unittest.cc",
kkinnunen8cefb232015-12-04 09:36:31165 "command_buffer/tests/gl_ext_blend_func_extended_unittest.cc",
kkinnunenf26d7382015-12-01 13:34:14166 "command_buffer/tests/gl_ext_multisample_compatibility_unittest.cc",
kkinnunen0c2dee72015-11-09 11:13:58167 "command_buffer/tests/gl_ext_srgb_unittest.cc",
dyen5c38a032015-10-07 18:58:31168 "command_buffer/tests/gl_fence_sync_unittest.cc",
brettw4897a612015-03-02 23:13:15169 "command_buffer/tests/gl_gpu_memory_buffer_unittest.cc",
erikchen2acd56012016-03-22 00:58:26170 "command_buffer/tests/gl_iosurface_readback_workaround_unittest.cc",
brettw4897a612015-03-02 23:13:15171 "command_buffer/tests/gl_lose_context_chromium_unittest.cc",
172 "command_buffer/tests/gl_manager.cc",
173 "command_buffer/tests/gl_manager.h",
174 "command_buffer/tests/gl_pointcoord_unittest.cc",
175 "command_buffer/tests/gl_program_unittest.cc",
176 "command_buffer/tests/gl_query_unittest.cc",
177 "command_buffer/tests/gl_readback_unittest.cc",
kkinnunen5d3785f2016-02-19 16:59:37178 "command_buffer/tests/gl_request_extension_unittest.cc",
brettw4897a612015-03-02 23:13:15179 "command_buffer/tests/gl_shared_resources_unittest.cc",
180 "command_buffer/tests/gl_stream_draw_unittest.cc",
181 "command_buffer/tests/gl_test_utils.cc",
182 "command_buffer/tests/gl_test_utils.h",
183 "command_buffer/tests/gl_tests_main.cc",
184 "command_buffer/tests/gl_texture_mailbox_unittest.cc",
185 "command_buffer/tests/gl_texture_storage_unittest.cc",
186 "command_buffer/tests/gl_unittest.cc",
187 "command_buffer/tests/gl_unittests_android.cc",
188 "command_buffer/tests/gl_virtual_contexts_unittest.cc",
189 "command_buffer/tests/occlusion_query_unittest.cc",
penghuangc9c73f482016-04-26 18:52:17190 "ipc/client/gpu_context_tests.h",
191 "ipc/client/gpu_in_process_context_tests.cc",
brettw4897a612015-03-02 23:13:15192 ]
[email protected]d05751a22014-05-29 20:54:24193
brettw4897a612015-03-02 23:13:15194 defines = [ "GL_GLEXT_PROTOTYPES" ]
[email protected]d05751a22014-05-29 20:54:24195
brettw4897a612015-03-02 23:13:15196 configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
dpranke8ec93a3a2015-02-20 23:36:08197
brettw4897a612015-03-02 23:13:15198 deps = [
199 ":gpu",
200 ":test_support",
201 "//base",
202 "//base/test:test_support",
203 "//base/third_party/dynamic_annotations",
penghuangc9c73f482016-04-26 18:52:17204 "//gpu/command_buffer/client:gl_in_process_context",
agrieved7a71c882015-11-20 19:53:28205 "//gpu/command_buffer/client:gles2_c_lib",
206 "//gpu/command_buffer/client:gles2_implementation",
207 "//gpu/command_buffer/common:gles2_utils",
brettw4897a612015-03-02 23:13:15208 "//testing/gmock",
209 "//testing/gtest",
210 "//third_party/angle:translator",
211 "//ui/gfx",
212 "//ui/gfx:test_support",
213 "//ui/gfx/geometry",
214 "//ui/gl",
brettw4897a612015-03-02 23:13:15215 ]
[email protected]d05751a22014-05-29 20:54:24216
brettw4897a612015-03-02 23:13:15217 libs = []
cjhopman09981a92014-10-27 17:11:18218
brettw4897a612015-03-02 23:13:15219 if (is_android) {
brettw4897a612015-03-02 23:13:15220 libs += [ "android" ]
agrieve97176362015-12-01 16:36:19221 deps += [ "//ui/android:ui_java" ]
cjhopman09981a92014-10-27 17:11:18222 }
brettw4897a612015-03-02 23:13:15223}
[email protected]d05751a22014-05-29 20:54:24224
brettw4897a612015-03-02 23:13:15225test("gpu_unittests") {
226 sources = [
227 "command_buffer/client/buffer_tracker_unittest.cc",
228 "command_buffer/client/client_test_helper.cc",
229 "command_buffer/client/client_test_helper.h",
230 "command_buffer/client/cmd_buffer_helper_test.cc",
231 "command_buffer/client/fenced_allocator_test.cc",
232 "command_buffer/client/gles2_implementation_unittest.cc",
233 "command_buffer/client/mapped_memory_unittest.cc",
234 "command_buffer/client/program_info_manager_unittest.cc",
235 "command_buffer/client/query_tracker_unittest.cc",
236 "command_buffer/client/ring_buffer_test.cc",
237 "command_buffer/client/transfer_buffer_unittest.cc",
238 "command_buffer/client/vertex_array_object_manager_unittest.cc",
239 "command_buffer/common/bitfield_helpers_test.cc",
240 "command_buffer/common/command_buffer_mock.cc",
241 "command_buffer/common/command_buffer_mock.h",
242 "command_buffer/common/command_buffer_shared_test.cc",
243 "command_buffer/common/debug_marker_manager_unittest.cc",
244 "command_buffer/common/gles2_cmd_format_test.cc",
245 "command_buffer/common/gles2_cmd_format_test_autogen.h",
246 "command_buffer/common/gles2_cmd_utils_unittest.cc",
247 "command_buffer/common/id_allocator_test.cc",
lukasza2573ce7d2016-02-16 19:17:22248 "command_buffer/common/id_type_unittest.cc",
brettw4897a612015-03-02 23:13:15249 "command_buffer/common/unittest_main.cc",
brettw4897a612015-03-02 23:13:15250 "command_buffer/service/buffer_manager_unittest.cc",
251 "command_buffer/service/cmd_parser_test.cc",
252 "command_buffer/service/command_buffer_service_unittest.cc",
sunnypsd6bb1c02016-03-12 04:48:31253 "command_buffer/service/command_executor_unittest.cc",
brettw4897a612015-03-02 23:13:15254 "command_buffer/service/common_decoder_unittest.cc",
255 "command_buffer/service/context_group_unittest.cc",
zmo5ee097e2015-05-14 19:13:52256 "command_buffer/service/context_state_unittest.cc",
brettw4897a612015-03-02 23:13:15257 "command_buffer/service/feature_info_unittest.cc",
258 "command_buffer/service/framebuffer_manager_unittest.cc",
sieversfbaa5dc2015-04-28 00:45:31259 "command_buffer/service/gl_context_mock.cc",
260 "command_buffer/service/gl_context_mock.h",
brettw4897a612015-03-02 23:13:15261 "command_buffer/service/gl_surface_mock.cc",
262 "command_buffer/service/gl_surface_mock.h",
263 "command_buffer/service/gles2_cmd_decoder_unittest.cc",
264 "command_buffer/service/gles2_cmd_decoder_unittest.h",
265 "command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h",
266 "command_buffer/service/gles2_cmd_decoder_unittest_1.cc",
267 "command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h",
268 "command_buffer/service/gles2_cmd_decoder_unittest_2.cc",
269 "command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h",
270 "command_buffer/service/gles2_cmd_decoder_unittest_3.cc",
271 "command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h",
brettw4897a612015-03-02 23:13:15272 "command_buffer/service/gles2_cmd_decoder_unittest_attribs.cc",
273 "command_buffer/service/gles2_cmd_decoder_unittest_base.cc",
274 "command_buffer/service/gles2_cmd_decoder_unittest_base.h",
zmoa06b9882015-03-10 20:50:34275 "command_buffer/service/gles2_cmd_decoder_unittest_buffers.cc",
sieversfbaa5dc2015-04-28 00:45:31276 "command_buffer/service/gles2_cmd_decoder_unittest_context_lost.cc",
brettw4897a612015-03-02 23:13:15277 "command_buffer/service/gles2_cmd_decoder_unittest_context_state.cc",
278 "command_buffer/service/gles2_cmd_decoder_unittest_drawing.cc",
279 "command_buffer/service/gles2_cmd_decoder_unittest_extensions.cc",
280 "command_buffer/service/gles2_cmd_decoder_unittest_framebuffers.cc",
281 "command_buffer/service/gles2_cmd_decoder_unittest_programs.cc",
282 "command_buffer/service/gles2_cmd_decoder_unittest_textures.cc",
brettw4897a612015-03-02 23:13:15283 "command_buffer/service/gpu_service_test.cc",
284 "command_buffer/service/gpu_service_test.h",
285 "command_buffer/service/gpu_tracer_unittest.cc",
286 "command_buffer/service/id_manager_unittest.cc",
zmo6c468ba2016-05-04 20:00:51287 "command_buffer/service/indexed_buffer_binding_host_unittest.cc",
brettw4897a612015-03-02 23:13:15288 "command_buffer/service/mailbox_manager_unittest.cc",
289 "command_buffer/service/memory_program_cache_unittest.cc",
290 "command_buffer/service/mocks.cc",
291 "command_buffer/service/mocks.h",
kkinnunenb959a8462015-07-14 11:08:34292 "command_buffer/service/path_manager_unittest.cc",
brettw4897a612015-03-02 23:13:15293 "command_buffer/service/program_cache_unittest.cc",
294 "command_buffer/service/program_manager_unittest.cc",
295 "command_buffer/service/query_manager_unittest.cc",
296 "command_buffer/service/renderbuffer_manager_unittest.cc",
297 "command_buffer/service/shader_manager_unittest.cc",
298 "command_buffer/service/shader_translator_cache_unittest.cc",
299 "command_buffer/service/shader_translator_unittest.cc",
dyen5c38a032015-10-07 18:58:31300 "command_buffer/service/sync_point_manager_unittest.cc",
brettw4897a612015-03-02 23:13:15301 "command_buffer/service/test_helper.cc",
302 "command_buffer/service/test_helper.h",
303 "command_buffer/service/texture_manager_unittest.cc",
304 "command_buffer/service/transfer_buffer_manager_unittest.cc",
zmo6c468ba2016-05-04 20:00:51305 "command_buffer/service/transform_feedback_manager_unittest.cc",
brettw4897a612015-03-02 23:13:15306 "command_buffer/service/vertex_array_manager_unittest.cc",
307 "command_buffer/service/vertex_attrib_manager_unittest.cc",
308 "config/gpu_blacklist_unittest.cc",
309 "config/gpu_control_list_entry_unittest.cc",
310 "config/gpu_control_list_number_info_unittest.cc",
311 "config/gpu_control_list_os_info_unittest.cc",
312 "config/gpu_control_list_unittest.cc",
313 "config/gpu_control_list_version_info_unittest.cc",
314 "config/gpu_driver_bug_list_unittest.cc",
315 "config/gpu_info_collector_unittest.cc",
316 "config/gpu_info_unittest.cc",
317 "config/gpu_test_config_unittest.cc",
318 "config/gpu_test_expectations_parser_unittest.cc",
319 "config/gpu_util_unittest.cc",
penghuang346a46f92016-03-31 21:37:52320 "ipc/client/gpu_memory_buffer_impl_shared_memory_unittest.cc",
321 "ipc/client/gpu_memory_buffer_impl_test_template.h",
brettw4897a612015-03-02 23:13:15322 ]
penghuangc9c73f482016-04-26 18:52:17323
324 if (is_android) {
325 sources +=
326 [ "ipc/client/gpu_memory_buffer_impl_surface_texture_unittest.cc" ]
327 }
328
penghuang346a46f92016-03-31 21:37:52329 if (is_mac) {
330 sources += [ "ipc/client/gpu_memory_buffer_impl_io_surface_unittest.cc" ]
331 }
dpranke8ec93a3a2015-02-20 23:36:08332
brettwbc8b2a22015-07-28 18:24:42333 configs += [
334 "//build/config:precompiled_headers",
335
336 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
337 "//build/config/compiler:no_size_t_to_int_warning",
338 ]
[email protected]d5ba08c2014-06-18 07:01:08339
brettw4897a612015-03-02 23:13:15340 deps = [
341 ":gpu",
342 ":test_support",
343 "//base",
344 "//base/test:test_support",
345 "//base/third_party/dynamic_annotations",
penghuang346a46f92016-03-31 21:37:52346 "//gpu/command_buffer/client:gl_in_process_context",
agrieved7a71c882015-11-20 19:53:28347 "//gpu/command_buffer/client:gles2_c_lib",
348 "//gpu/command_buffer/client:gles2_implementation",
349 "//gpu/command_buffer/common:gles2_utils",
brettw4897a612015-03-02 23:13:15350 "//testing/gmock",
351 "//testing/gtest",
352 "//third_party/angle:translator",
353 "//ui/gfx",
tfarinaf89722432015-05-15 19:30:19354 "//ui/gfx:test_support",
agrieved7a71c882015-11-20 19:53:28355 "//ui/gfx/geometry",
brettw4897a612015-03-02 23:13:15356 "//ui/gl",
tfarinaf89722432015-05-15 19:30:19357 "//ui/gl:gl_unittest_utils",
sadrulba162cd2015-07-20 22:34:26358 "//ui/gl:test_support",
brettw4897a612015-03-02 23:13:15359 ]
dongseong.hwangd4a00dd72016-04-08 07:09:00360
penghuangc9c73f482016-04-26 18:52:17361 if (is_android) {
362 deps += [
363 "//ui/android:ui_java",
364 "//ui/gl:gl_jni_headers",
365 ]
366 }
367
dongseong.hwangd4a00dd72016-04-08 07:09:00368 if (use_ozone) {
369 deps += [ "//ui/ozone" ]
370 sources +=
371 [ "ipc/client/gpu_memory_buffer_impl_ozone_native_pixmap_unittest.cc" ]
372 }
brettw4897a612015-03-02 23:13:15373}
[email protected]c7990dbf2014-07-23 22:35:10374
brettw4897a612015-03-02 23:13:15375test("gpu_perftests") {
376 sources = [
377 "perftests/measurements.cc",
378 "perftests/run_all_tests.cc",
379 "perftests/texture_upload_perftest.cc",
380 ]
dcastagna3e60aaa92015-01-29 19:23:45381
brettw4897a612015-03-02 23:13:15382 deps = [
383 "//base",
384 "//base/test:test_support",
385 "//gpu/command_buffer/service",
dcastagnaac138e52015-03-10 00:22:09386 "//testing/gmock",
brettw4897a612015-03-02 23:13:15387 "//testing/gtest",
388 "//testing/perf",
389 "//ui/gfx/geometry",
390 "//ui/gl",
391 ]
krasinca63e412016-05-12 02:53:25392
393 # This target should not require the Chrome executable to run.
394 assert_no_deps = [ "//chrome" ]
brettw4897a612015-03-02 23:13:15395}