GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — feature/video-support ( 96814b )
by Brad
05:36
created

FooGallery_Slider_Gallery_Template   A

Complexity

Total Complexity 24

Size/Duplication

Total Lines 442
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 442
rs 10
c 0
b 0
f 0
wmc 24
lcom 0
cbo 1

14 Methods

Rating   Name   Duplication   Size   Complexity  
B __construct() 0 32 1
A add_template() 0 68 1
B add_additional_setting_fields() 0 46 1
B unused_fields_for_future_version() 0 82 1
A register_myself() 0 4 1
A enqueue_dependencies() 0 5 1
B change_common_thumbnail_fields() 0 45 6
A add_data_options() 0 8 2
A override_settings() 0 4 1
A preview_arguments() 0 6 1
A build_thumbnail_dimensions_from_arguments() 0 10 2
A get_thumbnail_dimensions() 0 8 1
A build_gallery_template_arguments() 0 6 1
A remove_classes() 0 13 4
1
<?php
2
3
if ( !class_exists( 'FooGallery_Slider_Gallery_Template' ) ) {
4
5
	class FooGallery_Slider_Gallery_Template {
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
6
		/**
7
		 * Wire up everything we need to run the extension
8
		 */
9
		function __construct() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
10
			add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ), 101 );
11
12
			add_filter( 'foogallery_override_gallery_template_fields-slider', array( $this, 'add_additional_setting_fields' ), 10, 2 );
13
14
			add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
15
16
			add_filter( 'foogallery_located_template-slider', array( $this, 'enqueue_dependencies' ) );
17
18
			//change fields for the template
19
			add_filter( 'foogallery_override_gallery_template_fields-slider', array( $this, 'change_common_thumbnail_fields' ), 10, 2 );
20
21
			//add the data options needed for polaroid
22
			add_filter( 'foogallery_build_container_data_options-slider', array( $this, 'add_data_options' ), 10, 3 );
23
24
			//override specific settings when saving the gallery
25
			add_filter( 'foogallery_save_gallery_settings-slider', array( $this, 'override_settings'), 10, 3 );
26
27
			//build up any preview arguments
28
			add_filter( 'foogallery_preview_arguments-slider', array( $this, 'preview_arguments' ), 10, 2 );
29
30
			//build up the thumb dimensions from some arguments
31
			add_filter( 'foogallery_calculate_thumbnail_dimensions-slider', array( $this, 'build_thumbnail_dimensions_from_arguments' ), 10, 2 );
32
33
			//build up the thumb dimensions on save
34
			add_filter( 'foogallery_template_thumbnail_dimensions-slider', array( $this, 'get_thumbnail_dimensions' ), 10, 2 );
35
36
			//build up the arguments needed for rendering this template
37
			add_filter( 'foogallery_gallery_template_arguments-slider', array( $this, 'build_gallery_template_arguments' ) );
38
39
			add_filter( 'foogallery_build_class_attribute', array( $this, 'remove_classes' ), 10, 2 );
40
		}
41
42
		/**
43
		 * Add the video gallery template to the list of templates available
44
		 * @param $gallery_templates
45
		 *
46
		 * @return array
47
		 */
