001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.visualweb.faces.dt_1_1.component;
043:
044: import java.beans.BeanDescriptor;
045: import java.beans.IntrospectionException;
046: import java.beans.PropertyDescriptor;
047: import java.util.Locale;
048: import java.util.List;
049: import java.util.ArrayList;
050: import java.util.Arrays;
051: import java.util.ResourceBundle;
052:
053: import com.sun.rave.designtime.CategoryDescriptor;
054: import com.sun.rave.designtime.Constants;
055: import com.sun.rave.designtime.faces.FacetDescriptor;
056: import com.sun.rave.designtime.markup.AttributeDescriptor;
057:
058: import org.netbeans.modules.visualweb.faces.dt.HtmlBeanInfoBase;
059: import org.netbeans.modules.visualweb.faces.dt.BeanDescriptorBase;
060: import org.netbeans.modules.visualweb.faces.dt.PropertyDescriptorBase;
061: import org.netbeans.modules.visualweb.faces.dt_1_1.propertyeditors.JSF1_1ConverterPropertyEditor;
062:
063: /**
064: * <p>Auto-generated design time metadata class.
065: * Do <strong>NOT</strong> modify; all changes
066: * <strong>will</strong> be lost!</p>
067: */
068:
069: abstract class UISelectManyBeanInfoBase extends HtmlBeanInfoBase {
070:
071: protected static ResourceBundle resources = ResourceBundle
072: .getBundle(
073: "org.netbeans.modules.visualweb.faces.dt_1_1.component.Bundle-JSF",
074: Locale.getDefault(), UISelectManyBeanInfoBase.class
075: .getClassLoader());
076:
077: /**
078: * <p>Construct a new <code>UISelectManyBeanInfoBase</code>.</p>
079: */
080: public UISelectManyBeanInfoBase() {
081:
082: beanClass = javax.faces.component.UISelectMany.class;
083: iconFileName_C16 = "/org/netbeans/modules/visualweb/faces/dt_1_1/component/UISelectMany_C16";
084: iconFileName_C32 = "/org/netbeans/modules/visualweb/faces/dt_1_1/component/UISelectMany_C32";
085: iconFileName_M16 = "/org/netbeans/modules/visualweb/faces/dt_1_1/component/UISelectMany_M16";
086: iconFileName_M32 = "/org/netbeans/modules/visualweb/faces/dt_1_1/component/UISelectMany_M32";
087:
088: }
089:
090: private BeanDescriptor beanDescriptor;
091:
092: /**
093: * <p>Return the <code>BeanDescriptor</code> for this bean.</p>
094: */
095: public BeanDescriptor getBeanDescriptor() {
096:
097: if (beanDescriptor != null) {
098: return beanDescriptor;
099: }
100:
101: beanDescriptor = new BeanDescriptorBase(beanClass);
102: beanDescriptor.setDisplayName(resources
103: .getString("UISelectMany_DisplayName"));
104: beanDescriptor.setShortDescription(resources
105: .getString("UISelectMany_Description"));
106: beanDescriptor.setExpert(false);
107: beanDescriptor.setHidden(false);
108: beanDescriptor.setPreferred(false);
109: beanDescriptor.setValue(
110: Constants.BeanDescriptor.FACET_DESCRIPTORS,
111: getFacetDescriptors());
112: beanDescriptor.setValue(Constants.BeanDescriptor.HELP_KEY,
113: "projrave_ui_elements_palette_jsfstd_multi_listbox");
114: beanDescriptor.setValue(Constants.BeanDescriptor.INSTANCE_NAME,
115: "multiSelectListbox");
116: beanDescriptor.setValue(Constants.BeanDescriptor.IS_CONTAINER,
117: Boolean.TRUE);
118: beanDescriptor
119: .setValue(Constants.BeanDescriptor.PROPERTIES_HELP_KEY,
120: "projrave_ui_elements_propsheets_jsfstd_multi_listbox_props");
121: beanDescriptor.setValue(
122: Constants.BeanDescriptor.PROPERTY_CATEGORIES,
123: getCategoryDescriptors());
124: beanDescriptor.setValue(Constants.BeanDescriptor.TAG_NAME,
125: "selectManyListbox");
126: beanDescriptor.setValue(Constants.BeanDescriptor.TAGLIB_PREFIX,
127: "h");
128: beanDescriptor.setValue(Constants.BeanDescriptor.TAGLIB_URI,
129: "http://java.sun.com/jsf/html");
130:
131: return beanDescriptor;
132:
133: }
134:
135: /**
136: * <p>Return the <code>CategoryDescriptor</code> array for the property categories of this component.</p>
137: */
138: private CategoryDescriptor[] getCategoryDescriptors() {
139:
140: return com.sun.rave.designtime.base.CategoryDescriptors
141: .getDefaultCategoryDescriptors();
142:
143: }
144:
145: /**
146: * <p>The cached facet descriptors.</p>
147: */
148: protected FacetDescriptor[] facetDescriptors;
149:
150: /**
151: * <p>Return the <code>FacetDescriptor</code>s for this bean.</p>
152: */
153: public FacetDescriptor[] getFacetDescriptors() {
154:
155: if (facetDescriptors != null) {
156: return facetDescriptors;
157: }
158: facetDescriptors = new FacetDescriptor[] {};
159: return facetDescriptors;
160:
161: }
162:
163: /**
164: * <p>Return a class loaded by name via the class loader that loaded this class.</p>
165: */
166:
167: private PropertyDescriptor[] propertyDescriptors;
168:
169: /**
170: * <p>Return the <code>PropertyDescriptor</code>s for this bean.</p>
171: */
172: public PropertyDescriptor[] getPropertyDescriptors() {
173:
174: if (propertyDescriptors != null) {
175: return propertyDescriptors;
176: }
177: AttributeDescriptor attrib = null;
178:
179: try {
180:
181: PropertyDescriptor prop_attributes = new PropertyDescriptorBase(
182: "attributes", beanClass, "getAttributes", null);
183: prop_attributes.setDisplayName(resources
184: .getString("UISelectMany_attributes_DisplayName"));
185: prop_attributes.setShortDescription(resources
186: .getString("UISelectMany_attributes_Description"));
187: prop_attributes.setExpert(false);
188: prop_attributes.setHidden(true);
189: prop_attributes.setPreferred(false);
190: prop_attributes
191: .setValue(
192: Constants.PropertyDescriptor.CATEGORY,
193: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
194:
195: PropertyDescriptor prop_childCount = new PropertyDescriptorBase(
196: "childCount", beanClass, "getChildCount", null);
197: prop_childCount.setDisplayName(resources
198: .getString("UISelectMany_childCount_DisplayName"));
199: prop_childCount.setShortDescription(resources
200: .getString("UISelectMany_childCount_Description"));
201: prop_childCount.setExpert(false);
202: prop_childCount.setHidden(true);
203: prop_childCount.setPreferred(false);
204: prop_childCount
205: .setValue(
206: Constants.PropertyDescriptor.CATEGORY,
207: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
208:
209: PropertyDescriptor prop_children = new PropertyDescriptorBase(
210: "children", beanClass, "getChildren", null);
211: prop_children.setDisplayName(resources
212: .getString("UISelectMany_children_DisplayName"));
213: prop_children.setShortDescription(resources
214: .getString("UISelectMany_children_Description"));
215: prop_children.setExpert(false);
216: prop_children.setHidden(true);
217: prop_children.setPreferred(false);
218: prop_children
219: .setValue(
220: Constants.PropertyDescriptor.CATEGORY,
221: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
222:
223: PropertyDescriptor prop_converter = new PropertyDescriptorBase(
224: "converter", beanClass, "getConverter",
225: "setConverter");
226: prop_converter.setDisplayName(resources
227: .getString("UISelectMany_converter_DisplayName"));
228: prop_converter.setShortDescription(resources
229: .getString("UISelectMany_converter_Description"));
230: prop_converter
231: .setPropertyEditorClass(JSF1_1ConverterPropertyEditor.class);
232: prop_converter.setExpert(false);
233: prop_converter.setHidden(false);
234: prop_converter.setPreferred(false);
235: attrib = new AttributeDescriptor("converter", false, null,
236: true);
237: prop_converter.setValue(
238: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
239: attrib);
240: prop_converter
241: .setValue(
242: Constants.PropertyDescriptor.CATEGORY,
243: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
244:
245: PropertyDescriptor prop_facets = new PropertyDescriptorBase(
246: "facets", beanClass, "getFacets", null);
247: prop_facets.setDisplayName(resources
248: .getString("UISelectMany_facets_DisplayName"));
249: prop_facets.setShortDescription(resources
250: .getString("UISelectMany_facets_Description"));
251: prop_facets.setExpert(false);
252: prop_facets.setHidden(true);
253: prop_facets.setPreferred(false);
254: prop_facets
255: .setValue(
256: Constants.PropertyDescriptor.CATEGORY,
257: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
258:
259: PropertyDescriptor prop_family = new PropertyDescriptorBase(
260: "family", beanClass, "getFamily", null);
261: prop_family.setDisplayName(resources
262: .getString("UISelectMany_family_DisplayName"));
263: prop_family.setShortDescription(resources
264: .getString("UISelectMany_family_Description"));
265: prop_family.setExpert(false);
266: prop_family.setHidden(true);
267: prop_family.setPreferred(false);
268: prop_family
269: .setValue(
270: Constants.PropertyDescriptor.CATEGORY,
271: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
272:
273: PropertyDescriptor prop_id = new PropertyDescriptorBase(
274: "id", beanClass, "getId", "setId");
275: prop_id.setDisplayName(resources
276: .getString("UISelectMany_id_DisplayName"));
277: prop_id.setShortDescription(resources
278: .getString("UISelectMany_id_Description"));
279: prop_id.setExpert(false);
280: prop_id.setHidden(true);
281: prop_id.setPreferred(false);
282: attrib = new AttributeDescriptor("id", false, null, true);
283: prop_id.setValue(
284: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
285: attrib);
286: prop_id
287: .setValue(
288: Constants.PropertyDescriptor.CATEGORY,
289: com.sun.rave.designtime.base.CategoryDescriptors.GENERAL);
290:
291: PropertyDescriptor prop_immediate = new PropertyDescriptorBase(
292: "immediate", beanClass, "isImmediate",
293: "setImmediate");
294: prop_immediate.setDisplayName(resources
295: .getString("UISelectMany_immediate_DisplayName"));
296: prop_immediate.setShortDescription(resources
297: .getString("UISelectMany_immediate_Description"));
298: prop_immediate.setExpert(false);
299: prop_immediate.setHidden(false);
300: prop_immediate.setPreferred(false);
301: attrib = new AttributeDescriptor("immediate", false, null,
302: true);
303: prop_immediate.setValue(
304: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
305: attrib);
306: prop_immediate
307: .setValue(
308: Constants.PropertyDescriptor.CATEGORY,
309: com.sun.rave.designtime.base.CategoryDescriptors.ADVANCED);
310:
311: PropertyDescriptor prop_localValue = new PropertyDescriptorBase(
312: "localValue", beanClass, "getLocalValue", null);
313: prop_localValue.setDisplayName(resources
314: .getString("UISelectMany_localValue_DisplayName"));
315: prop_localValue.setShortDescription(resources
316: .getString("UISelectMany_localValue_Description"));
317: prop_localValue.setExpert(false);
318: prop_localValue.setHidden(true);
319: prop_localValue.setPreferred(false);
320: prop_localValue
321: .setValue(
322: Constants.PropertyDescriptor.CATEGORY,
323: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
324:
325: PropertyDescriptor prop_localValueSet = new PropertyDescriptorBase(
326: "localValueSet", beanClass, "isLocalValueSet",
327: "setLocalValueSet");
328: prop_localValueSet
329: .setDisplayName(resources
330: .getString("UISelectMany_localValueSet_DisplayName"));
331: prop_localValueSet
332: .setShortDescription(resources
333: .getString("UISelectMany_localValueSet_Description"));
334: prop_localValueSet.setExpert(false);
335: prop_localValueSet.setHidden(true);
336: prop_localValueSet.setPreferred(false);
337: prop_localValueSet
338: .setValue(
339: Constants.PropertyDescriptor.CATEGORY,
340: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
341:
342: PropertyDescriptor prop_parent = new PropertyDescriptorBase(
343: "parent", beanClass, "getParent", null);
344: prop_parent.setDisplayName(resources
345: .getString("UISelectMany_parent_DisplayName"));
346: prop_parent.setShortDescription(resources
347: .getString("UISelectMany_parent_Description"));
348: prop_parent.setExpert(false);
349: prop_parent.setHidden(true);
350: prop_parent.setPreferred(false);
351: prop_parent
352: .setValue(
353: Constants.PropertyDescriptor.CATEGORY,
354: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
355:
356: PropertyDescriptor prop_rendered = new PropertyDescriptorBase(
357: "rendered", beanClass, "isRendered", "setRendered");
358: prop_rendered.setDisplayName(resources
359: .getString("UISelectMany_rendered_DisplayName"));
360: prop_rendered.setShortDescription(resources
361: .getString("UISelectMany_rendered_Description"));
362: prop_rendered.setExpert(false);
363: prop_rendered.setHidden(false);
364: prop_rendered.setPreferred(false);
365: attrib = new AttributeDescriptor("rendered", false, null,
366: true);
367: prop_rendered.setValue(
368: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
369: attrib);
370: prop_rendered
371: .setValue(
372: Constants.PropertyDescriptor.CATEGORY,
373: com.sun.rave.designtime.base.CategoryDescriptors.ADVANCED);
374:
375: PropertyDescriptor prop_rendererType = new PropertyDescriptorBase(
376: "rendererType", beanClass, "getRendererType",
377: "setRendererType");
378: prop_rendererType
379: .setDisplayName(resources
380: .getString("UISelectMany_rendererType_DisplayName"));
381: prop_rendererType
382: .setShortDescription(resources
383: .getString("UISelectMany_rendererType_Description"));
384: prop_rendererType.setExpert(false);
385: prop_rendererType.setHidden(true);
386: prop_rendererType.setPreferred(false);
387: prop_rendererType
388: .setValue(
389: Constants.PropertyDescriptor.CATEGORY,
390: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
391:
392: PropertyDescriptor prop_rendersChildren = new PropertyDescriptorBase(
393: "rendersChildren", beanClass, "getRendersChildren",
394: null);
395: prop_rendersChildren
396: .setDisplayName(resources
397: .getString("UISelectMany_rendersChildren_DisplayName"));
398: prop_rendersChildren
399: .setShortDescription(resources
400: .getString("UISelectMany_rendersChildren_Description"));
401: prop_rendersChildren.setExpert(false);
402: prop_rendersChildren.setHidden(true);
403: prop_rendersChildren.setPreferred(false);
404: prop_rendersChildren
405: .setValue(
406: Constants.PropertyDescriptor.CATEGORY,
407: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
408:
409: PropertyDescriptor prop_required = new PropertyDescriptorBase(
410: "required", beanClass, "isRequired", "setRequired");
411: prop_required.setDisplayName(resources
412: .getString("UISelectMany_required_DisplayName"));
413: prop_required.setShortDescription(resources
414: .getString("UISelectMany_required_Description"));
415: prop_required.setExpert(false);
416: prop_required.setHidden(false);
417: prop_required.setPreferred(false);
418: attrib = new AttributeDescriptor("required", false, null,
419: true);
420: prop_required.setValue(
421: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
422: attrib);
423: prop_required
424: .setValue(
425: Constants.PropertyDescriptor.CATEGORY,
426: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
427:
428: PropertyDescriptor prop_selectedValues = new PropertyDescriptorBase(
429: "selectedValues", beanClass, "getSelectedValues",
430: "setSelectedValues");
431: prop_selectedValues
432: .setDisplayName(resources
433: .getString("UISelectMany_selectedValues_DisplayName"));
434: prop_selectedValues
435: .setShortDescription(resources
436: .getString("UISelectMany_selectedValues_Description"));
437: prop_selectedValues.setExpert(false);
438: prop_selectedValues.setHidden(false);
439: prop_selectedValues.setPreferred(false);
440: prop_selectedValues
441: .setValue(
442: Constants.PropertyDescriptor.CATEGORY,
443: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
444:
445: PropertyDescriptor prop_submittedValue = new PropertyDescriptorBase(
446: "submittedValue", beanClass, "getSubmittedValue",
447: "setSubmittedValue");
448: prop_submittedValue
449: .setDisplayName(resources
450: .getString("UISelectMany_submittedValue_DisplayName"));
451: prop_submittedValue
452: .setShortDescription(resources
453: .getString("UISelectMany_submittedValue_Description"));
454: prop_submittedValue.setExpert(false);
455: prop_submittedValue.setHidden(true);
456: prop_submittedValue.setPreferred(false);
457: prop_submittedValue
458: .setValue(
459: Constants.PropertyDescriptor.CATEGORY,
460: com.sun.rave.designtime.base.CategoryDescriptors.INTERNAL);
461:
462: PropertyDescriptor prop_validator = new PropertyDescriptorBase(
463: "validator", beanClass, "getValidator",
464: "setValidator");
465: prop_validator.setDisplayName(resources
466: .getString("UISelectMany_validator_DisplayName"));
467: prop_validator.setShortDescription(resources
468: .getString("UISelectMany_validator_Description"));
469: prop_validator
470: .setPropertyEditorClass(com.sun.rave.propertyeditors.ValidatorPropertyEditor.class);
471: prop_validator.setExpert(false);
472: prop_validator.setHidden(false);
473: prop_validator.setPreferred(false);
474: attrib = new AttributeDescriptor("validator", false, null,
475: true);
476: prop_validator.setValue(
477: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
478: attrib);
479: prop_validator
480: .setValue(
481: Constants.PropertyDescriptor.CATEGORY,
482: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
483:
484: PropertyDescriptor prop_value = new PropertyDescriptorBase(
485: "value", beanClass, "getValue", "setValue");
486: prop_value.setDisplayName(resources
487: .getString("UISelectMany_value_DisplayName"));
488: prop_value.setShortDescription(resources
489: .getString("UISelectMany_value_Description"));
490: prop_value
491: .setPropertyEditorClass(org.netbeans.modules.visualweb.faces.dt.std.ValueBindingPropertyEditor.class);
492: prop_value.setExpert(false);
493: prop_value.setHidden(false);
494: prop_value.setPreferred(false);
495: attrib = new AttributeDescriptor("value", false, null, true);
496: prop_value.setValue(
497: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
498: attrib);
499: prop_value
500: .setValue(
501: Constants.PropertyDescriptor.CATEGORY,
502: com.sun.rave.designtime.base.CategoryDescriptors.DATA);
503: prop_value.setValue("ignoreIsBound", "true");
504:
505: PropertyDescriptor prop_valueChangeListener = new PropertyDescriptorBase(
506: "valueChangeListener", beanClass,
507: "getValueChangeListener", "setValueChangeListener");
508: prop_valueChangeListener
509: .setDisplayName(resources
510: .getString("UISelectMany_valueChangeListener_DisplayName"));
511: prop_valueChangeListener
512: .setShortDescription(resources
513: .getString("UISelectMany_valueChangeListener_Description"));
514: prop_valueChangeListener
515: .setPropertyEditorClass(com.sun.rave.propertyeditors.MethodBindingPropertyEditor.class);
516: prop_valueChangeListener.setExpert(false);
517: prop_valueChangeListener.setHidden(false);
518: prop_valueChangeListener.setPreferred(false);
519: attrib = new AttributeDescriptor("valueChangeListener",
520: false, null, true);
521: prop_valueChangeListener.setValue(
522: Constants.PropertyDescriptor.ATTRIBUTE_DESCRIPTOR,
523: attrib);
524: prop_valueChangeListener
525: .setValue(
526: Constants.PropertyDescriptor.CATEGORY,
527: com.sun.rave.designtime.base.CategoryDescriptors.ADVANCED);
528:
529: List<PropertyDescriptor> propertyDescriptorList = new ArrayList<PropertyDescriptor>();
530: propertyDescriptorList.add(prop_attributes);
531: propertyDescriptorList.add(prop_childCount);
532: propertyDescriptorList.add(prop_children);
533: propertyDescriptorList.add(prop_converter);
534: propertyDescriptorList.add(prop_facets);
535: propertyDescriptorList.add(prop_family);
536: propertyDescriptorList.add(prop_id);
537: propertyDescriptorList.add(prop_immediate);
538: propertyDescriptorList.add(prop_localValue);
539: propertyDescriptorList.add(prop_localValueSet);
540: propertyDescriptorList.add(prop_parent);
541: propertyDescriptorList.add(prop_rendered);
542: propertyDescriptorList.add(prop_rendererType);
543: propertyDescriptorList.add(prop_rendersChildren);
544: propertyDescriptorList.add(prop_required);
545: propertyDescriptorList.add(prop_selectedValues);
546: propertyDescriptorList.add(prop_submittedValue);
547: propertyDescriptorList.add(prop_validator);
548: propertyDescriptorList.add(prop_value);
549: propertyDescriptorList.add(prop_valueChangeListener);
550:
551: propertyDescriptorList.addAll(Arrays.asList(super
552: .getPropertyDescriptors()));
553: propertyDescriptors = propertyDescriptorList
554: .toArray(new PropertyDescriptor[propertyDescriptorList
555: .size()]);
556: return propertyDescriptors;
557:
558: } catch (IntrospectionException e) {
559: e.printStackTrace();
560: return null;
561: }
562:
563: }
564:
565: }
|