chromeos.gyp revision c2db58bd994c04d98e4ee2cd7565b71548655fe3
1# Copyright (c) 2012 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
5{
6  'variables': {
7    'chromium_code': 1,
8  },
9  'includes': [
10    'chromeos_memory.gypi',
11    'chromeos_tools.gypi',
12  ],
13  'targets': [
14    {
15      'target_name': 'chromeos',
16      'type': '<(component)',
17      'dependencies': [
18        '../base/base.gyp:base',
19        '../base/base.gyp:base_prefs',
20        '../crypto/crypto.gyp:crypto',
21        '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
22        '../build/linux/system.gyp:dbus',
23        '../build/linux/system.gyp:ssl',
24        '../dbus/dbus.gyp:dbus',
25        '../net/net.gyp:net',
26        '../third_party/libxml/libxml.gyp:libxml',
27        '../url/url.gyp:url_lib',
28        'ime/input_method.gyp:gencode',
29        'power_manager_proto',
30      ],
31      'defines': [
32        'CHROMEOS_IMPLEMENTATION',
33      ],
34      'sources': [
35        'app_mode/kiosk_oem_manifest_parser.cc',
36        'app_mode/kiosk_oem_manifest_parser.h',
37        'audio/audio_device.cc',
38        'audio/audio_device.h',
39        'audio/audio_devices_pref_handler.h',
40        'audio/audio_pref_observer.h',
41        'audio/cras_audio_handler.cc',
42        'audio/cras_audio_handler.h',
43        'audio/audio_devices_pref_handler_stub.cc',
44        'audio/audio_devices_pref_handler_stub.h',
45        'attestation/attestation_constants.cc',
46        'attestation/attestation_constants.h',
47        'attestation/attestation_flow.cc',
48        'attestation/attestation_flow.h',
49        'cert_loader.cc',
50        'cert_loader.h',
51        'chromeos_constants.cc',
52        'chromeos_constants.h',
53        'chromeos_export.h',
54        'chromeos_paths.cc',
55        'chromeos_paths.h',
56        'chromeos_switches.cc',
57        'chromeos_switches.h',
58        'cryptohome/async_method_caller.cc',
59        'cryptohome/async_method_caller.h',
60        'cryptohome/cryptohome_library.cc',
61        'cryptohome/cryptohome_library.h',
62        'dbus/audio_node.cc',
63        'dbus/audio_node.h',
64        'dbus/blocking_method_caller.cc',
65        'dbus/blocking_method_caller.h',
66        'dbus/bluetooth_adapter_client.cc',
67        'dbus/bluetooth_adapter_client.h',
68        'dbus/bluetooth_agent_manager_client.cc',
69        'dbus/bluetooth_agent_manager_client.h',
70        'dbus/bluetooth_agent_service_provider.cc',
71        'dbus/bluetooth_agent_service_provider.h',
72        'dbus/bluetooth_device_client.cc',
73        'dbus/bluetooth_device_client.h',
74        'dbus/bluetooth_input_client.cc',
75        'dbus/bluetooth_input_client.h',
76        'dbus/bluetooth_profile_manager_client.cc',
77        'dbus/bluetooth_profile_manager_client.h',
78        'dbus/bluetooth_profile_service_provider.cc',
79        'dbus/bluetooth_profile_service_provider.h',
80        'dbus/cras_audio_client.cc',
81        'dbus/cras_audio_client.h',
82        'dbus/cras_audio_client_stub_impl.cc',
83        'dbus/cras_audio_client_stub_impl.h',
84        'dbus/cros_disks_client.cc',
85        'dbus/cros_disks_client.h',
86        'dbus/cryptohome_client.cc',
87        'dbus/cryptohome_client.h',
88        'dbus/cryptohome_client_stub.cc',
89        'dbus/cryptohome_client_stub.h',
90        'dbus/dbus_client_implementation_type.h',
91        'dbus/dbus_method_call_status.h',
92        'dbus/dbus_thread_manager.cc',
93        'dbus/dbus_thread_manager.h',
94        'dbus/debug_daemon_client.cc',
95        'dbus/debug_daemon_client.h',
96        'dbus/fake_bluetooth_adapter_client.cc',
97        'dbus/fake_bluetooth_adapter_client.h',
98        'dbus/fake_bluetooth_agent_manager_client.cc',
99        'dbus/fake_bluetooth_agent_manager_client.h',
100        'dbus/fake_bluetooth_agent_service_provider.cc',
101        'dbus/fake_bluetooth_agent_service_provider.h',
102        'dbus/fake_bluetooth_device_client.cc',
103        'dbus/fake_bluetooth_device_client.h',
104        'dbus/fake_bluetooth_input_client.cc',
105        'dbus/fake_bluetooth_input_client.h',
106        'dbus/fake_bluetooth_profile_manager_client.cc',
107        'dbus/fake_bluetooth_profile_manager_client.h',
108        'dbus/fake_bluetooth_profile_service_provider.cc',
109        'dbus/fake_bluetooth_profile_service_provider.h',
110        'dbus/fake_gsm_sms_client.cc',
111        'dbus/fake_gsm_sms_client.h',
112        'dbus/fake_image_burner_client.cc',
113        'dbus/fake_image_burner_client.h',
114        'dbus/fake_system_clock_client.cc',
115        'dbus/fake_system_clock_client.h',
116        'dbus/gsm_sms_client.cc',
117        'dbus/gsm_sms_client.h',
118        'dbus/shill_client_helper.cc',
119        'dbus/shill_client_helper.h',
120        'dbus/shill_device_client.cc',
121        'dbus/shill_device_client.h',
122        'dbus/shill_device_client_stub.cc',
123        'dbus/shill_device_client_stub.h',
124        'dbus/shill_ipconfig_client.cc',
125        'dbus/shill_ipconfig_client.h',
126        'dbus/shill_ipconfig_client_stub.cc',
127        'dbus/shill_ipconfig_client_stub.h',
128        'dbus/shill_manager_client.cc',
129        'dbus/shill_manager_client.h',
130        'dbus/shill_manager_client_stub.cc',
131        'dbus/shill_manager_client_stub.h',
132        'dbus/shill_profile_client.cc',
133        'dbus/shill_profile_client.h',
134        'dbus/shill_profile_client_stub.cc',
135        'dbus/shill_profile_client_stub.h',
136        'dbus/shill_service_client.cc',
137        'dbus/shill_service_client.h',
138        'dbus/shill_service_client_stub.cc',
139        'dbus/shill_service_client_stub.h',
140        'dbus/ibus/ibus_client.cc',
141        'dbus/ibus/ibus_client.h',
142        'dbus/ibus/ibus_component.cc',
143        'dbus/ibus/ibus_component.h',
144        'dbus/ibus/ibus_config_client.cc',
145        'dbus/ibus/ibus_config_client.h',
146        'dbus/ibus/ibus_constants.h',
147        'dbus/ibus/ibus_engine_service.cc',
148        'dbus/ibus/ibus_engine_service.h',
149        'dbus/ibus/ibus_engine_factory_service.cc',
150        'dbus/ibus/ibus_engine_factory_service.h',
151        'dbus/ibus/ibus_lookup_table.cc',
152        'dbus/ibus/ibus_lookup_table.h',
153        'dbus/ibus/ibus_object.cc',
154        'dbus/ibus/ibus_object.h',
155        'dbus/ibus/ibus_property.cc',
156        'dbus/ibus/ibus_property.h',
157        'dbus/ibus/ibus_text.cc',
158        'dbus/ibus/ibus_text.h',
159        'dbus/ibus/ibus_input_context_client.cc',
160        'dbus/ibus/ibus_input_context_client.h',
161        'dbus/ibus/ibus_panel_service.cc',
162        'dbus/ibus/ibus_panel_service.h',
163        'dbus/image_burner_client.cc',
164        'dbus/image_burner_client.h',
165        'dbus/introspectable_client.cc',
166        'dbus/introspectable_client.h',
167        'dbus/modem_messaging_client.cc',
168        'dbus/modem_messaging_client.h',
169        'dbus/permission_broker_client.cc',
170        'dbus/permission_broker_client.h',
171        'dbus/power_manager_client.cc',
172        'dbus/power_manager_client.h',
173        'dbus/power_policy_controller.cc',
174        'dbus/power_policy_controller.h',
175        'dbus/session_manager_client.cc',
176        'dbus/session_manager_client.h',
177        'dbus/sms_client.cc',
178        'dbus/sms_client.h',
179        'dbus/system_clock_client.cc',
180        'dbus/system_clock_client.h',
181        'dbus/update_engine_client.cc',
182        'dbus/update_engine_client.h',
183        'dbus/volume_state.cc',
184        'dbus/volume_state.h',
185        'disks/disk_mount_manager.cc',
186        'disks/disk_mount_manager.h',
187        'display/output_configurator.cc',
188        'display/output_configurator.h',
189        'display/output_util.cc',
190        'display/output_util.h',
191        'display/real_output_configurator_delegate.cc',
192        'display/real_output_configurator_delegate.h',
193        'ime/component_extension_ime_manager.cc',
194        'ime/component_extension_ime_manager.h',
195        'ime/extension_ime_util.cc',
196        'ime/extension_ime_util.h',
197        'ime/ibus_bridge.cc',
198        'ime/ibus_bridge.h',
199        'ime/ibus_daemon_controller.cc',
200        'ime/ibus_daemon_controller.h',
201        'ime/ibus_keymap.cc',
202        'ime/ibus_keymap.h',
203        'ime/input_method_config.cc',
204        'ime/input_method_config.h',
205        'ime/input_method_delegate.h',
206        'ime/input_method_descriptor.cc',
207        'ime/input_method_descriptor.h',
208        'ime/input_method_manager.cc',
209        'ime/input_method_manager.h',
210        'ime/input_method_property.cc',
211        'ime/input_method_property.h',
212        'ime/input_method_whitelist.cc',
213        'ime/input_method_whitelist.h',
214        'ime/xkeyboard.cc',
215        'ime/xkeyboard.h',
216        'login/login_state.cc',
217        'login/login_state.h',
218        'network/certificate_pattern.cc',
219        'network/certificate_pattern.h',
220        'network/client_cert_util.cc',
221        'network/client_cert_util.h',
222        'network/cros_network_functions.cc',
223        'network/cros_network_functions.h',
224        'network/device_state.cc',
225        'network/device_state.h',
226        'network/favorite_state.cc',
227        'network/favorite_state.h',
228        'network/geolocation_handler.cc',
229        'network/geolocation_handler.h',
230        'network/managed_network_configuration_handler.cc',
231        'network/managed_network_configuration_handler.h',
232        'network/managed_state.cc',
233        'network/managed_state.h',
234        'network/network_cert_migrator.cc',
235        'network/network_cert_migrator.h',
236        'network/network_change_notifier_chromeos.cc',
237        'network/network_change_notifier_chromeos.h',
238        'network/network_change_notifier_factory_chromeos.cc',
239        'network/network_change_notifier_factory_chromeos.h',
240        'network/network_configuration_handler.cc',
241        'network/network_configuration_handler.h',
242        'network/network_connection_handler.cc',
243        'network/network_connection_handler.h',
244        'network/network_device_handler.cc',
245        'network/network_device_handler.h',
246        'network/network_event_log.cc',
247        'network/network_event_log.h',
248        'network/network_handler.cc',
249        'network/network_handler.h',
250        'network/network_handler_callbacks.cc',
251        'network/network_handler_callbacks.h',
252        'network/network_ip_config.cc',
253        'network/network_ip_config.h',
254        'network/network_profile.cc',
255        'network/network_profile.h',
256        'network/network_profile_handler.cc',
257        'network/network_profile_handler.h',
258        'network/network_profile_observer.h',
259        'network/network_sms_handler.cc',
260        'network/network_sms_handler.h',
261        'network/network_state.cc',
262        'network/network_state.h',
263        'network/network_state_handler.cc',
264        'network/network_state_handler.h',
265        'network/network_state_handler_observer.cc',
266        'network/network_state_handler_observer.h',
267        'network/network_ui_data.cc',
268        'network/network_ui_data.h',
269        'network/network_util.cc',
270        'network/network_util.h',
271        'network/onc/onc_certificate_importer.h',
272        'network/onc/onc_certificate_importer_impl.cc',
273        'network/onc/onc_certificate_importer_impl.h',
274        'network/onc/onc_constants.cc',
275        'network/onc/onc_constants.h',
276        'network/onc/onc_mapper.cc',
277        'network/onc/onc_mapper.h',
278        'network/onc/onc_merger.cc',
279        'network/onc/onc_merger.h',
280        'network/onc/onc_normalizer.cc',
281        'network/onc/onc_normalizer.h',
282        'network/onc/onc_signature.cc',
283        'network/onc/onc_signature.h',
284        'network/onc/onc_translation_tables.cc',
285        'network/onc/onc_translation_tables.h',
286        'network/onc/onc_translator.h',
287        'network/onc/onc_translator_onc_to_shill.cc',
288        'network/onc/onc_translator_shill_to_onc.cc',
289        'network/onc/onc_utils.cc',
290        'network/onc/onc_utils.h',
291        'network/onc/onc_validator.cc',
292        'network/onc/onc_validator.h',
293        'network/shill_property_handler.cc',
294        'network/shill_property_handler.h',
295        'network/sms_watcher.cc',
296        'network/sms_watcher.h',
297        'process_proxy/process_output_watcher.cc',
298        'process_proxy/process_output_watcher.h',
299        'process_proxy/process_proxy.cc',
300        'process_proxy/process_proxy.h',
301        'process_proxy/process_proxy_registry.cc',
302        'process_proxy/process_proxy_registry.h',
303        'system/name_value_pairs_parser.cc',
304        'system/name_value_pairs_parser.h',
305      ],
306      'conditions': [
307        ['use_x11 == 1', {
308          'dependencies': [
309            '../build/linux/system.gyp:glib',
310          ],
311          'link_settings': {
312            'libraries': [
313              '-lX11',
314              '-lXext',
315              '-lXi',
316              '-lXrandr',
317            ],
318          },
319        }, {
320          # use_x11 == 0
321          'sources!': [
322            'ime/xkeyboard.cc',
323            'ime/xkeyboard.h',
324            'display/output_configurator.cc',
325            'display/output_configurator.h',
326            'display/output_util.cc',
327            'display/output_util.h',
328            'display/real_output_configurator_delegate.cc',
329            'display/real_output_configurator_delegate.h',
330            'ime/xkeyboard.cc',
331            'ime/xkeyboard.h',
332          ],
333        }],
334      ],
335    },
336    {
337      # This target contains mocks that can be used to write unit tests.
338      'target_name': 'chromeos_test_support',
339      'type': 'static_library',
340      'dependencies': [
341        '../build/linux/system.gyp:dbus',
342        '../testing/gmock.gyp:gmock',
343        'chromeos',
344        'chromeos_test_support_without_gmock',
345        'power_manager_proto',
346      ],
347      'sources': [
348        'attestation/mock_attestation_flow.cc',
349        'attestation/mock_attestation_flow.h',
350        'chromeos_test_utils.cc',
351        'chromeos_test_utils.h',
352        'cryptohome/mock_async_method_caller.cc',
353        'cryptohome/mock_async_method_caller.h',
354        'cryptohome/mock_cryptohome_library.cc',
355        'cryptohome/mock_cryptohome_library.h',
356        'dbus/mock_cryptohome_client.cc',
357        'dbus/mock_cryptohome_client.h',
358        'dbus/mock_dbus_thread_manager.cc',
359        'dbus/mock_dbus_thread_manager.h',
360        'dbus/mock_gsm_sms_client.cc',
361        'dbus/mock_gsm_sms_client.h',
362        'dbus/mock_session_manager_client.cc',
363        'dbus/mock_session_manager_client.h',
364        'dbus/mock_shill_device_client.cc',
365        'dbus/mock_shill_device_client.h',
366        'dbus/mock_shill_ipconfig_client.cc',
367        'dbus/mock_shill_ipconfig_client.h',
368        'dbus/mock_shill_manager_client.cc',
369        'dbus/mock_shill_manager_client.h',
370        'dbus/mock_shill_profile_client.cc',
371        'dbus/mock_shill_profile_client.h',
372        'dbus/mock_shill_service_client.cc',
373        'dbus/mock_shill_service_client.h',
374        'dbus/shill_profile_client_stub.cc',
375        'dbus/shill_profile_client_stub.h',
376        'disks/mock_disk_mount_manager.cc',
377        'disks/mock_disk_mount_manager.h',
378        'ime/mock_component_extension_ime_manager_delegate.cc',
379        'ime/mock_component_extension_ime_manager_delegate.h',
380        'network/onc/mock_certificate_importer.cc',
381        'network/onc/mock_certificate_importer.h',
382        'network/onc/onc_test_utils.cc',
383        'network/onc/onc_test_utils.h',
384      ],
385      'include_dirs': [
386        '..',
387      ],
388    },
389    {
390      'target_name': 'chromeos_test_support_without_gmock',
391      'type': 'static_library',
392      'dependencies': [
393        '../build/linux/system.gyp:dbus',
394        '../dbus/dbus.gyp:dbus',
395        'chromeos',
396        'power_manager_proto',
397      ],
398      'sources': [
399        'dbus/fake_cros_disks_client.cc',
400        'dbus/fake_cros_disks_client.h',
401        'dbus/fake_cryptohome_client.cc',
402        'dbus/fake_cryptohome_client.h',
403        'dbus/fake_gsm_sms_client.cc',
404        'dbus/fake_gsm_sms_client.h',
405        'dbus/fake_image_burner_client.cc',
406        'dbus/fake_image_burner_client.h',
407        'dbus/fake_power_manager_client.cc',
408        'dbus/fake_power_manager_client.h',
409        'dbus/fake_session_manager_client.cc',
410        'dbus/fake_session_manager_client.h',
411        'dbus/fake_shill_device_client.cc',
412        'dbus/fake_shill_device_client.h',
413        'dbus/fake_shill_manager_client.cc',
414        'dbus/fake_shill_manager_client.h',
415        'dbus/fake_system_clock_client.cc',
416        'dbus/fake_system_clock_client.h',
417        'dbus/fake_update_engine_client.cc',
418        'dbus/fake_update_engine_client.h',
419        'dbus/mock_dbus_thread_manager_without_gmock.cc',
420        'dbus/mock_dbus_thread_manager_without_gmock.h',
421        'dbus/ibus/mock_ibus_client.cc',
422        'dbus/ibus/mock_ibus_client.h',
423        'dbus/ibus/mock_ibus_config_client.cc',
424        'dbus/ibus/mock_ibus_config_client.h',
425        'dbus/ibus/mock_ibus_input_context_client.cc',
426        'dbus/ibus/mock_ibus_input_context_client.h',
427        'dbus/ibus/mock_ibus_engine_factory_service.cc',
428        'dbus/ibus/mock_ibus_engine_factory_service.h',
429        'dbus/ibus/mock_ibus_engine_service.cc',
430        'dbus/ibus/mock_ibus_engine_service.h',
431        'dbus/ibus/mock_ibus_panel_service.cc',
432        'dbus/ibus/mock_ibus_panel_service.h',
433        'ime/fake_input_method_delegate.cc',
434        'ime/fake_input_method_delegate.h',
435        'ime/mock_ibus_daemon_controller.cc',
436        'ime/mock_ibus_daemon_controller.h',
437        'ime/mock_xkeyboard.cc',
438        'ime/mock_xkeyboard.h',
439      ],
440      'include_dirs': [
441        '..',
442      ],
443    },
444    {
445      'target_name': 'chromeos_unittests',
446      'type': 'executable',
447      'dependencies': [
448        '../base/base.gyp:run_all_unittests',
449        '../base/base.gyp:test_support_base',
450        '../build/linux/system.gyp:dbus',
451        '../build/linux/system.gyp:ssl',
452        '../crypto/crypto.gyp:crypto',
453        '../dbus/dbus.gyp:dbus_test_support',
454        '../net/net.gyp:net',
455        '../net/net.gyp:net_test_support',
456        '../testing/gmock.gyp:gmock',
457        '../testing/gtest.gyp:gtest',
458        '../url/url.gyp:url_lib',
459        'chromeos_test_support',
460        'power_manager_proto',
461      ],
462      'sources': [
463        'app_mode/kiosk_oem_manifest_parser_unittest.cc',
464        'attestation/attestation_flow_unittest.cc',
465        'audio/cras_audio_handler_unittest.cc',
466        'dbus/blocking_method_caller_unittest.cc',
467        'dbus/cros_disks_client_unittest.cc',
468        'dbus/gsm_sms_client_unittest.cc',
469        'dbus/ibus/ibus_client_unittest.cc',
470        'dbus/ibus/ibus_component_unittest.cc',
471        'dbus/ibus/ibus_config_client_unittest.cc',
472        'dbus/ibus/ibus_engine_factory_service_unittest.cc',
473        'dbus/ibus/ibus_engine_service_unittest.cc',
474        'dbus/ibus/ibus_input_context_client_unittest.cc',
475        'dbus/ibus/ibus_lookup_table_unittest.cc',
476        'dbus/ibus/ibus_object_unittest.cc',
477        'dbus/ibus/ibus_panel_service_unittest.cc',
478        'dbus/ibus/ibus_property_unittest.cc',
479        'dbus/ibus/ibus_text_unittest.cc',
480        'dbus/introspectable_client_unittest.cc',
481        'dbus/modem_messaging_client_unittest.cc',
482        'dbus/power_policy_controller_unittest.cc',
483        'dbus/shill_client_unittest_base.cc',
484        'dbus/shill_client_unittest_base.h',
485        'dbus/shill_device_client_unittest.cc',
486        'dbus/shill_ipconfig_client_unittest.cc',
487        'dbus/shill_manager_client_unittest.cc',
488        'dbus/shill_profile_client_unittest.cc',
489        'dbus/shill_service_client_unittest.cc',
490        'disks/disk_mount_manager_unittest.cc',
491        'display/output_configurator_unittest.cc',
492        'display/output_util_unittest.cc',
493        'ime/component_extension_ime_manager_unittest.cc',
494        'ime/extension_ime_util_unittest.cc',
495        'ime/input_method_manager.h',
496        'ime/input_method_property_unittest.cc',
497        'ime/input_method_whitelist_unittest.cc',
498        'ime/xkeyboard_unittest.cc',
499        'login/login_state_unittest.cc',
500        'network/cros_network_functions_unittest.cc',
501        'network/geolocation_handler_unittest.cc',
502        'network/managed_network_configuration_handler_unittest.cc',
503        'network/network_cert_migrator_unittest.cc',
504        'network/network_change_notifier_chromeos_unittest.cc',
505        'network/network_configuration_handler_unittest.cc',
506        'network/network_connection_handler_unittest.cc',
507        'network/network_device_handler_unittest.cc',
508        'network/network_event_log_unittest.cc',
509        'network/network_profile_handler_stub.h',
510        'network/network_sms_handler_unittest.cc',
511        'network/network_state_handler_unittest.cc',
512        'network/network_state_unittest.cc',
513        'network/network_ui_data_unittest.cc',
514        'network/network_util_unittest.cc',
515        'network/onc/onc_certificate_importer_impl_unittest.cc',
516        'network/onc/onc_merger_unittest.cc',
517        'network/onc/onc_normalizer_unittest.cc',
518        'network/onc/onc_translator_unittest.cc',
519        'network/onc/onc_utils_unittest.cc',
520        'network/onc/onc_validator_unittest.cc',
521        'network/shill_property_handler_unittest.cc',
522        'process_proxy/process_output_watcher_unittest.cc',
523        'process_proxy/process_proxy_unittest.cc',
524        'system/name_value_pairs_parser_unittest.cc',
525      ],
526      'include_dirs': [
527        '..',
528      ],
529      'conditions': [
530        [ 'linux_use_tcmalloc==1', {
531           'dependencies': [
532              '../base/allocator/allocator.gyp:allocator',
533            ],
534          },
535        ],
536      ],
537    },
538    {
539      # Protobuf compiler/generator for power-manager related protocol buffers.
540      'target_name': 'power_manager_proto',
541      'type': 'static_library',
542      'sources': [
543        '../third_party/cros_system_api/dbus/power_manager/input_event.proto',
544        '../third_party/cros_system_api/dbus/power_manager/peripheral_battery_status.proto',
545        '../third_party/cros_system_api/dbus/power_manager/policy.proto',
546        '../third_party/cros_system_api/dbus/power_manager/power_supply_properties.proto',
547        '../third_party/cros_system_api/dbus/power_manager/suspend.proto',
548      ],
549      'variables': {
550        'proto_in_dir': '../third_party/cros_system_api/dbus/power_manager',
551        'proto_out_dir': 'chromeos/dbus/power_manager',
552      },
553      'includes': ['../build/protoc.gypi'],
554    },
555  ],
556}
557