48
		function add_template( $gallery_templates ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
49
50
			$gallery_templates[] = array(
51
				'slug'        => 'slider',
52
				'name'        => __( 'Slider', 'foogallery'),
53
				'preview_support' => true,
54
				'common_fields_support' => true,
55
				'lazyload_support' => true,
56
				'paging_support' => true,
57
				'thumbnail_dimensions' => true,
58
				'filtering_support' => true,
59
				'mandatory_classes' => 'fg-slider',
60
				'fields'	  => array(
61
					array(
62
						'id'      => 'thumbnail_dimensions',
63
						'title'   => __( 'Thumbnail Size', 'foogallery' ),
64
						'desc'    => __( 'Choose the size of your thumbnails.', 'foogallery' ),
65
						'section' => __( 'General', 'foogallery' ),
66
						'type'    => 'thumb_size_no_crop',
67
						'default' => array(
68
							'width' => 150,
69
							'height' => 150
70
						),
71
						'row_data'=> array(
72
							'data-foogallery-change-selector' => 'input',
73
							'data-foogallery-preview' => 'shortcode'
74
						)
75
					),
76
					array(
77
						'id'      => 'layout',
78
						'title'   => __('Layout', 'foogallery'),
79
						'desc'    => __( 'You can choose either a horizontal or vertical layout for your responsive video gallery.', 'foogallery' ),
80
						'section' => __( 'General', 'foogallery' ),
81
						'type'    => 'icon',
82
						'default' => '',
83
						'choices' => array(
84
							'' => array( 'label' => __( 'Vertical' , 'foogallery' ), 'img' => plugin_dir_url( __FILE__ ) . 'assets/video-layout-vertical.png' ),
85
							'fgs-horizontal' => array( 'label' => __( 'Horizontal' , 'foogallery' ), 'img' => plugin_dir_url( __FILE__ ) . 'assets/video-layout-horizontal.png' )
86
						),
87
						'row_data' => array(
88
							'data-foogallery-change-selector' => 'input:radio',
89
							'data-foogallery-value-selector'  => 'input:checked',
90
							'data-foogallery-preview' => 'shortcode',
91
						)
92
					),
93
					array(
94
						'id'      => 'viewport',
95
						'title'   => __('Use Viewport Width', 'foogallery'),
96
						'desc'    => __('Use the viewport width instead of the parent element width.', 'foogallery'),
97
						'section' => __( 'General', 'foogallery' ),
98
						'default' => '',
99
						'type'    => 'radio',
100
						'spacer'  => '<span class="spacer"></span>',
101
						'choices' => array(
102
							'' => __( 'No', 'foogallery' ),
103
							'yes' => __( 'Yes', 'foogallery' )
104
						),
105
						'row_data' => array(
106
							'data-foogallery-change-selector' => 'input:radio',
107
							'data-foogallery-value-selector'  => 'input:checked',
108
							'data-foogallery-preview' => 'shortcode',
109
						)
110
					),
111
				)
112
			);
113
114
			return $gallery_templates;
115
		}
116
117
		/**
118
		 * Add additional fields to the settings
119
		 * @param $fields
120
		 * @param $template
121
		 *
122
		 * @return array
123
		 */
124
		function add_additional_setting_fields( $fields, $template ) {
0 ignored issues
show
Unused Code introduced by
The parameter $template is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
125
126
			$fields[] =	array(
127
				'id'      => 'highlight',
128
				'title'   => __('Highlight', 'foogallery'),
129
				'section' => __( 'Appearance', 'foogallery' ),
130
				'desc'    => __('The color that is used to highlight the selected video.', 'foogallery'),
131
				'default' => 'fgs-purple',
132
				'type'    => 'radio',
133
				'spacer'  => '<span class="spacer"></span>',
134
				'choices' => array(
135
					'fgs-purple' => __( 'Purple', 'foogallery' ),
136
					'fgs-blue' => __( 'Blue', 'foogallery' ),
137
					'fgs-green' => __( 'Green', 'foogallery' ),
138
					'fgs-orange' => __( 'Orange', 'foogallery' ),
139
					'fgs-red' => __( 'Red', 'foogallery' ),
140
					'fg-custom' => __( 'Custom', 'foogallery' )
141
				),
142
				'row_data' => array(
143
					'data-foogallery-change-selector' => 'input:radio',
144
					'data-foogallery-value-selector'  => 'input:checked',
145
					'data-foogallery-preview' => 'class',
146
				)
147
			);
148
149
			$fields[] = array(
150
				'id'      => 'thumbnail_captions',
151
				'title'   => __('Thumbnail Captions', 'foogallery'),
152
				'desc'    => __('You can choose to hide the captions for the small thumbnails in the slider.', 'foogallery'),
153
				'section' => __( 'Captions', 'foogallery' ),
154
				'default' => '',
155
				'type'    => 'radio',
156
				'spacer'  => '<span class="spacer"></span>',
157
				'choices' => array(
158
					'' => __( 'Show Captions', 'foogallery' ),
159
					'fgs-no-captions' => __( 'Hide Captions', 'foogallery' )
160
				),
161
				'row_data' => array(
162
					'data-foogallery-change-selector' => 'input:radio',
163
					'data-foogallery-value-selector'  => 'input:checked',
164
					'data-foogallery-preview' => 'class',
165
				)
166
			);
167
168
			return $fields;
169
		}
170
171
		function unused_fields_for_future_version() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
172
			$fields[] = array(
0 ignored issues
show
Coding Style Comprehensibility introduced by
$fields was never initialized. Although not strictly required by PHP, it is generally a good practice to add $fields = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
173
				'id'      => 'theme_custom_bgcolor',
174
				'title'   => __('Background Color', 'foogallery'),
175
				'section' => __( 'Appearance', 'foogallery' ),
176
				'type'    => 'colorpicker',
177
				'default' => '#000000',
178
				'opacity' => true,
179
				'row_data' => array(
180
					'data-foogallery-hidden'          		   => true,
181
					'data-foogallery-show-when-field'          => 'theme',
182
					'data-foogallery-show-when-field-value'    => 'fg-custom',
183
				)
184
			);
185
			$fields[] = array(
186
				'id'      => 'theme_custom_textcolor',
187
				'title'   => __('Text Color', 'foogallery'),
188
				'section' => __( 'Appearance', 'foogallery' ),
189
				'type'    => 'colorpicker',
190
				'default' => '#ffffff',
191
				'opacity' => true,
192
				'row_data' => array(
193
					'data-foogallery-hidden'          		   => true,
194
					'data-foogallery-show-when-field'          => 'theme',
195
					'data-foogallery-show-when-field-value'    => 'fg-custom',
196
				)
197
			);
198
			$fields[] = array(
199
				'id'      => 'theme_custom_hovercolor',
200
				'title'   => __('Hover BG Color', 'foogallery'),
201
				'section' => __( 'Appearance', 'foogallery' ),
202
				'type'    => 'colorpicker',
203
				'default' => '#222222',
204
				'opacity' => true,
205
				'row_data' => array(
206
					'data-foogallery-hidden'          		   => true,
207
					'data-foogallery-show-when-field'          => 'theme',
208
					'data-foogallery-show-when-field-value'    => 'fg-custom',
209
				)
210
			);
211
			$fields[] =	array(
212
				'id'      => 'theme_custom_dividercolor',
213
				'title'   => __('Divider Color', 'foogallery'),
214
				'section' => __( 'Appearance', 'foogallery' ),
215
				'type'    => 'colorpicker',
216
				'default' => '#2e2e2e',
217
				'opacity' => true,
218
				'row_data' => array(
219
					'data-foogallery-hidden'          		   => true,
220
					'data-foogallery-show-when-field'          => 'theme',
221
					'data-foogallery-show-when-field-value'    => 'fg-custom',
222
				)
223
			);
224
225
			$fields[] =	array(
226
				'id'      => 'highlight_custom_bgcolor',
227
				'title'   => __('Highlight BG Color', 'foogallery'),
228
				'section' => __( 'Appearance', 'foogallery' ),
229
				'type'    => 'colorpicker',
230
				'default' => '#7816d6',
231
				'opacity' => true,
232
				'row_data' => array(
233
					'data-foogallery-hidden'          		   => true,
234
					'data-foogallery-show-when-field'          => 'highlight',
235
					'data-foogallery-show-when-field-value'    => 'fg-custom',
236
				)
237
			);
238
			$fields[] =	array(
239
				'id'      => 'highlight_custom_textcolor',
240
				'title'   => __('Highlight Text Color', 'foogallery'),
241
				'section' => __( 'Appearance', 'foogallery' ),
242
				'type'    => 'colorpicker',
243
				'default' => 'rgba(255, 255, 255, 1)',
244
				'opacity' => true,
245
				'row_data' => array(
246
					'data-foogallery-hidden'          		   => true,
247
					'data-foogallery-show-when-field'          => 'highlight',
248
					'data-foogallery-show-when-field-value'    => 'fg-custom',
249
				)
250
			);
251
252
		}
253
254
		/**
255
		 * Register myself so that all associated JS and CSS files can be found and automatically included
256
		 * @param $extensions
257
		 *
258
		 * @return array
259
		 */
260
		function register_myself( $extensions ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
261
			$extensions[] = __FILE__;
262
			return $extensions;
263
		}
264
265
		/**
266
		 * Enqueue scripts that the template relies on
267
		 */
268
		function enqueue_dependencies() {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
269
			//enqueue core files
270
			foogallery_enqueue_core_gallery_template_style();
271
			foogallery_enqueue_core_gallery_template_script();
272
		}
273
274
		/**
275
		 * Remove some common fields
276
		 *
277
		 * @uses "foogallery_override_gallery_template_fields"
278
		 * @param $fields
279
		 * @param $template
280
		 *
281
		 * @return array
282
		 */
283
		function change_common_thumbnail_fields( $fields, $template ) {
0 ignored issues
show
Unused Code introduced by
The parameter $template is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
284
285
			$fields_to_remove = array();
286
			$fields_to_remove[] = 'border_size';
287
			$fields_to_remove[] = 'rounded_corners';
288
			$fields_to_remove[] = 'drop_shadow';
289
			$fields_to_remove[] = 'loaded_effect';
290
 			$fields_to_remove[] = 'hover_effect_help';
291
			$fields_to_remove[] = 'theme_custom_help';
292
			$fields_to_remove[] = 'hover_effect_preset_size';
293
			$fields_to_remove[] = 'hover_effect_caption_visibility';
294
			$fields_to_remove[] = 'captions_help';
295
			$fields_to_remove[] = 'video_size_help';
296
			$fields_to_remove[] = 'video_size';
297
298
			$indexes_to_remove = array();
299
300
			foreach ($fields as $key => &$field) {
301
				if ( 'hover_effect_preset' === $field['id'] ) {
302
					$field['default'] = 'fg-custom';
303
					$field['choices'] = array(
304
						'fg-custom'  => __( 'Slider', 'foogallery' )
305
					);
306
					$field['row_data'] = array(
307
						'data-foogallery-hidden' => true,
308
						'data-foogallery-change-selector' => 'input:radio',
309
						'data-foogallery-value-selector' => 'input:checked',
310
						'data-foogallery-preview' => 'class'
311
					);
312
				} else if ( 'video_autoplay' === $field['id'] ) {
313
					$field['title'] = __( 'Autoplay', 'foogallery' );
314
					$field['desc'] = __( 'Try to autoplay the video when selected. This will only work with videos hosted on Youtube or Vimeo.', 'foogallery' );
315
				}
316
317
				if ( in_array( $field['id'], $fields_to_remove ) ) {
318
					$indexes_to_remove[] = $key;
319
				}
320
			}
321
322
			foreach ($indexes_to_remove as $index) {
323
				unset( $fields[$index] );
324
			}
325
326
			return $fields;
327
		}
328
329
		/**
330
		 * Add the required data options if needed
331
		 *
332
		 * @param $options
333
		 * @param $gallery    FooGallery
334
		 *
335
		 * @param $attributes array
336
		 *
337
		 * @return array
338
		 */
339
		function add_data_options($options, $gallery, $attributes) {
0 ignored issues
show
Unused Code introduced by
The parameter $gallery is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $attributes is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
340
			$viewport = foogallery_gallery_template_setting( 'viewport', 40 );
341
			if ( 'yes' === $viewport ) {
342
				$options['template']['viewport'] = true;
343
			}
344
345
			return $options;
346
		}
347
348
		/**
349
		 * Override specific settings so that the gallery template will always work
350
		 *
351
		 * @param $settings
352
		 * @param $post_id
353
		 * @param $form_data
354
		 *
355
		 * @return mixed
356
		 */
357
		function override_settings($settings, $post_id, $form_data) {
0 ignored issues
show
Unused Code introduced by
The parameter $post_id is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $form_data is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
358
			$settings['slider_hover_effect_preset'] = 'fg-custom';
359
			return $settings;
360
		}
361
362
		/**
363
		 * Build up a arguments used in the preview of the gallery
364
		 * @param $args
365
		 * @param $post_data
366
		 *
367
		 * @return mixed
368
		 */
369
		function preview_arguments( $args, $post_data ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
370
			$args['thumbnail_dimensions'] = $post_data[FOOGALLERY_META_SETTINGS]['slider_thumbnail_dimensions'];
371
			$args['layout'] = $post_data[FOOGALLERY_META_SETTINGS]['slider_layout'];
372
			$args['viewport'] = $post_data[FOOGALLERY_META_SETTINGS]['slider_viewport'];
373
			return $args;
374
		}
375
376
		/**
377
		 * Builds thumb dimensions from arguments
378
		 *
379
		 * @param array $dimensions
380
		 * @param array $arguments
381
		 *
382
		 * @return mixed
383
		 */
384
		function build_thumbnail_dimensions_from_arguments( $dimensions, $arguments ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
385
			if ( array_key_exists( 'thumbnail_dimensions', $arguments) ) {
386
				return array(
387
					'height' => intval($arguments['thumbnail_dimensions']['height']),
388
					'width' => intval($arguments['thumbnail_dimensions']['width']),
389
					'crop' => '1'
390
				);
391
			}
392
			return null;
393
		}
394
395
		/**
396
		 * Get the thumb dimensions arguments saved for the gallery for this gallery template
397
		 *
398
		 * @param array $dimensions
399
		 * @param FooGallery $foogallery
400
		 *
401
		 * @return mixed
402
		 */
403
		function get_thumbnail_dimensions( $dimensions, $foogallery ) {
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
404
			$dimensions = $foogallery->get_meta( 'slider_thumbnail_dimensions', array(
405
				'width' => 150,
406
				'height' => 150
407
			) );
408
			$dimensions['crop'] = true;
409
			return $dimensions;
410
		}
411
412
		/**
413
		 * Build up the arguments needed for rendering this gallery template
414
		 *
415
		 * @param $args
416
		 * @return array
417
		 */
418
		function build_gallery_template_arguments( $args ) {
0 ignored issues
show
Unused Code introduced by
The parameter $args is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
419
			$args = foogallery_gallery_template_setting( 'thumbnail_dimensions', array() );
0 ignored issues
show
Documentation introduced by
array() is of type array, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
420
			$args['crop'] = '1'; //we now force thumbs to be cropped
421
422
			return $args;
423
		}
424
425
		/**
426
		 * Remove certain classes from the container
427
		 *
428
		 * @param $classes
429
		 * @param $gallery
430
		 *
431
		 * @return array
432
		 */
433
		function remove_classes( $classes, $gallery ) {
0 ignored issues
show
Unused Code introduced by
The parameter $gallery is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
434
			if ( ( $key = array_search( 'slider', $classes ) ) !== false ) {
435
				unset( $classes[$key] );
436
			}
437
			if ( ( $key = array_search( 'fg-border-thin', $classes ) ) !== false ) {
438
				unset( $classes[$key] );
439
			}
440
			if ( ( $key = array_search( 'fg-loaded-fade-in', $classes ) ) !== false ) {
441
				unset( $classes[$key] );
442
			}
443
444
			return $classes;
445
		}
446
	}
447
}