403Webshell
Server IP : 209.205.66.10  /  Your IP : 216.73.216.173
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux ammon 5.15.0-186-generic #196-Ubuntu SMP Sat Jun 20 16:09:34 UTC 2026 x86_64
User :  ( 1006)
PHP Version : 8.5.8
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/libreoffice/program/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/libreoffice/program/libsvgfilterlo.so
ELF>@@2
@8@ȼȼ���utut@@@����P

P
P
�#X&
-
-
�����  ���$$S�td���  P�td�[�[�[Q�tdR�tdP

P
P
��GNU�GNU�~��x�P��E*�\?�ɓ�.��	XKR��`@H������v���}��d������X���|���C:�ӟHM�Dc�q5��T@��k���b�H@"�g=++{0s/�/:!-F.0�$k1�<�I��>�=�'YH21��� "L+��$�)�:1�U �3k2 5-&�!�3�&�;H'
��6�i:EA5�9-? F"]�*,�3�S0u�5:]�,f)��#��!�>�=*�0�.-�/����2�87
9R"='�V:4>�-Is
�6%2�461S3 �&}tE�"�a��� 	6�1��%�4`
~bS4���1R$E8E�2�3�>�J-8J7�.�5����8(7�4�2n>(�+	7]=h7DvZ ��#�1�-�\~��.��6r�h"VY8�&�"&�|*{/h3�8l� q(���2��9��	�(��+8
�M%�4�*M�k6k �#��9�Z1��=�+/S
�<O({`�2k=3W;{�3�3��8V.;�R�2:�
e���"%;�7AX'f�9��7�.�(�;=�>��[�>..�:i�d9�1�054l5�!�|9�'�'�+�~ �."�6V�S<J,�0VL�-��4�)F!�;>�5�/}+, j
,�:�;b
�	Tz
s.�80 �$�
;u0tx$z4 *!�(<-v-��
<�/�	F6�'�<C)��<?!A$$M/*��8��#4&�3�Y#�3Q-�-e� 9�0��?���#WI*U>�� �
!�!
�!�!
!pG	`U�0!�G)"6�P�%!�!
�	�<
 �
!@G&�"�=�"�m��!#
V"�hg�! J u"�n��"P��__gmon_start___ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_ZN4cppu11OWeakObject7releaseEv_ZN4cppu11OWeakObject7acquireEv_ZN4cppu20WeakImplHelper_queryERKN3com3sun4star3uno4TypeEPNS_10class_dataEPvPNS_11OWeakObjectE__cxa_guard_acquire__cxa_guard_release__stack_chk_failrtl_uString_newFromLiteraluno_any_destruct__cxa_begin_catch__cxa_end_catch_Unwind_Resume__gxx_personality_v0_ZN4cppu15supportsServiceEPN3com3sun4star4lang12XServiceInfoERKN3rtl8OUStringEtypelib_static_type_init__cxa_allocate_exception_ZNSt9bad_allocD1Ev_ZTISt9bad_alloc_ZTVSt9bad_alloc__cxa_throwuno_type_sequence_constructrtl_uString_releasetypelib_static_type_getByTypeClasstypelib_static_sequence_type_inittypelib_typedescription_newStructtypelib_typedescription_registertypelib_typedescription_releasertl_allocateMemorytypelib_typedescriptionreference_newtypelib_typedescription_newEnum_ZN4cppu23WeakImplHelper_getTypesEPNS_10class_dataE_ZdlPvm_ZN11GDIMetaFileD1Evmemsetuno_type_sequence_destroy_ZN4cppu11OWeakObjectD2Evrtl_freeMemorytypelib_typedescription_newMIInterfacetypelib_typedescriptionreference_releaseosl_getGlobalMutexosl_acquireMutexosl_releaseMutextypelib_typedescription_newInterfaceMethodtypelib_typedescription_newrtl_uString_newfilter_SVGFilter_get_implementationrtl_uString_acquirertl_uString_newConcatAsciiLrtl_ustr_valueOfUInt64strlenrtl_convertStringToUStringrtl_uString_ensureCapacitymemcpycppu_unsatisfied_iquery_msg_ZTIN3com3sun4star3uno16RuntimeExceptionE__cxa_free_exceptionrtl_uString_alloc_ZTIN3com3sun4star3uno19DeploymentExceptionE__cxa_rethrow_ZN11SvxDrawPage14getUnoTunnelIdEvuno_type_sequence_realloc_ZN3utl15UcbStreamHelper12CreateStreamERKN3com3sun4star3uno9ReferenceINS3_2io12XInputStreamEEEb_ZN8SvStream13remainingSizeEvuno_type_sequence_reference2One_ZN8SvStream9ReadBytesEPvm_ZN6ZCodecC1Emm_ZN6ZCodec16BeginCompressionEib_ZN6ZCodec4ReadER8SvStreamPhj_ZN6ZCodec14EndCompressionEv_ZN6ZCodecD1Ev_Znwm__libc_single_threaded_ZSt20__throw_length_errorPKcrtl_ustr_asciil_reverseEquals_WithLengthuno_type_assignDatacppu_unsatisfied_iset_msg_ZSt28__throw_bad_array_new_lengthv_ZSt17__throw_bad_allocvrtl_ustr_hashCode_WithLengthrtl_ustr_reverseCompare_WithLengthuno_any_construct_ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm_ZN3utl15MediaDescriptorC1ERKN3com3sun4star3uno8SequenceINS3_5beans13PropertyValueEEE_ZN3utl15MediaDescriptor16PROP_INPUTSTREAME_ZN11Application13GetSolarMutexEv_ZN11Application14GetFocusWindowEv_ZN3vcl6Window9EnterWaitEv_ZN10comphelper14LibreOfficeKit8isActiveEv_ZN3vcl6Window9LeaveWaitEv_ZN13GraphicFilterC1Eb_ZN7GraphicC1Ev_ZN13GraphicFilter13ImportGraphicER7GraphicRKN3rtl8OUStringER8SvStreamtPt24GraphicFilterImportFlagsPK11WmfExternal_ZN13GraphicFilterD1Ev_ZNK7Graphic11GetPrefSizeEv_ZNK7Graphic20getVectorGraphicDataEv_ZN10SdrGrafObjC1ER8SdrModelRK7Graphic_ZNK7Graphic14GetPrefMapModeEv_ZNK7MapMode10GetMapUnitEv_ZN12OutputDevice12LogicToLogicEl7MapUnitS0__ZNK7SdrPage7GetSizeEv_ZNK7SdrPage13GetLeftBorderEv_ZNK7SdrPage14GetRightBorderEv_ZNK7SdrPage14GetUpperBorderEv_ZNK7SdrPage14GetLowerBorderEv_ZN9SdrObject11SetSnapRectERKN5tools9RectangleE_ZN7MapModeD1Ev_ZN9SdrObject4FreeERPS__ZNK17VectorGraphicData22getPrimitive2DSequenceEv_ZTVN12drawinglayer11primitive2d20Primitive2DContainerE_ZN12drawinglayer11primitive2d20Primitive2DContainerD1Evrtl_uString_assign_ZTVN10__cxxabiv117__class_type_infoE_ZTSN3com3sun4star3uno16RuntimeExceptionE_ZTVN10__cxxabiv120__si_class_type_infoE_ZTIN3com3sun4star3uno9ExceptionE_ZTSN3com3sun4star3uno9ExceptionE_ZTSN3com3sun4star3uno19DeploymentExceptionE_ZTVN10__cxxabiv121__vmi_class_type_infoE_ZTIN4cppu11OWeakObjectE_ZTSN3com3sun4star2io11IOExceptionE_ZTIN3com3sun4star2io11IOExceptionE_ZN4cppu11OWeakObject12queryAdapterEv__cxa_pure_virtual_ZN11SvXMLExport12AddAttributeEtRKN3rtl8OUStringES3___dynamic_castrtl_uStringbuffer_insert_ZN18SvXMLElementExportC1ER11SvXMLExporttPKcbb_ZN18SvXMLElementExportD1Ev_ZN11SvXMLExportD2Evrtl_uString_newFromStr_WithLength__cxa_guard_abort_ZN11GDIMetaFileC1ERKS_rtl_ustr_valueOfDoublertl_ustr_valueOfInt32_ZNK11GDIMetaFile9GetActionEmrtl_ustr_lastIndexOfAscii_WithLength_ZN11SvXMLExport30getInterfaceToIdentifierMapperEv_ZN10comphelper36UnoInterfaceToUniqueIdentifierMapper17registerReferenceERKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEE_ZNK10comphelper36UnoInterfaceToUniqueIdentifierMapper13getIdentifierERKN3com3sun4star3uno9ReferenceINS4_10XInterfaceEEErtl_uString_newReplace_ZN10comphelper26getProcessComponentContextEvrtl_uString_newFromAscii_ZN9salhelper21SimpleReferenceObjectnwEm_ZN6xmloff18AnimationsExporterC1ER11SvXMLExportRKN3com3sun4star3uno9ReferenceINS5_5beans12XPropertySetEEE_ZN6xmloff18AnimationsExporter7prepareERKN3com3sun4star3uno9ReferenceINS3_10animations14XAnimationNodeEEE_ZN6xmloff18AnimationsExporter16exportAnimationsERKN3com3sun4star3uno9ReferenceINS3_10animations14XAnimationNodeEEE_ZN9salhelper21SimpleReferenceObjectdlEPv_ZN7GraphicC1ERKN3com3sun4star3uno9ReferenceINS2_7graphic8XGraphicEEE_ZNK7GraphiceqERKS__ZNK7Graphic11GetChecksumEv_ZN7GraphicC1ERKS__ZN7MapModeC1E7MapUnit_ZNK7MapMode9GetOriginEv_ZN12OutputDevice12LogicToLogicERK5PointRK7MapModeS5__ZN12OutputDevice12LogicToLogicERK4SizeRK7MapModeS5__ZN10SdrGrafObjC1ER8SdrModelRK7GraphicRKN5tools9RectangleE_Z21GetXShapeForSdrObjectP9SdrObjectuno_type_any_construct_ZNSt10_HashtableImSt4pairIKmSt10unique_ptrI11GDIMetaFileSt14default_deleteIS3_EEESaIS7_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_rtl_math_approxEqualrtl_ustr_valueOfInt64_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base_ZN8FractionC1Ell_ZNK8FractioncvdEvrtl_math_round_ZNSt8_Rb_treeIDsDsSt9_IdentityIDsESt4lessIDsESaIDsEE24_M_get_insert_unique_posERKDs_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base_ZNSt8_Rb_treeIDsDsSt9_IdentityIDsESt4lessIDsESaIDsEE16_M_insert_uniqueIRKDsEESt4pairISt17_Rb_tree_iteratorIDsEbEOT__ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS__ZN11SvXMLExportC2ERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEERKN3rtl8OUStringEsN6xmloff5token12XMLTokenEnumE16SvXMLExportFlags_ZN11SvXMLExport13SetDocHandlerERKN3com3sun4star3uno9ReferenceINS2_3xml3sax16XDocumentHandlerEEE_ZN10comphelper17SequenceAsHashMapC1ERKN3com3sun4star3uno8SequenceINS3_5beans13PropertyValueEEE_ZN6xmloff5token11GetXMLTokenENS0_12XMLTokenEnumE_ZN17SvXMLNamespaceMap3AddERKN3rtl8OUStringES3_trtl_bootstrap_getrtl_uStringbuffer_newFromStr_WithLengthrtl_uStringBuffer_makeStringAndClear__cxa_atexitrtl_uStringbuffer_insert_asciirtl_uString_new_WithLength_ZNK8Outliner11GetLanguageEii_ZN17SvNumberFormatterC1ERKN3com3sun4star3uno9ReferenceINS3_17XComponentContextEEEN4o3tl10strong_intIt15LanguageTypeTagEE_ZN4Date14setDateFromDMYEtts_ZN12SvxDateField12GetFormattedERK4Date13SvxDateFormatR17SvNumberFormatterN4o3tl10strong_intIt15LanguageTypeTagEE_ZN4Date6SetDayEt_ZN4Date8SetMonthEtrtl_uString_newTrim_ZNK11GDIMetaFile13GetActionSizeEv_ZN13INetURLObject12setAbsURIRefERKN3rtl8OUStringENS_15EncodeMechanismEtb9FSysStyle_ZN18SvXMLElementExportC1ER11SvXMLExporttRKN3rtl8OUStringEbb_ZNSt10_HashtableImSt4pairIKmSt10unique_ptrI11GDIMetaFileSt14default_deleteIS3_EEESaIS7_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb0ELb0ELb1EEEE9_M_rehashEmRS1__ZNSt8__detail9_Map_baseImSt4pairIKmSt10unique_ptrI11GDIMetaFileSt14default_deleteIS4_EEESaIS8_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_rtl_ustr_compare_WithLength_ZNK8BitmapEx11GetChecksumEv_ZN8BitmapExC1ERK6Bitmap_ZN6BitmapD1Ev_ZN11GDIMetaFileC1Ev_ZN3utl8TempFileC1EPKN3rtl8OUStringEb_ZNK3utl8TempFile6GetURLEv_ZN3utl8TempFile9GetStreamE10StreamMode_ZN9SvmReaderC1ER8SvStream_ZN9SvmReader4ReadER11GDIMetaFileP16ImplMetaReadData_ZN3utl8TempFileD1Ev_ZN11GDIMetaFile9AddActionERKN3rtl9ReferenceI10MetaActionEErtl_string_newrtl_convertUStringToStringrtl_string_allocrtl_string_release_ZN17MetaCommentActionC1ERKN3rtl7OStringEiPKhj_ZN20MetaBmpExScaleActionC1ERK5PointRK4SizeRK8BitmapEx_ZN7MapModeaSERKS__ZN18MetaBmpScaleActionC1ERK5PointRK4SizeRK6Bitmap_ZNK6Bitmap12GetSizePixelEv_ZN9SdrObject22getSdrObjectFromXShapeERKN3com3sun4star3uno9ReferenceINS3_10XInterfaceEEE_ZN15SdrExchangeView13GetObjGraphicERK9SdrObject_ZNK7Graphic7GetTypeEv_ZNK7Graphic14GetGDIMetaFileEv_ZNK7Graphic11GetBitmapExERK27GraphicConversionParameters_ZN7GraphicaSEOS_rtl_uString_newConcatrtl_str_compareIgnoreAsciiCase_WithLength_ZNK8SdrModel15GetDrawOutlinerEPK10SdrTextObj_ZNK8SdrModel18GetActiveOutlinersEv_ZN3utl15UcbStreamHelper12CreateStreamERKN3rtl8OUStringE10StreamModeN3com3sun4star3uno9ReferenceINS8_3awt7XWindowEEE_ZN3utl20OOutputStreamWrapperC1ER8SvStream_ZTI11SvXMLExport_ZN11SvXMLExport17SetBodyAttributesEv_ZN11SvXMLExport11ExportMeta_Ev_ZN11SvXMLExport14ExportScripts_Ev_ZN11SvXMLExport16ExportFontDecls_Ev_ZN11SvXMLExport25CreateTextParagraphExportEv_ZN11SvXMLExport17CreateShapeExportEv_ZN11SvXMLExport19CreateAutoStylePoolEv_ZN11SvXMLExport16CreatePageExportEv_ZN11SvXMLExport23CreateFontAutoStylePoolEv_ZN11SvXMLExport15GetViewSettingsERN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport24GetConfigurationSettingsERN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport27GetDocumentSpecificSettingsERSt6vectorINS_13SettingsGroupESaIS1_EE_ZN11SvXMLExport17collectAutoStylesEv_ZN11SvXMLExport17setSourceDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE_ZN11SvXMLExport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZN11SvXMLExport6cancelEv_ZN11SvXMLExport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE_ZN11SvXMLExport7getNameEv_ZN11SvXMLExport7setNameERKN3rtl8OUStringE_ZN11SvXMLExport21getImplementationNameEv_ZN11SvXMLExport15supportsServiceERKN3rtl8OUStringE_ZN11SvXMLExport24getSupportedServiceNamesEv_ZN11SvXMLExport12getSomethingERKN3com3sun4star3uno8SequenceIaEE_ZN11SvXMLExport12addDataStyleEib_ZN11SvXMLExport16exportDataStylesEv_ZN11SvXMLExport20exportAutoDataStylesEv_ZNK11SvXMLExport16getDataStyleNameEib_ZN11SvXMLExport20exportAnnotationMetaERKN3com3sun4star3uno9ReferenceINS2_7drawing6XShapeEEE_ZN11SvXMLExport14DisposingModelEv_ZThn40_N11SvXMLExport6filterERKN3com3sun4star3uno8SequenceINS2_5beans13PropertyValueEEE_ZThn40_N11SvXMLExport6cancelEv_ZThn48_N11SvXMLExport21getImplementationNameEv_ZThn48_N11SvXMLExport15supportsServiceERKN3rtl8OUStringE_ZThn48_N11SvXMLExport24getSupportedServiceNamesEv_ZThn56_N11SvXMLExport17setSourceDocumentERKN3com3sun4star3uno9ReferenceINS2_4lang10XComponentEEE_ZThn64_N11SvXMLExport10initializeERKN3com3sun4star3uno8SequenceINS3_3AnyEEE_ZThn72_N11SvXMLExport7getNameEv_ZThn72_N11SvXMLExport7setNameERKN3rtl8OUStringE_ZThn80_N11SvXMLExport12getSomethingERKN3com3sun4star3uno8SequenceIaEE_ZN5tools11PolyPolygonC1Et_ZNK12OutputDevice14GetTextOutlineERN5tools11PolyPolygonERKN3rtl8OUStringE_ZN5tools11PolyPolygon5ScaleEdd_ZNK12OutputDevice16GetTextBoundRectERN5tools9RectangleERKN3rtl8OUStringEiiimN4o3tl4spanIKiEEPK15SalLayoutGlyphs_ZNK12OutputDevice12GetTextWidthERKN3rtl8OUStringEiiPKN3vcl4text15TextLayoutCacheEPK15SalLayoutGlyphs_ZN5tools11PolyPolygonD1Evrtl_uString_getToken_ZN16VclReferenceBase11disposeOnceEv_ZNK3vcl4Font13GetFamilyNameEv_ZNK3vcl4Font9GetWeightEv_ZNK3vcl4Font9GetItalicEv_ZN13VirtualDeviceC1EPK12OutputDevice12DeviceFormatS3_10OutDevType_ZN12OutputDevice12EnableOutputEb_ZN12OutputDevice4PushEN3vcl9PushFlagsErtl_uString_newFromSubString_ZN3vcl9unohelper19CreateBreakIteratorEv_ZN11Application11GetSettingsEv_ZNK11AllSettings14GetLanguageTagEv_ZNK11LanguageTag9getLocaleEb_ZN12OutputDevice3PopEv_ZN3vcl4FontC1ERKS0__ZN3vcl4Font11SetFontSizeERK4Size_ZN3vcl4Font12SetAlignmentE9TextAlign_ZN12OutputDevice10SetMapModeERK7MapMode_ZN12OutputDevice7SetFontERKN3vcl4FontE_ZN3vcl4Font9GetWeightEv_ZN3vcl4Font9GetItalicEv_ZNK12OutputDevice13GetFontMetricEv_ZN10FontMetricD1Ev_ZN5tools7PolygonC1ERKNS_9RectangleE_ZN5tools11PolyPolygonC1ERKNS_7PolygonE_ZN5tools7PolygonD1Ev_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base_ZN3vcl4FontD1Ev_ZN3vcl4FontC1Ev_ZN3vcl4Font13SetFamilyNameERKN3rtl8OUStringE_ZN3vcl4Font9SetWeightE10FontWeight_ZN3vcl4Font9SetItalicE10FontItalic_ZN8GradientD1Ev_ZNK8Gradient8GetStyleEv_ZNK8Gradient13GetStartColorEv_ZNK8Gradient11GetEndColorEv_ZNK8Gradient8GetAngleEv_ZN5tools7Polygon6RotateERK5PointN4o3tl10strong_intIs11FractionTagILi10EEEE_ZNK5tools7Polygon12GetBoundRectEv_ZNK8Gradient17GetStartIntensityEv_ZNK8Gradient15GetEndIntensityEv_ZNK8Gradient7GetOfsXEv_ZNK8Gradient7GetOfsYEv_ZNK8Gradient9GetBorderEv_ZN5tools7PolygonC1Et_ZN5tools7PolygonixEtsqrt_ZN3vcl4Font8GetPitchEv_ZN3vcl4Font13GetFamilyTypeEv_ZNK3vcl4FonteqERKS0__ZN3vcl4FontaSERKS0__ZNK3vcl4Font13GetFontHeightEv_ZNK3vcl4Font12GetUnderlineEv_ZNK3vcl4Font12GetStrikeoutEv_ZN3vcl4Font13SetFontHeightEl_ZNK5tools7Polygon7GetSizeEv_ZN5tools7PolygonaSEOS0__ZNK5tools7Polygon8GetPointEt_ZNK5tools7Polygon8GetFlagsEt_ZN5tools7Polygon8SetFlagsEt9PolyFlags_ZN5tools7PolygonC1Ev_ZN5tools11PolyPolygonaSEOS0__ZNK5tools11PolyPolygon5CountEv_ZNK5tools11PolyPolygon9GetObjectEt_ZN5tools11PolyPolygon6InsertERKNS_7PolygonEtrtl_uStringbuffer_ensureCapacity_ZN9SvmWriter11GetChecksumERK11GDIMetaFile_ZNK8LineInfo9IsDefaultEv_ZN5tools11PolyPolygonaSERKS0__ZNK5tools11PolyPolygon12GetBoundRectEv_ZNK8Gradient12GetBoundRectERKN5tools9RectangleERS1_R5Point_ZNK8Gradient8GetStepsEvfilter_SVGWriter_get_implementationrtl_ustr_shortenedCompare_WithLengthrtl_ustr_shortenedCompareIgnoreAsciiCase_WithLength_ZN11SvXMLExport20GetRelativeReferenceERKN3rtl8OUStringEmemmove_ZN3vcl4FontC1EOS0__ZN3vcl4FontaSEOS0__ZNK3vcl4Font14GetOrientationEv_ZN7MapModeC1Ev_ZN7MapModeaSEOS__ZNK3vcl4Font12GetAlignmentEv_ZNK12OutputDevice12GetTextArrayERKN3rtl8OUStringEPSt6vectorIiSaIiEEiiPKN3vcl4text15TextLayoutCacheEPK15SalLayoutGlyphs_ZNK3vcl4Font8IsShadowEv_ZNK3vcl4Font9IsOutlineEv_ZNK3vcl4Font9GetReliefEv_ZNK8BitmapEx7IsEmptyEv_ZN8BitmapExC1ERKS__ZN8BitmapEx4CropERKN5tools9RectangleE_ZN14SvMemoryStreamC1Emm_ZN7GraphicC1ERK8BitmapEx_ZN16GraphicConverter6ExportER8SvStreamRK7Graphic17ConvertDataFormat_ZN8SvStream5FlushEv_ZN10comphelper6Base646encodeERN3rtl14OUStringBufferERKN3com3sun4star3uno8SequenceIaEE_ZN14SvMemoryStreamD1Ev_ZNK7Graphic14GetBitmapExRefEv_ZNK7Graphic10GetGfxLinkEv_ZNK7GfxLink7GetDataEv_ZN8SvStream10WriteBytesEPKvmrtl_str_shortenedCompareIgnoreAsciiCase_WithLengthrtl_string_getToken_ZNK3vcl6Region16GetAsPolyPolygonEv_ZN3vcl6RegionD1Ev_ZN5tools7PolygonC1ERKNS_9RectangleERK5PointS6_9PolyStyleb_ZNK12OutputDevice12PixelToLogicERK4Size_ZN5tools7PolygonaSERKS0__ZN14SvMemoryStreamC1EPvm10StreamMode_ZN14SvtGraphicFillC1Ev_Z18ReadSvtGraphicFillR8SvStreamR14SvtGraphicFill_ZNK14SvtGraphicFill7getPathERN5tools11PolyPolygonE_ZN16SvtGraphicStrokeC1Ev_Z20ReadSvtGraphicStrokeR8SvStreamR16SvtGraphicStroke_ZNK16SvtGraphicStroke13getStartArrowERN5tools11PolyPolygonE_ZNK16SvtGraphicStroke11getEndArrowERN5tools11PolyPolygonE_ZNK16SvtGraphicStroke7getPathERN5tools7PolygonE_ZNK16SvtGraphicStroke12getDashArrayERSt6vectorIdSaIdEE_ZN8GradientC1ERKS__ZN5tools11PolyPolygonixEt_ZNK5tools7Polygon7IsEqualERKS0__ZN12OutputDevice15AddHatchActionsERKN5tools11PolyPolygonERK5HatchR11GDIMetaFile_ZN12OutputDevice18AddGradientActionsERKN5tools9RectangleERK8GradientR11GDIMetaFile_ZN8Gradient13SetStartColorERK5Color_ZN8Gradient17SetStartIntensityEt_ZN8Gradient11SetEndColorERK5Color_ZN8Gradient15SetEndIntensityEt_ZN11GDIMetaFile5ScaleEdd_ZN11GDIMetaFile4MoveEll_ZN7MapModeC1ERKS__ZNK7MapMode9GetScaleXEv_ZNK7MapMode9GetScaleYEv_ZN8FractionmLERKS__ZN7MapMode9SetScaleXERK8Fraction_ZN7MapMode9SetScaleYERK8Fraction_ZN7MapMode9SetOriginERK5Pointlibmergedlo.solibi18nlangtag.solibuno_salhelpergcc3.so.3libuno_cppuhelpergcc3.so.3libuno_cppu.so.3libuno_sal.so.3libstdc++.so.6libm.so.6libgcc_s.so.1libc.so.6GCC_3.0GLIBC_2.2.5UDK_3_0_0LIBO_UDK_3.9GLIBC_2.32GLIBC_2.4GLIBC_2.14GLIBCXX_3.4.18GLIBCXX_3.4.29CXXABI_1.3.9GLIBCXX_3.4CXXABI_1.3LIBO_UDK_5.1LIBO_UDK_4.0UDK_3.8LIBO_UDK_5.3UDK_3.1LIBO_UDK_3.6LIBO_UDK_4.1UDK_3.3LIBO_UDK_4.4$ORIGIN	


	
					
�? P&y�?�? ui	�?K? �})�?e?0YQ��?�})	�?�?P����?ii
@ui	�?���@�?`h��@y��,@yѯ;@t)�H@ӯkT@
�?�QS�_@PT�l@H&�	y@SS��@F&�	�@A&�	�@VQ�
�@QT�
�@C&�	�@�})�?�?TT��@A&�	�@C&�	�@�})�?P
�?X
�?h
�&
p
P�x
���
���
���
���
���
�&
�
���
���
0��
���
@��
��
'
�
���
`�
��
 �
@�
�� 
�B(
�70
�%8
@
 H
�P
��X
��`
 �h
 �p
��x
���
 ��
 ��
 ��
@w�
�[�
�!�
��
�
 �
�
 �
�
 �
�
`�
�
�
�
��
�
`r
�
�]
�
�M

`?

�1



 
 
��	(
��	0
��	8
�	@
��	H
`�	P
��	X
��	`
@�	h
�y	p
d	x
�@	�
`,	�
�	�
`	�
���
���
���
���
��
���
��
��
`}�
�o�
�b�
`T�
�E 
8 
( 
@ 
`
  
@�( 
`�0 
@�8 
��@ 
@�H 
`�P 
�X 
 �` 
�wh 
`ep 
`Ux 
�B� 
�1� 
�$� 
�� 
 � 
��� 
��� 
@�� 
 �� 
`�� 
�� 
�� 
`�� 
�|� 
�n� 
�]� 
�O!
�C!
�7!
�(!
 !
(!
�0!
�8!
@�@!
��H!
�P!
�X!
 �`!
��h!
@�p!
�}x!
@p�!
�k�!
 G�!
�G�!
�!
�!
 H"
�!
"
`H"
�!
("
�H0"
�!
@"
�HH"
�!
X"
 I`"
�!
p"
`I�"
�!
�"
�!
�"
"
�"
 "
�"
8"
�"
P"
�"
�I#
h"
(#
h"
0#
��8#
�@#
 �`#
��h#
P�x#
h"
�#
 ��#
@��#
���#
@��#
��#
h"
�#
��#
0��#
p��#
h"
�#
@��#
`�$
`�$
h"
 $
��($
P�0$
P�H$
h"
P$
��X$
p�`$
@�x$
h"
�$
`��$
 ��$
0��$
�"
�$
���$
��$
 ��$
�J�$
 Q�$
���$
P�%
��%
�?%
PG%
�G %
a(%
0@0%
@8%
@@H%
�"
P%
 �X%
@�`%
��h%
@�p%
��%
�"
�%
��%
0��%
p��%
Ќ�%
�F�%
�"
�%
@��%
`��%
`��%
�G�%
�"
�%
���%
P�&
P�&
�F&
�"
 &
��(&
p�0&
@�8&
peH&
�"
P&
`�X&
 �`&
0�h&
 Gp&
Gx&
PA�&
PO�&
�f�&
g�&
�&
�&
@g�&
�&
�&
pg�&
�&
�&
�g'
�&
'
�g'
�&
('
�&
0'
��H'
��h'
�&
p'
�x'
���'
���'
�&
�'
�A�'
��'
���'
@��'
���'
0H�'
�F(
pA(
�A (
�A((
�A�(
�A)
�&
)
PD)
p� )
�()
�H0)
0G@)
�&
H)
�DP)
`�X)
�x)
�&
�)
0F�)
P��)
��)
�&
�)
C�)
@��)
Ѝ�)
�&
�)
�E�)
0�*
��*
�&
 *
pB(*
 �0*
��P*
�&
X*
�C`*
�h*
���*
�Z�*
�!
�*
�Z�*
�!
�*
x*
�*
P"
�*
8[�*
�*
+
�*
+
�+
P  +
�@+
�!H+
@!X+
�*
`+
h+
� p+
�x+
0"�+
� �+
�*
�+
p�+
p �+
��+
�*
�+
��+
` �+
�,
�*
,
�,
P ,
�(,
��0,
��8,
�!@,
@!H,
@P,
0�X,
�`,
��p,
�*
x,
�,
� �,
��,
0"�,
� �,
�*
�,
p�,
p �,
��,
��,
�*
�,
��,
` �,
��,
p�-
��-
`��:
�:
�;
���;
��;
P��;
���;
��;
��=
���=
��=
P��=
PI�=
�G�=
�G�=
��@
� �@
��@
��!
i�!
i�&
i�!
��!
��!
��!
�"
� "
�8"
�P"
��"
�#
��&
��&
��&
��&
��&
�'
�x*
��*
��!
��!
�#
�0<
��!
��!
��!
��/
�(<
�h"
J�*
J�"
��*
�#
�H#
c�$
c�'
c(+
c ,
c�#
)�#
)$
)8$
)h$
)�$
)�$
)�$
)8'
)@'
)�'
)�+
)�+
)�+
)�+
)�&
��'
��'
n(
�(
N0(
h8(
�@(
QH(
#P(
JX(
`(
�h(
p(
�x(
-�(
q�(
2�(
��(
b�(
�(
!�(
`�(
�(
��(
��(
��(
U�(

�(
��(
b`)
Lh)
$�)
6�)
T�)
��)
�*
�8*
@*
!p*
<�/
�/
)�/
@�/
p�/
t�/
��/
��/
��/
��/
�/
= <
�8<
�0
 0
(0
00
80
@0
H0
P0
	X0

`0
h0
p0

x0
�0
�0
�0
�0
�0
�0
�0
�0
�0
�0
�0
�0
�0
�0
�0
 �0
"1
%1
&1
'1
( 1
*(1
+01
,81
.@1
/H1
0P1
1X1
3`1
4h1
5p1
6x1
7�1
8�1
9�1
:�1
;�1
<�1
=�1
>�1
?�1
A�1
B�1
C�1
D�1
E�1
F�1
G�1
H2
I2
K2
M2
O 2
P(2
Q02
R82
S@2
UH2
VP2
WX2
X`2
Yh2
Zp2
[x2
\�2
]�2
^�2
_�2
`�2
a�2
c�2
d�2
e�2
f�2
g�2
h�2
j�2
k�2
l�2
m�2
n3
o3
r3
s3
u 3
v(3
w03
x83
y@3
zH3
{P3
|X3
}`3
~h3
�p3
�x3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
��3
�4
�4
�4
�4
� 4
�(4
�04
�84
�@4
�H4
�P4
�X4
�`4
�h4
�p4
�x4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
��4
�5
�5
�5
�5
� 5
�(5
�05
�85
�@5
�H5
�P5
�X5
�`5
�h5
�p5
�x5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
��5
�6
�6
�6
�6
� 6
�(6
�06
�86
�@6
�H6
�P6
�X6
�`6
�h6
�p6
�x6
��6
��6
��6
��6
��6
��6
��6
��6
��6
��6
��6
��6
��6
�6
�6
�6
7
7
7
7
 7
	(7

07
87
@7
H7
P7
X7
`7
h7
p7
x7
�7
�7
�7
�7
�7
�7
�7
�7
�7
�7
 �7
"�7
#�7
$�7
%�7
&�7
'8
(8
*8
+8
, 8
-(8
.08
/88
0@8
1H8
2P8
3X8
4`8
5h8
7p8
8x8
9�8
:�8
;�8
>�8
?�8
@�8
A�8
B�8
C�8
D�8
E�8
F�8
G�8
H�8
I�8
K�8
L9
M9
N9
O9
P 9
R(9
S09
T89
V@9
WH9
XP9
YX9
Z`9
[h9
\p9
]x9
^�9
_�9
a�9
d�9
e�9
f�9
g�9
i�9
j�9
k�9
l�9
m�9
o�9
p�9
q�9
r�9
s:
t:
u:
v:
w :
x(:
y0:
z8:
{@:
|H:
}P:
~X:
`:
�h:
�p:
�x:
��:
��:
��:
��:
���H��H��oH��t��H����5�o�%�o��h�������h��������h�������h�������h�������h�������h�������h��q������h��a������h	��Q������h
��A������h��1������h��!������h
��������h��������h������h�������h��������h�������h�������h�������h�������h�������h��q������h��a������h��Q������h��A������h��1������h��!������h��������h��������h������h �������h!��������h"�������h#�������h$�������h%�������h&�������h'��q������h(��a������h)��Q������h*��A������h+��1������h,��!������h-��������h.��������h/������h0�������h1��������h2�������h3�������h4�������h5�������h6�������h7��q������h8��a������h9��Q������h:��A������h;��1������h<��!������h=��������h>��������h?������h@�������hA��������hB�������hC�������hD�������hE�������hF�������hG��q������hH��a������hI��Q������hJ��A������hK��1������hL��!������hM��������hN��������hO������hP�������hQ��������hR�������hS�������hT�������hU�������hV�������hW��q������hX��a������hY��Q������hZ��A������h[��1������h\��!������h]��������h^��������h_������h`�������ha��������hb�������hc�������hd�������he�������hf�������hg��q������hh��a������hi��Q������hj��A������hk��1������hl��!������hm��������hn��������ho������hp�������hq��������hr�������hs�������ht�������hu�������hv�������hw��q������hx��a������hy��Q������hz��A������h{��1������h|��!������h}��������h~��������h������h��������h���������h��������h��������h��������h��������h��������h���q������h���a������h���Q������h���A������h���1������h���!������h���������h���������h�������h��������h���������h��������h��������h��������h��������h��������h���q������h���a������h���Q������h���A������h���1������h���!������h���������h���������h�������h��������h���������h��������h��������h��������h��������h��������h���q������h���a������h���Q������h���A������h���1������h���!������h���������h���������h�������h�������h�������h������h������h������h������h������h���q���h���a���h���Q���h���A���h���1���h���!���h������h������h�������h�������h�������h������h������h������h������h������h���q���h���a���h���Q���h���A���h���1���h���!���h������h������h�������h�������h�������h������h������h������h������h������h���q���h���a���h���Q���h���A���h���1���h���!���h������h������h�������h�������h�������h������h������h������h������h������h���q���h���a���h���Q���h���A���h���1���h���!���h������h������h�������h�������h�������h������h������h������h������h������h���q���h���a���h���Q���h���A���h���1���h���!���h������h������h��������h�������h�������h������h������h������h������h������h��q����h��a����h	��Q����h
��A����h��1����h��!����h
������h������h�������h�������h�������h������h������h������h������h������h��q����h��a����h��Q����h��A����h��1����h��!����h������h������h�������h �������h!�������h"������h#������h$������h%������h&������h'��q����h(��a����h)��Q����h*��A����h+��1����h,��!����h-������h.������h/�������h0�������h1�������h2������h3������h4������h5������h6������h7��q����h8��a����h9��Q����h:��A����h;��1����h<��!����h=������h>������h?�������h@�������hA�������hB������hC������hD������hE������hF������hG��q����hH��a����hI��Q����hJ��A����hK��1����hL��!����hM������hN������hO�������hP��������%UZD���%�ZD���%�ZD���%�ZD���%�ZD���%�ZD���%�ZD���%�ZD���%�ZD���%}ZD���%uZD���%mZD���%eZD���%]ZD���%UZD���%MZD���%EZD���%=ZD���%5ZD���%-ZD���%%ZD���%ZD���%ZD���%
ZD���%ZD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%�YD���%}YD���%uYD���%mYD���%eYD���%]YD���%UYD���%MYD���%EYD���%=YD���%5YD���%-YD���%%YD���%YD���%YD���%
YD���%YD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%�XD���%}XD���%uXD���%mXD���%eXD���%]XD���%UXD���%MXD���%EXD���%=XD���%5XD���%-XD���%%XD���%XD���%XD���%
XD���%XD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%�WD���%}WD���%uWD���%mWD���%eWD���%]WD���%UWD���%MWD���%EWD���%=WD���%5WD���%-WD���%%WD���%WD���%WD���%
WD���%WD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%�VD���%}VD���%uVD���%mVD���%eVD���%]VD���%UVD���%MVD���%EVD���%=VD���%5VD���%-VD���%%VD���%VD���%VD���%
VD���%VD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%�UD���%}UD���%uUD���%mUD���%eUD���%]UD���%UUD���%MUD���%EUD���%=UD���%5UD���%-UD���%%UD���%UD���%UD���%
UD���%UD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%�TD���%}TD���%uTD���%mTD���%eTD���%]TD���%UTD���%MTD���%ETD���%=TD���%5TD���%-TD���%%TD���%TD���%TD���%
TD���%TD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%�SD���%}SD���%uSD���%mSD���%eSD���%]SD���%USD���%MSD���%ESD���%=SD���%5SD���%-SD���%%SD���%SD���%SD���%
SD���%SD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%�RD���%}RD���%uRD���%mRD���%eRD���%]RD���%URD���%MRD���%ERD���%=RD���%5RD���%-RD���%%RD���%RD���%RD���%
RD���%RD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%�QD���%}QD���%uQD���%mQD���%eQD���%]QD���%UQD���%MQD���%EQD���%=QD���%5QD���%-QD���%%QD���%QD���%QD���%
QD���%QD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%�PD���%}PD���%uPD���%mPD���%ePD���%]PD���%UPD���%MPD���%EPD���%=PDPX�P��H�EH�5MEH��H�3EH��H�����t�H��DH�5EH��H�EH��H��p���I��H�\$H�{�H�����H9�u�L����H�C8H��H�E��L���o�L������H�<$H��tH��PH���P��;����6����1�����H�|$H����L���8�H��� ���H���琿��H�=|VH�E�I����H�=dV�W�H�
�WH��P���H�E�iH�E�H�.ZH�u�WL��u�H�M��u�PH�E�誶H�� 聻H�}����H��P����l�H�5�CH�ުL���6���H��H��H�����H��x�����H��h����{�H��8�����H���7���H��H��H���贽��H�W�H�=�U��������H�}�H���5�H��P����ɵL���A����H��P���H�5a���H��p���H��P���H��H�����H��x����f�H��P�������>���H�}����̿� �H�=�TH�E�I��t}H�=�T���H�
lVH�u�L��H�E�H��XH��P���H�M�H�E�iQ�u��u�PH�E��"�H�� �H�}��P�H��P�����H�55BH�V�L����H�oS�H�=[T����f�����H�}�H����H��P���蕴L���
����9���H�D$(�(u;H�=ESu��)�H�=2SH�0�j�H�5#SH�|$(H�����H��u;L��������sH�|$��H����H���@�L���(���I��I�<$M���U�L�����ː���H���M�L���u�H������H��PL����H��x���H��p���H;������H�����
��M�H�=%SHDž0���I����H�=
SL��0������H�
�TL��L��H�����H��VH�����ARH��x���H�E�i�u���x���PH��p����5�H�� ��H������`�L���H�5I@H�j�L�����H��Q�H�=oR���T�����H�����H����L��課L���"�H���������H�����:�H��������H�������B�H������1�H��P H���{���H��밿��H�=�QHDž0���I����H�=�QL��0�����H�
FSL��L��H�����H��UH�����ASH��x���H�E�i�u���x���PH��p�����H�� �ǶH�������L��賱H�5?H�%�L���}���H��H�������:����H��R�H�=
Q���<�����H�����H����L���M�L������L�����n���H��L��L���(�L��� �H��������H��������I�$L��P�o���L���H������(�H�5��L�����H�������5�H������H��tH��PH����(uYH�=^Ou5H�=PuH�CP�H�=�O��H�5�OH�=,O�w�H�5 OH���H����H����H��u-H��x���H��PH�����������H������H��P�~���H��P��H������`�H�����H������H������覿L���n�L�����_���H�=�Nu��}�H�=nNH�0��H�5_NH�����H�I�������L���'�H�����H��u9L�����H�������H������L���S�H������'��P������M���*������L���ž���H��L��L����H�����H�������H��0���H��tH��PH��p����D�H�����H�������H��P�|���HDž����H�������r�H����������H������L��H��p����~�����H���������h����H��0����׿����L������I��R��L���5��c�����H����������u�H��p����y����H�<$�k�H���#��H�|$�X�H�|$�N�H����PX�P��H�;H�5C;H��H�);H��H����P�������L���������I����L��������L�eM��t&I�|$I�$H��tH��PL��I���@���H�EH�}1�H�����H�EH�EM��tH�}H�uH��0H9�u�\���H���p�H����H������ܐH�2ATUSH��H�H�@�2�H��1H�kH�H��t%H�}L�eH��tH��PH��L������H�CH�{H��8H��1��H�C�H�C�H�{�H�s�H9�t
[H��]A\�H�[]A\ÐL����H���b�H�|$��H�|$��H���F�H����:�H�����L���*�H�|$0�`�H�|$(�V�H����H�|$0�D�H�|$(�:�H�|$ �0�H�|$�&�H�����H�|$(��L����H�����H��X��L�����H�|$@���H�|$H���H�|$8���H����H�|$H����H�|$@��H�|$H����H�|$@��H�|$H���H�|$@��H�|$H�|��H�|$H�p��H�|$@�d�H�|$H�Z��{���H�|$H�K��l���H��H�������W���H�|$@�'�H�|$H���>���H�|$@��H�|$H���%���H�|$@��H�|$H�������H�|$@���H�|$H�����H�|$@���H�|$H������H�|$@��H�|$H������H�������H�� �����H���:�H������n�H����b�H������F��H����H�������B���L��H�5������H������I�<$��H������I�<$�
�H�EH��PL������XL���}��H��腩L�����L��XI���\��H���d�L���|�AWAVAUATUSH��xdH�%(H�D$h1��pI���yH�-aIH���A����bH�|$(1ɺ#H�D$(H�5�ZH�\$P�c��L�d$0H�D$0��H�|$81ɺ4H�H�5-^H�D$PH�D$XH�D$HH�D$8��H�T$8H�߾���H�|$@1ɺ0H�D$@H�5^���H�T$@H�|$X���E1�E1�1�P1�L��SjH�D$`PjjH�t$X�d��H��0L�����H�|$P�~�H�|$X�t�H�|$0�������H�T$(�H�H��H���D�H�|$@�:�H�|$8�0�H�|$(�&�H��H��G�g��=�HL�=�G���~�H�8H������=�H�g�wHL�5P]�s�H�=sHuL��H�=bH��H�=MHuH�T[�H�=8H�c�L�\$0H�wI1ɺ!L��H��L�\$L�l$@H�D$L�d$PH�l$H�D$0�_�H�T$01�L�T$8L��H�5&JL�$H�T$P�H�D$8�-�1ɺ4L��H�D$@H�5\��ATA�1�j�H��jjL�L$XH�L$`�'�H�� H����H�|$@��H�|$8��H�|$0��H�|$ 1�L��H�D$ �-��H�|$(1ɺ(H�D$(H�5$Z��H�|$1�H�QHH�ƺ!H�D$0�[�H�D$ H�<$1ɺH�5�gH�D$8H�D$PH�D$(H�D$XH�D$0H�D$`��1ɺ0L��H�D$@H�53[��ATA�1�j�H��jjL�L$XH�L$`��H�� H����H�|$@��H�|$8��H�|$0��H�|$(��H�|$ ��H�|$���H�;��H�D$hdH+%(t�r��H��xL��[]A\A]A^A_�L���(iL���YH����H�|$�.�H�|$�DiH�����H��$��L���PL���iH����H��$�����H��$�����H��$����H��$���H��$���H��$���H��$����|����H�|$ ��H�|$@�v�H���.�H�|$�d�H�|$�JiH�|$�@��H����H��$��;�H��$��.�H�|$P�$�H�|$H�
iH�����H��$�����H��$������H��$�����H��$������H�|$X����H��$����L�����H�|$ ����|���H�|$X���H��$������H��$����H��$��w���N���H��$��e��H��$��X���H��$��I��H��$��<���	����L��������H�|$X���H��$�����H���H��$����H��$��������H��$�����H��$��������H��$����H��$�����~���H��$����H��$�����_���H��$�����M���H�|$X�q��H��$��d�����H�|$X�U��H��$��H�����H��$��6��H��$��)�����H��$����H��$��
������H��$����H��$��������H��$�����H��$��������H��$����H��$�����z���H�|$X���H��$��������H�|$X���H��$��u�����H�|$X�f��H��$��Y��������H�}�H���C��L���۠L���S�H�������wfH��p����KfH��h����fH��`����SfH��X����'fH��H���H�����H�� �����eI�L���PH�������dH��������H���t��H��8���L���E�����H��H��������e�H�}����H�}��|��H���4����H���5���H�}��_��L����KH��H���H������p�������H�E�I���n���H�8�R��H�u�L��L��H�
�@H�E�H�.CH�M�H�E�iQ�u��u�PH�E�詟H�� 耤H�}�����L���o�H�5�,H��L���9������H�E�I�����H�8����H�
d@H�u�L��H�E�H��BRL��H�M�H�E�i�u��u�PH�E���H�� �H�}��L��L����H�55,H�V�L�������H��������H�}�H�����L��語L���"��a�����H����H��8����8d���H�}�����H��H���H�����H�}���������H�}����H��H���H���������L���IH��8����~���L�������H�}��y��H�}��p��H��H���H������H�}��W��H��H���H������x���L��H������H�%H��$��"��L��H�����H�|$p�-bH�|$�IL���;bH��$�H��t�H��$�H��t��H�|$ �
bH��$�H��t�˲H�|$H����aH�|$H��a�
H��$����H�|$@H��tH��PH�<$L�����H���1��H���Ia�M���H��$��W��H�D$XH�D$ �q���H��$��;��H�D$PH�D$�q���L����L�|$`�������H��H���j��L��L�|$`�]�����H��L���M��L���E��H��L�|$`�8�������H��$�����H��$����H���p��H��$����H�|$H���H�|$0���H���G��H��$��z��H��$��m����H��$��^��H��$��Q���H��$��B��H��$��5���H��$��&��H��$�����q���H��$����H��$�����R���H��$�����H�|$X����H�|$P����H�<$����#���H��$������H��$����H�|$XH��������H�|$p���H��$����H�|$`�w��H�<$�^����H��$��_���ܐH��0����P��H�������D��H�������(`H�������,��H������H��������H��������L��M���A�H��L���V_L�������H�������@����H�������2����H������M���a��H���������L���k���H�|$P���H�|$(���H�|$ ���H�|$���H���:��H�|$P�p��L���X����L���N����H�|$P�R����H�|$�F��L���.��H�����H�|$�,��H�|$�"��H������H�|$���H�<$���L���/�H�|$H�D$@H�t$H9�t	H���r��H�����H���.��L�����H�|$���H���t�����H��H�|$8���H�|$P���H�|$@���H���F��H�|$P�|����H�|$P�p�����#�H�|$P�_����H�|$������H�|$�$]�H�|$ �8��H�|$@�.��H������H�|$@���H�|$���L�����H������L��蚘��H�|$@������H���������H������dDH��X�������H��P������H��H������H��@����]H���������H��8������H��0������H��(����t��H�� ����\H��� ��H�� ����T����H������F��H�� ����:��H����H�����H������@T�H����������H�� ������H����H�������H�����舗H����H������H������l����H�� ���������H�� ������H������������H�� ��������H������l�����H������[�����H������Z��H�� ����N�����H�� ����=���|���H�� ����,�����H��������H�� ������H�������������H���������H�� ���������H����������H�� �����������L���lBH���t��H�}����H��h������H���W��H��0�������L���n����H�}��s��H�}��j��H��x����^����H�}��S��H�}��J����L���0����H��x����2��L�����H��p������H��0���t�L��0���L������L������m���H�}�����H�}�����H�}���Z�(���H�}�����H�}����땐H����QH�|$���H�|$ ���H���Z��H�|$p�����H�|$P���H�|$p�z����H�|$(�n��H�|$p�d��H�|$�J���H�|$h�N��H��$��A��L���)��H�|$`�/��H�|$���H�|$8���H������H�|$h�	��H��$�����H��$�����H��$������H��$�����H��$�����H���|��L�����H�|$h���L�����H�|$`���H�|$H���{��L���PH�|$8�i��H���1��H��$�L�l$X�_���H�|$h�S��H��$�L�l$X�A���H��$�L�l$X�-���H��$�L�l$X���H��$�����|���H��$���������HL���w��H��$`L��$�����H��$���WH��H��H��$@�b�H�D$`L��$H��$�M����I�}I�mH��tH��PL��I�������H��$`�^��H��$��Q��L��$��r���H��$@�7��H��$��*��H��$��
��H������H��$`������L��L��$�����H��$H��$�1�H���!��H��$HDŽ$HDŽ$H��$�H;|$pt	H���)��H�R
L��H��$��6�H��$��u��H��$��VH��$��[��H��$�H����H�|$ H��PH�l$H9l$h��H�}H��tH��P(H����H��$`�
����$������H��$@����H�|$X�x=���H��$@����H�|$X�\=����H��P�r���H��$��������H��$����H��$@���H�D$@H�D$hH�D$�1���H�t$@H�D$H)�H��tH������H�=�Y�J��H��$��=��H��$�� ������H��$@������H��$�������H�5P{L�����H��$`L��$�����H��$�H��$�H�LH�D$`��H��$@����.���H��$����H��$@����g���H��$`����r���H��$`�r��H��$�L��$��]��H��H�D$`�z����HL�������S���H��$@�-��H��$�� �������HL������"���H��$`����H��$@�������H��$@�����n���H�|$0�gH�����H�|$@�gH�|$8���H���h��H�|$@�ngH�|$8���H���L��H�|$0����H������L���2��H����f��H������zSH������N��H�������2��H�����H������.����H������ ��H�� ������H������H�� �������H�|$H�T��H�|$`�J��L���"��H��$��RH�|$X�:H�|$@H������L�����H�|$x�,;H���d��L��L���9���H��$����H�|$ �R�H��$�s����H��$�H���v����{9�l���H��$@H��u��Z���L���l��H��$`�_��H��$@�"���3���H��$�����!���H�|$H�a������H�|$�29�����XL���p����H�|$h������H��$�H��t���8�y���H��$`����������H�rH�5�H��H��H��H������H��L��$�I��0L��I�|$���I�<$�L��I9�u�H��$`H���7��H��$@�*��H��$ ���H��$����@���H��$H���%���H��P����H�|$h������L���8������H���
H��$����H��$���PH�|$(H��H��PH�|$hH��t衡H���I��H��$�|��H�|$�PH�|$p�P��L���7H�|$����L�������H�|$�~7L���v����H�|$�����L���@HH����������H��$�H��t��!7�H��$�H��t��
7�L��胋�#���L���7H�|$����'���L���6����L��������H�|$XH��t�6�L������H��$@����L�������L���(7H���0��L��L������H�|$H�[��H�D$@H�D$(H�|$(�gOH�|$8�]OH�����L���MG��H�|$H�!����L���7GH��������L��葿��H��H���VOH�|$P�OH������XL���g�����H�|$h����H�|$`��NL���i6�H��$�����H�|$p����L����>L���lNH���D��H��H������L���qN����H����1�H���L���L�{XM��uH�CX�V��E1��L���&����L��蹾���ԐL���~>L���MH��������H��L���M��H��H���b�����۽��H�kXH��uH�CX����E1��y"H��赾���H���H������k����I��H�|$H��tH��PL���R��H�����H�|$ L���}��H��t�H�EH��P0��H�|$(H��tH��PI���͐H������J��H�������>��L���f���H������H�������"��H����������I�<$���H�������H�|$���H�����H�}�����H�}�H��u%H�}�����H�}�蜘H�����H�}������H��P��H��@����0�0���H���X��H��$����H�|$x���L��詻��H�|$h�o��H�|$`�e��H�|$8�K���H�|$�!��H�|$XH����H�|$P�:��H�|$H�0��H�|$0����H������L������뛾0L��藼���H���]����H��$������H�|$x����H��$������W���H�|$p����H�|$x���H���D���6���H��$����H�|$x�������H��$�����&����L���H��H���0��UH���W���H��]���ATUSH�� dH�%(H�D$1��&����H�-�%H���������1ɺ!H�|$H�D$H�5�(L�d$����H�D$�C��H�T$E1�E1�H��L�����L�����H�|$�����̹��H�T$�H�H��H�����H�|$���H�O%H�D$dH+%(u H�� H��[]A\���H�D$dH+%(t�Z���H�� []A\Ð�薾��H�H�5@H��H�&H��H������H�<$I�����L�����AWAVAUATUSH��xdH�%(H�D$h1���%���yH�-�%H���������bH�|$(1ɺ#H�D$(H�5�6H�\$P����L�d$0H�D$0����H�|$81ɺ4H�H�5k:H�D$PH�D$XH�D$HH�D$8�N��H�T$8H�߾�,��H�|$@1ɺ0H�D$@H�5P:���H�T$@H�|$X����E1�E1�1�P1�L��SjH�D$`PjjH�t$X袺��H��0L�����H�|$P���H�|$X���H�|$0�����辷��H�T$(�H�H��H�����H�|$@�x���H�|$8�n���H�|$(�d���H��H�:$西���=�$L�='$��輼��H�8H���1���=�$�g��$L�5�9���H�=�$uL��H�=�$�ü��H�=�$uH��7�H�=v$衼��L�\$0H��%1ɺ!L��H��L�\$L�l$@H�D$L�d$PH�l$H�D$0���H�T$01�L�T$8L��H�5d&L�$H�T$P�H�D$8�k��1ɺ4L��H�D$@H�5I8�L��ATA�1�j�H��jjL�L$XH�L$`�e��H�� H���I���H�|$@���H�|$8���H�|$0���H�|$ 1�L��H�D$ �-����H�|$(1ɺ(H�D$(H�5b6���H�|$1�H��$H�ƺ!H�D$0���H�D$ H�<$1ɺH�5DH�D$8H�D$PH�D$(H�D$XH�D$0H�D$`�[��1ɺ0L��H�D$@H�5q7�<��ATA�1�j�H��jjL�L$XH�L$`�U��H�� H���9���H�|$@���H�|$8���H�|$0�۽��H�|$(�ѽ��H�|$ �ǽ��H�|$����H�;�ռ��H�D$hdH+%(t谸��H��xL��[]A\A]A^A_�H�|$(脽��L���l���H���4���H�|$�j���H�<$�a���H�������H��$��K���H�|$�1���H�|$h�7���H��tH�����H��H�|$8�
���H�|$@����H���˽��H�|$x����H��$����H�|$x����H��$��ټ���H�|$x�ͼ��H��$�����p���H�|$x豼���a���H�|$xH��蟼��H��$�蒼��1��J���H��$��~����R���H��$��l���H���$���H�߾H�����H��$�H��1��B�����H�|$xH��1��.���H��$��!�������1�����H�|$xH��1�����H��$�������1����H�|$xH��1��޻��H��$��ѻ�����1��z���H�|$x軻���k���H�|$x謻��H��$�蟻���O���H�|$xH��1�苻��H��$��~����.���1��'���1�� ���1�����H�|$x�Z�������1�����H�|$x�D���H��$��7�����H��$��%�������H��$���������H�߾1�菳�����H�|$xH��1����H��$��޺������H�|$�κ��H�|$�ĺ��H�<$軺��H���s���H�|$詺��H�|$蟺��H���W���H�|$荺��H�|$胺��H���;����H��H�����H�<$�a���H������H��H���ٲ��H�<$�@���H�����H�|$�.���H�|$�$���H���ܺ��H�|$����H�|$����H�����H�|$ ���H�|$(���H�|$���H��蚺��H�|$(�й��H�|$ �ƹ����H�|$(躹����H�|$ 讹��H�|$(褹���H�|$蘹��H�|$莹��H���F���H�|$8�|���H�|$0�r���H���*���H�|$8�`�����H�|$0�T���H�|$8�J���H������H�|$8�8���H�|$0�.���H�����H�<$����H�|$����H���˹��H��H��英��H�|$��H��詹��H�<$���H�|$�ָ��H��莹��H�<$�Ÿ��H�|$軸��H���s����H�|$訸��H�|$螸��H���V���H�<$荸��H���u���L���=����L���d���H���,���H�|$P�b���H������H�|$H��t
�ouH��PH���{���L�����H�|$�(���H�|$ ����H���ָ��H�|$����H�|$ ����H��躸��H�|$��H�|$ ���H��螸��H�|$�Է��H�|$ �ʷ��H��肸��H�|$(踷��H�|$0讷��H���f���H�|$(蜷��H�|$0蒷��H���J���H�|$(耷��H�|$0�v���H���.���H�|$(�d���H�|$0�Z���H������H�|$(�H���H�|$0�>���H�����H�|$(�,���H�|$0�"���H���ڷ��H�|$(����H�|$0����H��辷��H�|$(��H�|$0���H��袷��H�|$(�ض��H�|$0�ζ��H��膷��H�|$(輶��H�|$0貶��H���j���H�|$蠶��H�|$薶��H���N���H�|$脶��H�|$�z���H���2���H�|$�h���H�|$�^���H������H�|$�L���H�|$�B���H�����H�|$�0���H�|$�&���H���޶��H�|$����H�|$�
���H���¶��H�|$���H�|$���L������H��螶��H�|$@�Ե��H�|$(�ʵ��H�|$0���H�|$���H���n���H�|$0褵��H�|$@蚵����H�|$0莵��H�|$@脵����H�|$0�x���H�|$@�n����H�|$0�b���H�|$@�X����H�|$@�L����H�|$0�@���H�|$@�6����q����L������L������H�<$����H���ϵ��H�|$����H�|$0�����H�|$0�����H�|$0����H��H���`���H�|$�ƴ��H�<$轴��H���u������
���H��H�5�H��H��H��H�����H�|$�|���H�|$�r���H�|$�h���H��� �����H����H�|$�M���H�|$ �C���H�����H�|$ �1���볐H��$�!���H��$�����H�|$X�
���H�|$@��H��踴��H�|$h���H��$���H��H���ƪ��H�|$H輬���H��$轳��H�|$h賳����H��$�褳����H��$蕳��H���M���H�|$�s����H��$�t����[���H��$�b����H���H��H�E荰��L������L��譶��H�<$H��tH��PH�������|���H�E�I����H�8L�m��0���H��H�u�L��H�E�H�H�U�H�E�iRL��u��u�PH�E��vH�� �e�H�}�赲��L���MvH�5�H��jL������L���/vH���G�����H��L����;�L���;H�}��;H��������H�}�H���M���L����uL���]������H��L�m���H�}��%���H��P���H��uOH������!H��0����!:H��(������H�}����H��p�����H�� ����H��芲��H��P���H��H������:H��@�����:�H�}�蘱��땿���H�E�I����H�8褪��H�
AH�E�iH��p���H��p���H�xWL��H�M�H�M��u�H��u�PH�E�H��������tH�� ���H��p�������H�������tH�5�H�iL���s���H������� H��p����۰�������H��p���H���ð��H�������WtL���ϵ�������H��H�E�H��������L���.t���H�}�耰���z���L��H�5�^����H���$���H�}��[����=���H�}��M����/���H��H����9����L��躨��H�}��!����2���H�}�����H�}��
�������H�}�����
����H��L�l$X�sH��$��ܯ��H��$���7H��$��¯��H�D$x�(��H�|$p�H�|$h��H�|$`�7L���}�H�|$H���H�|$H�7H���.���H��$��a���H��$��T���H�|$8��H��$�L�l$X�X7�d���H��$��&���H�<$�L�l$X�t���H�<$H�5X]裥��H��軯��H�=Cu��G���H�=0H�0舭��H�5!H�|$xL��褲������H��$�L�l$X譮������H��$�蛮���5���H�<$L���*���H��$��}����[����|$tH�|$�D$�2���H������L���"���H���
���H�|$�@���H�|$�6���H�<$�-���H�����H��H��襦��H�|$����H���î��H�|$���H�|$���H��觮����L���i���H�|$ �ϭ��H��臮��H�|$轭��H�|$ 賭��H���k���H�|$ 衭��H�|$藭��H���O����L���V���H���>���H��$��q���H��$��d���H������H��$��O���H������H��$��:���H��$��-���H�|$p�#���H�|$h����H�|$`����H�|$X����H�|$@���H��賭��H��$����H�|$�̥���H��$��ͬ����H��$�辬��H�|$褥����H��$�襬����H��$�薬��H��$�艬��H��$��|���L��褣���H��L���7���H��L����T���H���H���H���<���H����0���H����$���L����L���d�H�������H�{xH��t��H�{pH��t�|�H�{hH��t�n�H�{P���H�{H�5H�{@��H�{8�
5H�{0豫��H�{(�X�H�{�?H���W����H��0L����S���H�� �G���H���k���H���_���H���S���H����G���H����;���L����L���{�H�������H�{xH��t��H�{pH��t��H�{hH��t��H�{P���H�{H�34H�{@��H�{8�!4H�{0�Ȫ��H�{(�o�H�{�V~H���n���H��L����H�{H��t��H�{H��t��H���?����j����e���L���͢��L�t$L��M��轢��H�����}L���ITH���H��t���L������H��L���U����H���'���H�����H�C0H�{(H�4�芢��H�C(H�C0�խ����H������1���L��0M���T����n����H���V}H���
���H����>}H����SH���H��t��H�{x�H���H�{(�H�{H��t�ъH�{H��t���H�������H��$��=���H��$��0���H�����H��$�����H���ө��H��$�����H��$����H�|$8���H�|$(�ա��H��蝩��H�|$H�Ө��H��$��ƨ��H�|$@輨��L��褡���H��$����H������H��$�莨����H�|$ 肨��H�|$@�x���H�|$�n���L�����H������H��H���C�����H�|$ �G�����H�|$ �;���H�|$@�1����H�|$@�%���L���
����H��H��������H�|$ �����H��H������H��H���k�w����H��H�5*VH���r���H�|$(�ȧ���
H�|$P���H�|$ ��/H�|$訧��H���`���L��舠��H������茧��H��8����p���H������H�����H)�H��t���H��@������H������H�������E���H������9���H�������-���H������H��t�H��P�H������
���H���������|���H��������k���H�������ߦ��H������Ӧ���L�����L��豝���0���L�������H������覦���	���H������蕦��H�����艦�����H�������x���H������l�������H�������[�������L���>������H�������=������L��� ������L��貮��H���ڦ��H�|$`����L���H�|$HH��uCH�|$@�.H�|$XH��t�~H�|$ H���h���H��$����L������H���{���H��P뵿�	���H���H�5��H��H���H��H�����H��$@�x���H�|$p�n���H�|$�ĝ��H�|$P�Z���H��������H���R���H�|$`�<����/���H�|$H�-���H��$�� ���H�|$`����H�D$@�(����H�=ou��S���H�=\H�0蔣��H�5MH�|$@H�!S謨������H��$�躤��H�|$H谤���H��$@衤���.���H��$�H��������}���L�������H�������H��H��`����G���H��h����{���H��p����o���H��8���H��H���H)�H��uiH������M���H������A���L�����L��葩��H��蹤��H�������H�x���H��x�������H��h�����L���X���H��耤���K����H���������L�����H���]���L���e���H�����艣��H���A���L��詚��H���1���L���9���H������]���H������L������H������A���H�����H��P����-���H������!���H���٣��L���Q���H���ɣ��L���1���L�����H��豣��H�������5���L���-���H��蕣��H����������L������H���y���L��聩��H���i���L���Q�H���Y���H�������ݥ��L���ե��H���=���L��襙��L���=���H���%���L��荙��H��x����A���H���	���H��p�����Ț���K���H��p����貚���5����H��$����H�|$8���H�|$@���H�|$0���H��詢��H��$��ܡ��H��$�ϡ���H��$����H��$賡���H��$褡���H��$�蕡��L���ͥ��L���u���H�|$H�{���L���c����_���H��$�a���H��$��T����J���H��$�B����H��$��3���H��$�&�������H��$�����H��$������H��$���H��譡��H��$���H��$��Ӡ�����L���6���L�����H�|$褙��H�|$蚙��H�|$(H��蝠��H�|$ 蓠��H���K���H��$��~�����H��$��o�����H��$��`����L���F����H�|$ �J���H������H�|$�x���H�����L��賘��H�|$ ����H���Ѡ��H�|$ ����M��t�L�������L��I���M���H���E���L��蝠��L���5�����H���:���L������L���J���H���r���H��t�H�EH��NH��H�@H9�u�1�������f.��H�=�H��H9�tH�N�H��t	�����H�=�H�5zH)�H��H��?H��H�H�tH�]�H��t��fD�����==u+UH�=��H��tH�=��y����d����]������w������Ðf.���AT1�I��� H�H�5�蝥��L��A\ÐfD��H��H�s����f���AT1ɺ"H�5�UI��SH�� dH�%(H�D$1�H��H�$H���@���H�|$1ɺ"H�D$H�5������H�5�H�|$1�H�D$�+���H�57H��tRL�L�H��L��蛥���������H�\$H�{�H��豝��H9�u�H�D$dH+%(u.H�� L��[]A\ÿ���H�=�H�0�'���H�5����y���f���H��H���H��H)�H��H��H��~4�H���D:Gtk:Gtn:GtqH��H9�t8u�H���H��H)�H��t-H��t
H��tH����H��8t�H����8H��HE���H��8t�H�����H�G�H�G�H�GÐf.�AW1ɺ H�5��AVAUATUSH��dH�%(H��$1�H�|$H�D$�k���H�|$1ɺH�D$H�56�J���H�|$ 1ɺH�D$ H�5�)���H�|$(1ɺH�D$(H�5l����H�|$01ɺH�D$0H�5P���H�|$81ɺH�D$8H�5^!�Ƣ��H�|$@1ɺH�D$@H�5�襢���F�����L�=��L�t$XL�l$`L�d$hH��$�1ɺ L��L��H�D$X�]���1ɺL��H�D$`H�5��>���1��H���H�H�D$H�t$1�L��$��L��DŽ$�H��$�H�D$ DŽ$�H��$�H�D$(DŽ$�H��$�H�D$0DŽ$�H��$�H�D$8H�D$hH��$�H�D$@H��$�H�D$XH��$�H�D$`H��$��H���L��蠛��H�|$h趙����l���H�T$�H�H��I���0���H�|$`�&���H�|$X����H�|$@����H�|$8����H�|$0���H�|$(��H�|$ ���H�|$���H�|$�֙��H��$dH+%(��H��L��[]A\A]A^A_�f.�H�Q�H���Q���������L�=��H�|$H1ɺ L��L�t$XH�D$HL�l$`�k���1�L���H�5�L�d$hH�D$PH�D$XH��$��6���H�D$X1�L��
H�5��H�D$`H��$��
���H�D$`1�L��H�5z�H�D$hH��$��ޟ��H�D$hI��1�H�t$HL�L$t�H�|$PH��$�H�H�D$tH�|$�D$|�ט��H�|$轙��H�|$P�ӗ���艏��H�T$H�H�H��H�D$�K���H�|$h�A���H�|$`�7���H�|$X�-���H�|$H�#���H�D$H��H���_����������D���ff.���USH��H��H�.H��t
H�EH��PH�{PH�kPH��tH�H�@H��[]��DH��[]�f���闑�����AT1�I��� H�H�5��}���L��A\ÐfD��USH��H��H�.H��t
H�EH��PH���H���H��tH�H�@H��[]���H��[]��USH��H��H�.H��t
H�EH��PH���H���H��tH�H�@H��[]���H��[]��USH��H��H�.H��t
H�EH��PH�{`H�k`H��tH�H�@H��[]��DH��[]Ð�AWAVAUATUSH��(H�|$H���H�D$H�@H�D$H����H�D$L�xM����I�_H���cH�kH����L�mM����M�eM����M�t$M����I�FH��t>H�xH�$�c���H�$I��H�@I�z H�D$躕��H�<$�`�<���H�D$H��u�I�FI�~ H�$葕���`L������H�$H����I���H�} L�e�e����`H�����M��t2L���:���I�} M�e�;����`L��辍��M��t�M������H�{ H�k�����`H��藍��H��tGH������f.�I�D$I�|$ H�$�ݔ���`L���`���H�$H���{���I������I� I�_讔���`L���1���H��tI���i���L�|$I� I�_肔���`L������H��t
H�\$�)���L�|$I� I�_�T����`L���׌��H��t
H�\$���H��([]A\A]A^A_Ð���AWH�#�AVAUI��ATUSH��H�H�H��XH�G H��8H��PH�G(H��8H�G0H��0H�G8H��0H�G@H��0H�GHH9�t#@H�}H��tH��PH��H9�u�I��PH��tI��`H��H)�����I��0H��t+H�{H�����H�} H�[�]����`H�����H��u�I���H��t>�I��H�I�l$H��tH���`����XH��裋���L��薋��H��u�I���I���1�H���4���I���I��IDžIDž�I���H9�t	H���;���I���H��t[�H��H�L�eM��tL������XL������H�}H��tH��PH�}H��tH��P�(H���ي��H��u�I���I���1�H���w���I���I���IDž�IDž�I���H9�t	H���~���I���H��tGf�H��H�L�eM��tL���	����XL���L���H�}H��tH��P� H���0���H��u�I���I��x1�H���Ό��I��xI���IDž�IDž�I���H9�t	H���Չ��I��PH��t9f�H��H�H�}�!���H�}H��tH��P� H��蕉��H��u�I��HI��@1�H���3���I��@I��pIDžXIDžPI��HH9�t	H���:���I��8H��tH��PM��M����M��M�6I�\$ H����@H��H�L�} M��tf�L��M�?��Ј��M��u�H�EH�}1�H���t���H�}H�E@H�E(H�E H�uH9�t	H��芈��H�}���PH���t���H���s���I�D$I�|$1�H������I�|$I�T$@I�D$(I�D$ I�D$H9�t
H�4�����I�|$H��tH��P�PL������M�����I��I��1�H��蜊��I��I��0IDžIDžI��H9�t	H��裇��I�������I���I���H9�t#@H�}H��tH��PH��H9�u�I���H��tI���H��H)��J���I���H��tH��PI����(u#H�5��H����I���H��<�X���I���H��tH��PI���H��tH��PI���H��tH��PI�}`H��tH�H�=H�@H9�ub���I�}PH��tH��PH���L��I�EH��[]A\A]A^A_�1��������t&H���H�=@�H�0而��H�51��9������H�-a�H���q�����t���H��H�N����뱐fD��UH���c���H��]���f.���H�u�AUATUH��H�H�H�G H��8H�G(H��8H�G0H��0H�G8H��0H�G@H��0�GH�GH�GH�GHH�>H�}PH��tH��PH�5`�H�EXL���H�E`H�EhH�Ep�Ex�E|����HDž�HDž�HDž�HDž�ƅ�H����L��L��:1�1��G���1�1�ƅ�f���H���HDž�HDž�HDž�HDž�HDž�ƅ�Dž�f���Dž�ƅ�Dž�HDž�脉��H��0�e�HDžH��H��pH��@H���H��xH���H���H��H���H��(HDžHDžHDž(HDž0HDž8HDžHHDžPHDžXHDžhHDžpHDž�HDž�HDž�HDž�HDž�HDž�HDž�HDž�HDž�HDž�HDž��� ��`������HDž�HDžHDžHDžDž(HDž0H��8H��@HDžHHDžPHDžXHDž`HDžhHDžpHDžxHDž���]A\A]���a���t%H�^�H�=�H�0�O���H�5��	���L�-1�L���A�����t����L��H��蹈�����I��鑕��ff.���ATUH��dH�%(H�D$1�H�<$H��tH��P���<���H��H��I�����L��膑��H�<$H��tH��PH�D$dH+%(uH��L��]A\������H�������f.�AWAVAUATUSH���odH�%(H�D$x1�@��uH��GH��H�8t�W��u/H�D$xdH+%(�aH�Ĉ[]A\A]A^A_�f�H�5��H����L�cL�-u6L�~6L��L��裆���������H�C�@9Cu�H�3L�t$�L���J���H�|$H���m����W���L�|$A�W8��x���?tI�L���P0�E���@HcSH�5%�H9�HF�I��H���ZH�
�5L��L��L�L$����������L�L$H�CL��H�pL���;���L�|$�CA�G8��x����?u�L�KA�y�<�{�i���HcsI���D$m<svgL�I9��
M��L�T$mL��L����H9���L�XL9�twH����sH)���H9�tXA�H��8L�u�H��u��Cf�M������3���f���T$����H�=�H�0�C���H�5���T$�C���H�DOCTYPE �CL�\$xH�D$m�svf�D$u�D$wgL��L����H9�t:L�HL9�t1L�ʹOH�D$n�@H��H9�t�8
u�H��L9�u�@�k�I���A�y	������H�D$ ����H��H�D$I���o�����L���m���H�56�D�{H����H�
4L��L������������H�CD��L�|$H�t$H�PL���b����CL���}���SH�|$��xR����{L�|$�����L�K����fD�H�D$虈��H�=��H�0�ڃ��H�5��L�L$�w���蔐��L�|$�J���������[���H�=d�H�0蜃��H�5U��'������Z������r���ff.���UH��AWAVL�5Y�AUATI��SH��H��X���dH�%(H�E�H�H�XHc@L�,@I��I�L9�u�6DH��0I9�t(H�;�
u�H���
L���|����t�H�C�xt/E1�H�E�dH+%(��H�e�D��[A\A]A^A_]��H�C�8t�H��X���H��`���H��8���H�pP�RH��`���H�}�HDžh���H��P���H�pH�@�P@H�}�H����H��PH��`���H�}�H��H���H�pH�@�P@L�u�M���&���I�L���PH�}�L��x���H��tH��PI�H��H���L�����L�m�M���s���I�EL��PH�}�L��h���H��tH��PI�L��L�58��PH�=-���I�EH�]�L��L��H��H�E��xt:H�5+1H���sy��E1�I�EL��PH��`���H�������H��P�w���L�u�H�5�0H��H�E��-y��L��p���M��t�H��X���H�=��L�����M��t2I�H���L��H��H�E��x�H�5�0H��E1���x��I�L��x���L��H��H����PH�u�H��P���1�H��P0H�E��x��E1�H��P���H�550L�}��|x��H��X���H���H���H��H��@���H)���H����M��tI�H��p���L��H��P����PH��@���H�8L�8H��tH�H��p���H��P����PH��X���H��p���H��p���H��H��P���H�H��@���H��P H�5��H���yH��H�k/H�U�H�M�PH��@���L�
D/L�-5����H�5A/H�߈�P����w��X��P���Z��uuH��X������uDE1�M��t	I�L���PH�}�H��tH��PI�L���PH��p���H�������H��P���H��p���H��X���H��H��P����U���t�H��X���H��p���L��H��P����d�A���y���H�5�.H��L�u�H�E��v�����H��X���H��p����H��P���H����YH��X���H���H��@����2���H�=��tE1�����H�s��H�=���|����H��@���H��H��0���H9����DH�8H��t"H�H��@���H��P����QH��@���H��P���H��H9�u�H��X���H��0���H���H���H��@������L�5V�H����L����{������H�=u�L�}���M������I�H�X�L��H��H�E��xtUH�5'-H���ou������H�+��H�=��{���H����H���H�=
��e{��H�5���c���H�5�,H��L�}�H�E��u���v���H����H�=���!{���I����Wy����H��餋����鿋����H��H��p���H��P����2�����H�������H��H��p���H��P�������H��H��p���H��P��������������H�������H�������fD��AWH��AVAUATI��USH��dH�%(H��$�1�H�l$@L�l$H���|��H���L��H��H�D$�ZH��z��1�H�|$H�\$�;}��I�$L����z��H�|$��H�5��L�|$L�|$ H���
H�|$(1�L�t$ 1�L�0+軄��1�L��H�D$0@f�T$8��|$9��L�D$(�A�(u!H�5%�H���H�|$(H��*�{���H�|$H��tH��PH���QH�|$@H�D$pH�t$HH9�t	H���t��H��$�dH+%(��H�ĘL��[]A\A]A^A_�f.�I�<$H���H�D$�|��H�D$L��H�D$I�$�y��H�|$�{��L���/�|$9L�D$(����Hct$4I�xH�xmlns:ooƄ$�oH�D$yH�H9���H�D$zH�\$yH�D$L��$�H���D��H9�����H�xH9������H�T$H���m��H��H9�������
8u�H��L9�u�L����|$9L�D$(�p���Hct$4I�xH�ooo:metaDŽ$�_sliH�D$y�deH�f��$�Ƅ$�sH9��,���L��$�H�����H9�����H�xH9�����H�T$H���o�f.�H��H9�����
:u�H��L9�u�I�<$H���H�D$�~z��H�D$L��H�D$I�$�x��H�|$�Zz�����DH�= �L�x��M�����I�L�t$ H���L��L���H�D$ �xtCH�5\(L���p��������N}��H�=W�H�0�x��H�5H�����H�5(L��H�\$0H�D$0�Sp���d���fD��|��H�=�H�0�?x��H�5������H�u��H�=E��8v���%����nt����I��H���g�����I��鹈����H��@����f���UH��AWAVAUATSH��H�����H������dH�%(H�E�1��6����H������H��H��P(�̀��H������H��tH���hz��H�����H����SL��0���H������L����w��H���L��L�����HDž���L��H�������UH�H�@��z��H����H�J��H�=��
u��DH�����H�����H��tH��PH������x��H������UH�����H�=V�H�����
H��H��t6H�L��p���H�0�L���H��p����x�b	H�5&L���Kn��E1�H�����H��tH��PL���LH��0���H��`���H��8���H9���H���o���f�H�����H������&����H������Dž��������ƅ����H�L�hHc@L�4@I��M�M9�tqL�%#�������I��0M9�tNI�}�G��
u�H���
H�5~��n�����uI�E1ۃxu�I�E�8������I��0M9�u�f�H�����H�����H������H�pP�DH�����L��p���HDž���L��H�pH�@�P@H��p���H��������H��PH�����H�����H������H�pH�@�P@H�����H��H���X���H�H��PH�����H����H��tH��PH�H������H����H�����H��H���˅��H�H��PH�����H�����H��tH��PH�=��L�%����L��H���@?H�=��H������L�%����L��H���?H��x���H��H�H�����PH����L�����L��H��P`L�����L��L��0���I�$H�X HDžp����r��L��L��L��H���A�HDž0�����H��0���H��tH��PH��p����t��H�����H��tH��PH���H�XHc@L�$�I9�u�f��t��H��I9���H�3L��H��PH������!u�H���!H�5���l��H������������>t��������t�H����H������H��H��P8H������H�=7�H��������	H������H��t/H�H��L���H��p����x�^H�5"L���gj��H������H���,���H��P�!���@L�`H���8M��t:I�$L��p���L��H�Y�L���H��p����x��H�5�!L���i��1�����D�*u#H�5��H����H�����H�|!�w��L��H�5m!�i��H�����H��tH��PH������H��t
H��P@H�����H���H9����H����(u#H�5!�H����	H���H�� �v��H����H��tH��PH��x���H��PH������t
H������H��PH����H��tH��PH�����H���H9����	��������H�E�H�E�H������H��p���H�����HDžx���H���H���H�E��E��?H�E�H�E�H������H9���L��0����#H�5	 L���Qh��H��H9�������H�=��L�#��L��M��t�I�$H���L���H��0����xu�L��@���H�5�L��HDž@���L��������g��M��t�H������L�����L��H��PL�����1�L��L��L��H��x���H������H������L���gPH����H�8��H�����H��tH��PH������H��H��PH9���������H�����H�u�L��XH��PL��H)�H��H��H9��eH9���H�]�E1�H�����w�H�5�L����f��H�����HDž0���L��PM�HDž����I�}I�EH��t$H�L��0����PH������t
H������H��PH�I��H����H�=E�L�{��L��M����H�L��0���H��L���H��0����x�@���L��@���H�5�L��HDž@���L�������f��H�����L��0���L��L��PM�H������H������H�H��PI�}H������I�MH�������%����H���L����f��������I�E�@���'w%������u
I�E���������������������I�E����������fDE1�H������H��tH���ap��H������1�H��P H�E�dH+%(�%H�e�D��[A\A]A^A_]�DL�e�H��L��H�E�H��L�������d��L�����M���x���H�����L����L��H��PH����H����H��P(H��������H�H��1�L��P0H������x��H��L���]d��H����E1�H��tH��PH�����H�����H��������H�����H��P�����H�=��L������hL��M������I�H�m�L���H��p����x�H�5xL���c�������^f��H�����H������H�H�xH��tH��PH�E�H�U�H�}��H��x���H��0����t��H�ք��H������H��p���H������H��H�L�bH���H�H�H�H�H�E����@H�E�H�5�L��H�E�H�������b��H������H�����H���x���H������L��H��P H��0���D�HE����L��H�5a�b��H������H��P�3���f.�H����H�=%��h���D���H�5L��H�]�H�E��Ub���x�E1����L��L���5ML��1�H��x���H����������DH�E�H������H�H�}�H��tH�@1�H��x���H�<�H�E�H����@�H���H�=���g��L��M���U���@H�����HDž0���L��PM������H������H�������L��A���rFH��x���H��p���H;�����t	H���Bc��H�����I��H��t	I�L���PH�����H�����H��P�����H�!��H�=���0g���Y���E1����I�}�G�D�@H����H�=���f���:�H)�H�����H��P�
D���DE1��o����I�E�����������f�I�E�����������f�L�e�H��L��H�E�H���2`��L��0���M���M���H�����L��L��L���I�$�P H�5��H����H��H��x���L��H��p���SL�
zL�c�Ns��L��H��A���_��XI�$L��Z�PE������H�����H���H��P(�������E1��D����H�����1�L��XH��PL��H)�H���5���H�5��H���'H�=��Ng��H�5������f�H�=��L�����M��t6I�$H���L��L���H��p����x��H�5�L��E1���^��H�����H�=��H����>H��H��t/H�H�r�L���H��p����x�}H�5EL���^��M�������I�$L��P���DH��L9��G���I��I�?H��tH��PL��H��I��L9�u�H�����H��X����H�5��H����L��1�1�L���=o��H�5��H����H��H��H��0���H��8���PL�lL��L�
r�Mq��H�����H�����_AXL���H���HcrL��H)�H��H9�����
I9����1�L�-G��f.�H�5L���a]��H�����H������HDžp���H��H������H������H�8H�H��tH��PH�����H��H�����H���H+��H��H9���Hc�H�=��L�d���L��M����I�$L��L���H��H������H��p����x�3���H�5LL��L�e�H�E��\��H�����H������L��p���H��H������M���"���I�$L��PH������H�8L� H��tH��PI�$L��P�
���H���L���Db���4����H�����HDžp���H���H��H����������H�� ���H�=��H������
H�����H���D���H�H�j�L���H��p����x��H��L���[��H��L���v[������H����L���a���T�H����L���ta����H�5�L��L�e�H�E��$[���?���L�}�H��L��H�E�H��L�������Z��L������M���
L������I�$M���R���H�����L��H������H��PI�L�����L��L��PH�����H���pH��P(H��������bH���dH��P(H��������DH��P(Hcȃ�������HD���`���H�����H���H���H��H)�H��H9��
�,
��`��������������L��0���HDžp���Dž������_���@H�����������L��9�����������H�H�@0u
��_�������H��0����x��H��L��HDžp����Y��H�����H��p���H��H��h���H��h���H�8H�H��tH��P������������H��p���9�`����L���H�����H��tH��PH�����H��tH��PH������H��P�i�����H��0����x�m	H��L��HDžp�����X��H�����H���H��h���H��h���H�8H�H���Q���H��P�F���H����H�=��^���{�H������H����;H������L��H��P H�����H���H�;H��tH��PH��0���H����H�V�H�=���;^��H�5������H�����H)�H����I;L���H���H������>���H�E�H��L��H�E�H������W��H�����H��L��H�����W��H������-�H����H�����H�����H�������4H��H���=H����/H�����H����H��H������H��������j��H������L���+c��H�����H��H��������g��H���L��HDžp���H��������]��jE1�A���jH������L��L��H�������h��H��p���������XZ�_����������tuE1�H�����I��H��t#H���;�;�@�P�A�V����L����h��H���H��tH��P0H����H��tH��PH�������E1���H�������e��H��x���H��p���H������H������H���Z���H���Q���H�������g��H�8H��t
����H�����H���H�������QX��H������H������H��H�������tX��H������H������H��H��������_��ƅh���H���1�H���H��PH�������������H`��������9�t<H��p����ʉƉ�������d��������������H������H��x����d��H������H���\��H��H������H��p����Y��f��f�H���H*������*��������^���x����cg����x���f�H���*��^������X��������c��f�f�H���H*�p����*���x����^��X�������������T��f�f�ɺ����*�H�������^�x���H������H*��X������Y���Y��
���Y�f/��s(���f/���f/���	�X��,�H���H������Hc�H������I��I��H�H�@H��p���H��H��x���L���Ѐ�h����^H������H����HDžp���HDžx���H��t����H�D�H�H������H�E�H����H��t����H�D�H�H������L��H�E��`��H�H������H��H��P(H�������T��A��Q���H��I9��@���I��fDI�}H��tH��PL��H��I��I9�u�H�����H�����I��H���H�����H�G��H�=3��X����H�J��H�=��X���1��_��H�=�H�0�CZ��H�5��*���^��H�=νH�0�Z��H�5�����H��@���H�=��H��x����SH��x���H���;���H�H���L���H��p����x��H��L���Q������H����H�=[��W������I�H�	H�@H9����;�KA�F�P�A�V�������I�H�
	L��H�BH9��V�R����������A�F����H�ϽH�=���;W��H�5�����]��H�=��H�0�X��H�5����H��������������H�E�H��L��H�E�H��x����P��H��x���H��L��H��p����P��H�����H��p���H��H��x���H��h��������H��x���H�H��PH��h���H��x���H�8H�H��tH��PH��x���H��P����������A�F���H)�H��H�����H����U3����L�<�L9�����H������H��x���L��H�;H��tH��PH��H9�����u�H�����H��x���L������L�����!���H�|��H�=H��U�����H��@���H�=/�H��x����:H��x���H���g���H�H��L���H��p����x�xH��L���O���7���H��������P��H������H������L��H��p�����O�������US��������	W��H��H��x����:/H�3�H�M�H��H��`���H��p���H�E�H9���H�M�H������H�M�H��H��h���H������H������H9�`���t`H������H�H��tH�x�H�@�Ph��=��H������H������H9�����u�H��h���H�H��H��h���H��H�������L���P��H������H������H���H��H�������SX��HDž����ƅh����l���L���dP������\��,���H�E�H��L��H�E�H��x����M��H��x���H��L��H��p����{M��H�����H��x���H���H��h������H��x���H�H��PH��h���H��x���H�8H�H�������H��P��H�	��H�=չ�8S�����H�X��H�=(��S������������H���e����H���e����H���"g�����h����H���`h����I���ah����H���h����H���h����H���g����H���[i����H����f����H��H�����H�������Oi����H���Xe����H���i����H���Xh�����f����H����i����H����i����H���i����H���h����I���i����I���g����H��H�����H�������Wi����H��H�����H�������Ei����H����g����H���~i����H���'h����H���'h����H���/i����H����h����H���Sg����H���g����H���g����H���g����H���Vi����H���di����H���si����H���ih����H���qi����H���i����H���ji����H���i����H���i����H���-h�����AVAUI��ATUH��SH��dH�%(H�D$1�1�H���Ƈ�f���t0H�D$dH+%(��H��L��H��[]A\A]A^�e��DH�����H�L�5��H�XHc@L�$@I��I�I9�u�fDH��0I9�t�H�;�
u�H���
L���J����t�I��H�$L���P��H�C�x��H�<$�G��tD������to��R���,���@E1�H�D$dH+%(��H��D��[]A\A]A^ÐH���H�5ܷ�kJ����tUƅ�L��H���e��H�<$A���R���H���H�5ȷ�2J��H�<$���p���ƅ�L��H������H�<$�G�B���H���H�5u���I����t(ƅ�L��H���[���H�CL��H�0�jO�����H�<$�G����M����H���tg�����H��(�������f.����H��`fD��H��`fD��H��`fD���'J�����H��H�J����H��@�J����H��8��I����H��0��I����H��(��I����H�� ��I�����I�����H��P�I����H��H�I����H��@�I����H��8�sI����H��0�cI����H��(�SI����H�� �CI�����Y�����H��H�Y����H��(��X����H�� ��X����H��8��X����H��0��X����H��@�X����AVAUI��ATI��UH��H��dH�%(H�D$1��A���t=H�>�M��L��H��L����Z��H�D$dH+%(u@H��L��]A\A]A^�fDL�5��L���qK����t�H�v�L��H����N����J����AVAUI��ATL�f�UH��H��dH�%(H�D$1������t<H���M��L��H��L���4Z��H�D$dH+%(u?H��L��]A\A]A^�DL�5Y�L����J����t�H�֫L��H�D��GN����J����AVAUI��ATL�f�UH��H��dH�%(H�D$1�����t<H���M��L��H��L���Y��H�D$dH+%(u?H��L��]A\A]A^�DL�5��L���1J����t�H�6�L��H����M����`I����AVAUI��ATL�f�UH��H��dH�%(H�D$1��`���t<H�]�M��L��H��L����X��H�D$dH+%(u?H��L��]A\A]A^�DL�5�L���I����t�H���L��H���M����H����AVAUI��ATL�f�UH��H��dH�%(H�D$1������t<H���M��L��H��L���TX��H�D$dH+%(u?H��L��]A\A]A^�DL�5y�L����H����t�H���L��H�d��gL���� H����AVAUI��ATL�f�UH��H��dH�%(H�D$1�� ���t<H��M��L��H��L���W��H�D$dH+%(u?H��L��]A\A]A^�DL�5ٮL���QH����t�H�V�L��H�Į��K����G����AVAUI��ATL�f�UH��H��dH�%(H�D$1������t<H�}�M��L��H��L���W��H�D$dH+%(u?H��L��]A\A]A^�DL�59�L���G����t�H���L��H�$��'K�����F����ATUH��8H�t$dH�%(H�D$(1�H����H�H�l$H��H�T$H��H�D$�xt7H�5���H��E1��B��H�D$(dH+%(uJH��8L��]A\�f.�H�5����H��L�d$ H�D$ ��A���H��u!�C���1N���E1���&F����H��H������K��D��H�=��H���t�f.�H��H�ǾH����G��H�ɭH���f.�f���H�=��H���t�f.�H��H�ǾH�}��HG��H�q�H���f.�f���H�=L�H�E�t�f.�H��H�ǾH�M��F��H��H���f.�f���H�=�H��t�f.�H��H�ǾH���F��H���H���f.�f���H�5%�ATI��H��tL��L���1�1��hQ��L��A\�f����L��H�=�H�0�'H��H�5���ff.���H�5ūATI��H��tL��L�����1�1��Q��L��A\�f���L��H�=��H�0��G��H�5����f.�@��ATI��UH��dH�%(H�D$1�����t/H�5�L���hL��H�D$dH+%(u;H��L��]A\�DH�-�H���YD����t�H�^�H��H�̪��G����C�����ATI��UH��dH�%(H�D$1������t/H�5��L����K��H�D$dH+%(u;H��L��]A\�DH�-Q�H����C����t�H�ΤH��H�<��?G����B�����SH��H�H��tH��PH�;[�G����SH��H�H��tH��PH�;[�G����AWAVAUATUSH��hdH�%(H�D$X1������tC�=|�L�%����H�D$XdH+%(�oH��hL��[]A\A]A^A_�f�L�%��L����B����t�1�H�|$�H�D$H�5i�L�l$(�N���H�\$@H�D$ �?J��1ɺ)L��H�H�5S�H�l$0H�D$@H�D$HH�D$8H�D$(�M��H�T$(H�߾�H��1�H��4H�56�H�l$ H�D$0�{M��H�T$0H�|$H��WH��H��E1�E1�S1�1�H��jH�D$PPjjH�t$H�?��H��0H���cG��H�|$@�N��H�|$H�N��H�|$ �eE����=��H�T$�H�H��H����G��H�|$0��E��H�|$(��E��H�|$�E��L��H�G��E���=��L�%4��?���fD�B��H�8H���I���=��tH�;�D������f��y��*�����L�l$(H�l$0L�=9�L�T$ 1�L���!L��L�T$L�t$H�D$H�D$ �&L��H�D$ 1�L��H�5�H�D$(H�D$@�K��1�H��)H�D$0H�5[���K��H�D$@1�L��PA��H�D$jjjL�L$HH�L$P��L��H�� L����E��H�|$0�D��H�|$(�~D��H�|$ �tD��H�|$1�L��H�D$ �!�gK��H�T$ 1�L��H�D$(H�5V�H�T$@��>K��1�H��4H�D$0H�5̩�K��H�$1ҾA�L��PjjjL�L$HH�L$P�5L��H�� L���E��H�|$0��C��H�|$(��C��H�|$ �C��H�|$�C���-���@L�5i�L�l$(L��H�l$0L�=}��H?�����7���1�L���!L��H�D$(�uJ���H�D$0�F��H�T$(E1�E1�H��H���A��H���oD��H�|$0�B����;:��H�T$(�H�H��H�$�D��H�|$(��B��H�$L��H����1B�������=�����AWAVAUATUSH��dH�%(H�D$x1�����t@�=��L�%��H�D$xdH+%(�H�ĈL��[]A\A]A^A_�L�%ѤL���>����t�1�H�|$ �H�D$ H�5Q�H�\$P�7I���L�t$8H�D$(�oE��1�H�|$0�5H�L�l$@H�l$(H�D$PH�D$XH�5�H�D$HH�D$`H�D$0��H��H�T$0H�߾�C��1ɺ/L��H�D$8H�5
��H��H�T$8H�|$X��|C��1ɺ8L��H�D$@H�5
��mH��H�T$@H�|$`��IC��H��E1�E1�S1�1�H��jH�D$`PjjH�t$P��:��H��0H���UB��H�|$P�I��H�|$X�I��H�|$`�H��H�|$(�M@����8��H�T$ �H�H��H����B��H�|$@�@��H�|$8�@��H�|$0�@��H�|$ �@��L��H����?���=q�L�%���@��<��H�8H���hD���=I�tH�;�w?������f��1��
�����L�t$8L�l$@L�=�L�T$01�L���!L��L�T$H�l$H�D$H�D$0�G��H�D$01�L��L�ܦ�H�D$8L��H�D$P��F��1�L��5H�D$@H�5��F��H�D$P1�H��PA��H�D$jjjL�L$XH�L$`��G��H�� H���@��H�|$@�e?��H�|$8�[?��H�|$0�Q?��H�|$ 1ɺH�D$ H�5��@F��L� �H�|$(1�L�޺H�D$(�F��H�T$ 1�L��H�|$��D$PH�T$`H�T$(f�D$hH�T$X�!H�D$0��E��H�T$01�L��H�D$8H�5��H�T$H��E��1�L��/H�D$@H�5���E��H�T$H�H��RA�1�jH�D$PH�D$jL�L$XH�L$`�F��H�� H���?��H�|$@�7>��H�|$8�->��H�|$0�#>��H�|$(�>��H�|$ �>��H�|$1�L��H�D$0�!�E��H�T$01�L��H�D$8H�5ͤH�T$P���D��1�L��8H�D$@H�5W��D��H�$1ҾA�H��PjjjL�L$XH�L$`��E��H�� H���>��H�|$@�j=��H�|$8�`=��H�|$0�V=��H�|$�<������H�-�L�t$8H��L�l$@L�=���8�������1�L���!L��H�D$8�
D���H�D$@�J@��H�T$8E1�E1�H��L���;��L���>��H�|$@�<�����3��H�T$8�H�H��H�$�>��H�|$8�<��H�$H��H�N���;���K����7��f.�D��H�?H��tH��`fD����AUATUH��SH��H��H�>dH�%(H��$�1�H�;�+7��H�}H�{H��tH��PH�3�N��t�H���H���E��L�d$�
H�l$��$�L���5��L��$�H��H�D$��$��<9��L���$8��H��L���A��\>��H�|$Hc�$�HcGH�D��u2�];��H��$�dH+%(��H�Ĩ[]A\A]��H�H�ߋjʼn��NF��H�H�t$HcPLcnH�LPM��u<J�)Lc�$��:f�H�HK�T-M��u21�H�|$fB�iH��h�i���M�H��H��L����2��H��뭐H��L����2��H����5����H���	��H���	H�{� ���H�;�x:��H���0;����AUATUSH��PdH�%(H�D$@1��oD$xH��$�)D$(H�D$8�t$8�t$8�t$8�����H�� ��t2�������H�D$8dH+%(��H��H[]A\A]�@H�-��H���5����t�1ɺ!H�|$H�D$H�5��L�d$�@���H�D$�<��H�T$E1�E1�H��L���A8��L���:��H�|$��8����0��H�T$�H�H��H���I;��H�|$�?9��H��H���8������������H�-��H����4���������H�|$1ɺ$H�D$H�5��?��H�D$�������H�T$L�d$E1�E1�H����L��H��i7��L����9��H�|$�7����/��H�T$�H�H��H���q:��H�|$�g8��H��H�D$8dH+%(��H��HH��[]A\A]�7��f.�L�%�L����3�����I���1�H�|$�!H�D$H�5�L�l$ �?���H�D$ �@;��H�T$E1�E1�H��L���6��L���8��H�|$ �7�����.��H�T$�H�H��H���9��H�|$�7��L��H�I���6������z2��f.���ATUSH�� dH�%(H�D$1�����t)H�D$dH+%(��H�� H��[]A\�DH�-љH���2����t�1�H�|$�!H�D$H�5ќL�d$��=���H�D$�$:��H�T$E1�E1�H��L���i5��L����7��H�|$�5����-��H�T$�H�H��H���q8��H�|$�g6��H��H�-��5�������^1��f.�@��UH��AVAUATSH��H��0dH�%(H�E�1�H���
H�L�e�H��I��H��L��H�E��x��H�58�L���,����62��L�u�L��I��I��PH�;L�m���?��H�
�H�u�L��H�E�H�ɜRL��H�M�H�E�U�u�u�PH�E��A���H�� ����H�}��o5��L������H�5X�H�y�L����5���L�m�H�5��L��H�E���+��M���L���H�E�dH+%(uH�e�L��[A\A]A^]��0����^1��H�E�I���(�����H���	��H���H�}���4��L���k���L����9��H���{5��f.����H�?H��tH��`fD����H�?H��tH��`fD����AWAVAUATI��UH��SH��(H�H�H�H�H�H�HcPH�FH�Hc@L�lAD���:-��I�$E��uH��([]A\A]A^A_�f�H�XH�EL�uL�xH�H�hH�H�HH�L�@H�H�0HcFH�H����H�1��fA�f�CH��H��u�1�f�f�f�TC4H��H��	u�1�f.�f�Tf�TCFH��H��u�fA�I�6H���f�C~fA�Gf���HcFH�,H��u^I�$D�h1�f��+�H��([]A\A]A^A_�DH��H��L�D$H�L$H�T$�-+��L�D$H�L$H�T$�%���f�H��H���+���f���AWAVAUI��ATI��USH��H�H�H�H��X��?���+��I�E��uH��[]A\A]A^A_��H��H�HI�$I�l$L�`H�L�pH�H�0HcFL�<H��urJ�91�@fA�f�BH��H��u�1�f�fA�f�LB4H��H��	u�1�f�f�Lf�LBFH��H��u�1��_f�B~H��[]A\A]A^A_�H��H��L���*��I�}H���s���D��UH��AWAVL��p���AUI��ATI��SH��H�6dH�%(H�E�1�H�L��H��P H�]�1�L�}��H��p���H�5ʘH��H��8���H�H�@H�E�H��0����W8��L��H��L��H��8���H��0�����H�=V�L�E���M��tAH�E�H�<�L��H��8���H��I��H�E��x��H��8���H�5.���y'��E1�I�<$H��tH�L��8����PL��8���H�}�M�$H��tH��PH�}��0��H��p���H��tH��PI�<$��H�E�dH+%(u|H�e�L��[A\A]A^A_]��L�E�H��8���H�5���H�E�L��0�����&��L��0����P���fDH����H�==�L��8�����,��L��8��������+����F,��H�
���*H�5˗H��8���H��P���H�M�H�
P�H��H�M�1�H��0���H�E�.HDžP����6��H�
�L�u�L��H��x���H��0���H�
�L��`���H�M�L��H�
ӖH��p���H�]�H�M��f���H��8���L��RL��u��u��u���H��`���H�� �/��H��P����/��H�5'�H��8���H�9��t/����I��H���=��H���d��H��8���H�����H���[��H��H���0L���R�L��8���H�}��.��H��p���H��tH��PL��H��H��t?H��tOH��L�����H���+/��H��`����_.��H��P����S.��H��8����g3�����0&���+2����H���a�&���H���}*���*1�H�5�I��H���H�E�+H�E�H���H�E�H��@���H��H��8���HDž@�����4��H��8���H�u�H�]�L�u�H��P���H�
�H��X���H��P���H��`���H�-�H��h���H��`���H��p���H��H��x���H�ɣ
H�E�H�E�H�E�H��H���H��H������L��H��L��P�u��u��u���H��H���H�� � -��H��@����-��H�5-~H�F�L���~-���������H��H��H�����,��H��@�����,��L����1����/���I���@��H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����ATUH��(H�/dH�%(H�D$1�H�=����H��t/H�EI��H��H��L��H�$�xt/H�58��L���"��E1�H�D$dH+%(uzH��(L��]A\�f�H�l$H�5��L��H�D$�C"��H��t�H�EL�`�.��H��H��A��I��H�EH��P�f�H����H�==��((���?����^&����I��H�EH��PL���+��D��H�?H��tH��`0fD����H�?H��tH��`fD����H�?H��tH��`fD����AUI��ATUSH��H�_H��t;L�%����H��L��H�H�}�6!��H�}�*���0H���#��H��u�I�EI�}1�H���%��I�EI�EH��[]A\A]�f���H��AVH��AUATI��UH��SH�XH��H������@H�E�R#��H�UH�EH)�H��L�4�M�,�M9�sL��@��&#��H�H��I9�w�I�A��?L�u(H��H�UH�E I�E�H�EHI�E�H�UH�E8H��J��H�M@H�E0[]A\A]A^�H�<��h�����H���W!��L9�vI�>�I����!�����:-����I���N,��L���&!��H�EH�}H�4��!��H�EH�E�,����H���,��H���)�����AWAVAUATI��UH��SH��8H�FHH��H+u(H��H��H�E0H��H+E8H��H��H�H�E H+EH�H�GH��H�GH�H�GH�G H�G(H�G0H�G8H�G@H�GH����I�D$I�T$(H�M(M�l$ L�}0H�]H�D$(L�l$ L�u H��H�T$H�L$H�T$I9�t>H�;H�}H��tH��PH��I9�t8H��I9�u�H�D$H�D$H�(L��I9�u�H��8[]A\A]A^A_�fDH�D$H�XH��H�D$L�����H�����H�\$(H9�t9H�;H��tH��PH��H9\$ u�H�D$H�D$H�H�D$(HH�D$ ��9+����H���M*��I�<$t<I�D$HI�\$(L�hI9�vH�;�H�������I�D$I�<$H�4����H���'��f���SH��H�x�;tc�G�P��W��t
H��[��H�H����H�@H9�uU�;t@�G�P��W��u�H�H�
���H�PH9�uGH�@H��[��@�������G�@�������G�@H�|$��H�|$�f.�H��[��f���L�H�wH��0I9�tH��L������f.�D��H��twH��������AWAVAUATUH��SH��H��L�gL�?L�GL��L)�I��I��L)�H��L��L)�H��H9�w4H��L��1�H��L��� ��H�]H��[]A\A]A^A_�D��H9���L9�L��HC�L���H����E1�E1�H��I�<	1�L�D$L�$� ��L�$M9�L��L�D$L��tDH�H��H��H�J�L9�u�M��tL��L��L�$L)��}��L�$L�L�MI��L�mH�EH��[]A\A]A^A_�H��������H9�HG�L�,�L��H�$����L�eL�}L�EH�$I��I��:���I����������H�=���$��f.�D��ATI��USH�_H��t+@H��H�H�}H��tH��P�H�����H��u�I�D$I�<$1�H���Y��[]I�D$I�D$A\�f���AUATUH��SH��H��H����H��I��H��<��L�,�L�����L��1�H��I������L�U0H�uH�EE1�L�MH��t,H��1�H�6H�A(H��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H������H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�e ��� ����H������I�$H�E(�&����H����%��H���s#����AWAVAUI��ATUH��SH��(H�>dH�%(H�D$1��wH���i#��1�Lc�L��H�uH��H�D$H�EL�4�M����I�I��H�K(�#H�3H��txH�N(1�I��H��H�uI9�ucH��I9�u�I�}H�S�w;ru�H9�tH��H�����7����u�I�L�xH��t'H�D$dH+%(��H��(L��[]A\A]A^A_Ð�0���I�}H�I��H�xM�~���H�
���1�1�L���8��H�E(H�UH�} H�u�H�D$�(��H�ք�ubH�ML�l$M�f(I�I�EH��tH�I�I�EL�0H�E�K���f�H�EL�uI�H��tH�@(1�H�uL�4�H�EI�E���H�T$H������L��1�H�uH��H�D$�v���������H��H�5��L���]��I�~� ��L���0�7��H���_!��f.�D��AWAVAUATUSH��XH�T$H�L$dH�%(H�D$HH�L�,�M���6I�]H��I��H�K�.fDH�3H���H�N1�I��H��H�uI9���H��H9L$u�H�|$H�CL�'H�D$L9�����M#��H��M��t2I�$L�|$0L��L���H�D$0�x��H�5��L��E1��S���L�d$(�#��H�|$H��t,H�t$L�|$0L��H��H�D$0�xtdH�5���L���
��M��A��M��t
I�$L��PE������fDH�D$HdH+%(��H��XL��[]A\A]A^A_�f�E1���L�D$@L��H�5Y��H�D$@L�D$���L�D$M9�A��M���{���I�L��P�m���H�5��L��L�d$@H�D$@�S����������I��I�����H��I���
H�|$(�'�L��I��u�i���!���/����*��f.���AUATUH��SH��H��H����H��I��H��<��L�,�L���r��L��1�H��I���b��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���D��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t���������H���4��I�$H�E(�'!����H���; ��H��������AT1�I���H�H�5ˆ�
$��L��A\ÐfD��AT1�I���	H�H�5A�
��#��L��A\ÐfD��AT1�I���H�H�5n��#��L��A\ÐfD��AT1�I���H�H�5M��}#��L��A\ÐfD��AT1�I���H�H�5/��M#��L��A\ÐfD��AT1�I���H�H�5��#��L��A\ÐfD��AUATUH��H��H�� dH�%(H�D$1�H�L�l$L�d$L��1ɺH�5ӇH�D$L���"��L��L���H���I%��H�|$���H�|$���H�D$dH+%(u
H�� ]A\A]��v����H���0��f.���S1�H��H��cH��H�5c�"��E1�H��t
�@@9C@A��D��[Ð���S1�H��H��bH��H�5�b��!��E1�H��tH�{@H�P@�w;rtD��[�A�H9�t�H��H�������[��A��D��Ðf.�AW1ɺ H�5�|AVAUATUSH��dH�%(H��$1�H�|$H�D$�k!��H�|$1ɺH�D$H�56��J!��H�|$ 1ɺH�D$ H�5��)!��H�|$(1ɺH�D$(H�5l~�!��H�|$01ɺH�D$0H�5P~�� ��H�|$81ɺH�D$8H�5^��� ��H�|$@1ɺH�D$@H�5Ņ� ���F|����L�=�{L�t$XL�l$`L�d$hH��$�1ɺ L��L��H�D$X�] ��1ɺL��H�D$`H�5�}�> ��1��H���H�H�D$H�t$1�L��$��L��DŽ$�H��$�H�D$ DŽ$�H��$�H�D$(DŽ$�H��$�H�D$0DŽ$�H��$�H�D$8H�D$hH��$�H�D$@H��$�H�D$XH��$�H�D$`H��$��H��L�����H�|$h�����l��H�T$�H�H��I���0��H�|$`�&��H�|$X���H�|$@���H�|$8���H�|$0���H�|$(����H�|$ ����H�|$����H�|$����H��$dH+%(��H��L��[]A\A]A^A_�f.�H�QzH���Q��������L�=�yH�|$H1ɺ L��L�t$XH�D$HL�l$`�k��1�L���H�5�{L�d$hH�D$PH�D$XH��$��6��H�D$X1�L��
H�5�{H�D$`H��$��
��H�D$`1�L��H�5z{H�D$hH��$�����H�D$hI��1�H�t$HL�L$t�H�|$PH��$�H�H�D$tH�|$�D$|����H�|$���H�|$P������
��H�T$H�H�H��H�D$�K��H�|$h�A��H�|$`�7��H�|$X�-��H�|$H�#��H�D$H��H��x�_���������@H�������+��H�H��I��H�w�P�~ ��ff.�ATSH���H�����H�;H�I��H�xH��tH��PH��L��[A\���H���{+����AUE1�ATUH��SH��H��H�?��H�[H��tlH�{���H��H�C1�H�uH�AH�uH�EH�MH�4�H�H��t:H�{I���L���I�$H��H�C1�H�AH�uH�EH��H�8u�L� H�H��u�H��[]A\A]�H�WH��t2H��H��<u7L�$�L���
��L��1�H��I�����L�m�A���H�G0L�o0��H��=t���������H���*��f.���ATH��\I��USH�_H�H��t)f�H��H�H�}H��tH��P�H�����H��u�I�D$I�|$1�I��8H���\��I�|$�I�t$�I�D$�I�D$�L9�t[H��]A\�n��fD[]A\Ðf���ATH�C\I��USH�_H�H��t)f�H��H�H�}H��tH��P�H�����H��u�I�D$I�|$1�H�����I�|$I�D$8I�D$ I�D$I�t$H9�t	H������[L��]�HA\�����H��[ATI��USH�H�@���I�\$H��[I�$H��t,DH��H�H�}H��tH��P�H���f��H��u�I�D$I�|$1�I��8H�����I�|$�I�t$�I�D$�I�D$�L9�t[H��]A\���fD[]A\Ðf.���H�%[ATI��USH�H�@�R��I�\$H��ZI�$H��t,DH��H�H�}H��tH��P�H���
��H��u�I�D$I�|$1�I��8H���D
��I�|$�I�t$�I�D$�I�D$�L9�t[H��]A\�V
��fD[]A\Ðf.���H�eZATI��USH�H�@���I�\$H�ZI�$H��t,DH��H�H�}H��tH��P�H����	��H��u�I�D$I�|$1�H�����I�|$I�D$8I�D$ I�D$I�t$H9�t	H���	��[L��]�HA\�	�����H��YATI��USH�H�@����I�\$H�FYI�$H��t,DH��H�H�}H��tH��P�H���&	��H��u�I�D$I�|$1�H������I�|$I�D$8I�D$ I�D$I�t$H9�t	H������[L��]�HA\�������AUATUH��H��SH��H��8dH�%(H�D$(1�H�L�l$L�d$L��1ɺH�5�{H�D$L������L��L���H���u��H�|$���H�|$���H��L���A�A�H�
�v���H�}xH�s@H��P8L���h��H�D$(dH+%(uH��8[]A\A]��h
����H���&����H���&��AWAVAUATUSH��(H�|$H����H�D$L�pM���gM�~M���<I�GH�D$H���H�D$H�hH����L�mM��tdM�eM��tM�L$M����I�YH��t)H�{L�L$�j���H��H�[�(�)��L�L$H��u�I�Y�(L�����H��tiI���L�e�(H������M��t,L���u���fDM�e�(L������M��t�M���Z���H�|$�(H�o���H��t3H�l$����I�D$�(L��H�D$���H�D$H��t�I������I�_�(L���f��H��tI������I�^�(L���H��H��tI�����H�|$�(H�_�(��H��t
H�\$�e���H��([]A\A]A^A_�f.���H�eVATUH��SH�H`H�G H��8H�G(H��8H�G0H��@H�G8H��0H�G@H��0H�GHH��8H�GPH�xH��P H���H��tH�{����H��H�[�(���H��u�[H��]A\�@����I���N$��@��UH���S���H��]�*��f.�AWAVAUI��ATI�Ժ
UH��H��SH��dH�%(H��$�1�L�t$L���^����$�H�L�|D���h��I�EE��u/H��$�dH+%(��H�ĨL��[]A\A]A^A_��-�@bgH�XH�T-f�HH��u2Hc�$�HӺ.f�H�{H�,H��u2I�ED�x1�f�D+낐L��H��H�T$����H�T$�f�H��L����������ff.���AW1ɺAVAUATI��H�5swUSH��H��XdH�%(H�D$H1�L�l$(H�l$0H�D$(L���O��1ɺH��H�D$0H�5;w�0��L��H���L�����H�|$0L�|$L�t$ �
��H�|$(��
��L��H�D$�~��L��H�D$ �m���C@�tL���^���C@����H�D$HcPH�D$ Hc@L�|D�����H�D$(H��E�����H�5��H��H�D$0��
��L��H���L�����H�|$0�I
�����L��H��A�A�H�
'q���H�����H�|$(�
��H�|$ �

��H�|$�
��H�D$HdH+%(��H��X[]A\A]A^A_�DL���p������H�t$L�pHcFH�H��u:H�t$ Iֺ fA�I�~HcFH�H��u01�D�{fA�D����H��L��H�T$���H�T$�H��H�T$�r��H�\$(H�T$��Q����H���� ����H���� ����H���� ��ff.�f�AWAVAUATUSH��dH�%(H�D$x1���l��tD�=mL�%�l��H�D$xdH+%(��H�ĈL��[]A\A]A^A_��L�%AlL���Q����t�H�|$(1ɺ)H�D$(H�5�|�|��H�D$0�l���D�=�lH�l��H�H�l$P1ɺ<H��H�5}H�D$`H�\$`H�D$XH�l$0H�D$P���H�T$PH�߾��	��H��E1�E1�S1�1�H��jH�D$pPjjH�t$X���H��0H�����H�|$`���H�|$0�������H�T$(�H�H��H���	��H�|$P�w��H�|$(�m��L��H�k����=kL�%k�z���f.����H�8H���0���=QktH�;�?���J���f.��1k��i���zL�l$HH�l$PL�5�lH�|$@1�L���!H�D$8H�D$@��
��H�D$@1�L��#H�5�{H�D$HH�D$`�
��1�H��<H�5y{H�l$8H�D$P�
��H�D$`1�H��PA��jjjL�L$hH�L$p���H�� H�����H�|$P�5��H�|$H�+��H�|$@�!��H�|$8�w�����f�L�5�iL������������1�H�|$8�%H�D$8H�55zL�l$H�����H�\$`H�D$@�	��1�L��5H�H�5'zH�l$PH�D$`H�D$hH�D$XH�D$H���H�T$HH�߾�k��1�H��2H�5zH�l$@H�D$P�W��H�T$PH�|$h��3��H��E1�E1�S1�1�H��jH�D$pPjjH�t$h����H��0H���?��H�|$`���H�|$h����H�|$@�A������H�T$8�H�H��H�����H�|$P���H�|$H���H�|$8���L��H�Sh�����5���f�L�=AgL�l$HL��H�l$PL�5Uj� �����o���1�L���!L��H�D$H�M���H�D$P���H�T$HE1�E1�H��H������H���G��H�|$P�]�������H�T$H�H�H��H�D$����H�|$H����H�D$L��H��f�������f��+��H�8I������=�gtI�?����J���f.���g�:f����L�l$HH�l$PL�5IiL�\$@1�L���!L��L�\$H�D$8H�D$@�;
��H�D$@1�L��H�5�w
H�D$HH�D$`�
��1�H��5H�D$PH�5hw��	��H�D$`L�T$81�PL��A�
�H�D$jjjL�L$hH�L$pL�T$(�
��H�|$(H�� ����H�|$P���H�|$H���H�|$@�}��H�|$1�L��H�D$@�!�p	��H�T$@1�L��H�D$HH�53iH�T$`��G	��1�H��2H�D$PH�5�v�(	��H�D$A�1ҾPjjjL�L$hH�L$pH�|$(�;
��H�|$(H�� ���H�|$P����H�|$H����H�|$@���H�|$8�������L�qdL�l$HL��H�l$PL�5�g�P������/���1�L���!L��H�D$H�}���H�D$P���H�T$HE1�E1�H��H�����H���w��H�|$P�����C���H�T$H�H�H��H�D$���H�|$H���H�D$L��cL��H��c�0����������H�����f.�AWAVAUATUSH��dH�%(H�D$x1��c��tD�=ucL�%c�H�D$xdH+%(�H�ĈL��[]A\A]A^A_��L�%�bL��������t�1�H�|$ �H�D$ H�5AfH�\$P�'���L�t$8H�D$(�_��1�H�|$0�5H�L�l$@H�l$(H�D$PH�D$XH�5
fH�D$HH�D$`H�D$0���H�T$0H�߾���1ɺ/L��H�D$8H�5�e���H�T$8H�|$X��l��1ɺ8L��H�D$@H�5�e�]��H�T$@H�|$`��9��H��E1�E1�S1�1�H��jH�D$`PjjH�t$P���H��0H���E��H�|$P���H�|$X����H�|$`����H�|$(�=������H�T$ �H�H��H�����H�|$@���H�|$8���H�|$0���H�|$ ���L��H�a�����=aaL�%�`���@���H�8H���X���=9atH�;�g�������f��!a��`����L�t$8L�l$@L�=	dL�T$01�L���!L��L�T$H�l$H�D$H�D$0���H�D$01�L��L��d�H�D$8L��H�D$P����1�L��5H�D$@H�5�c���H�D$P1�H��PA��H�D$jjjL�L$XH�L$`���H�� H�����H�|$@�U���H�|$8�K���H�|$0�A���H�|$ 1ɺH�D$ H�5d�0��L�dH�|$(1�L�޺H�D$(���H�T$ 1�L��H�|$��D$PH�T$`H�T$(f�D$hH�T$X�!H�D$0����H�T$01�L��H�D$8H�5�cH�T$H����1�L��/H�D$@H�5�b���H�T$H�H��RA�1�jH�D$PH�D$jL�L$XH�L$`���H�� H���q���H�|$@�'���H�|$8����H�|$0����H�|$(�	���H�|$ ���H�|$1�L��H�D$0�!����H�T$01�L��H�D$8H�5�bH�T$P�����1�L��8H�D$@H�5Gb���H�$1ҾA�H��PjjjL�L$XH�L$`���H�� H�����H�|$@�Z���H�|$8�P���H�|$0�F���H�|$�������H�-�]L�t$8H��L�l$@L�=a���������1�L���!L��H�D$8����H�D$@�:���H�T$8E1�E1�H��L������L�����H�|$@�
�������H�T$8�H�H��H�$���H�|$8�|���H�$H��H�>]����K����o���ff.�@AWAVAUATUSH��8dH�%(H��$(1���]��tA�=�^L�%�]��H��$(dH+%(��H��8L��[]A\A]A^A_ÐH�-�]H�������t�1�H�|$h�H�D$hH�5	oH��$�����L�d$pH�D$p���f�1�H�|$xH��3H�5�n)�$�)�$�L��$�L��$�)�$H��$�HDŽ$H�D$x�8��H�T$xH�߾����1�H��$��1H�5�nHDŽ$����H��$��H��$�����1�H��$��1H�5�nHDŽ$����H��$��H��$����1�H��$��:H�5�nHDŽ$��}���H��$��H��$��S���1�H��$��=H�5�nHDŽ$��<���H��$��H��$����1ɺ:L��H�5�nHDŽ$�����H��$��H��$����1ɺ=L��H�5�nHDŽ$�����H��$��H��$���H��E1�E1�S1�1�L��jH��$�PjjH��$��<�H��0L�����H��$��S���H��$��F���H��$��9���H��$��,���H��$����H��$����H��$����H�|$p�[������H�T$h�H�H��H������H��$�����H��$����H��$����H��$����H��$����H��$����H�|$x�}���H�|$h�s���H��H�9Z����=�ZL�%&Z�C������H�8H�D$ �>����=�ZtH�D$ H�8�H���������Z��X���jL��$�L��$�L�=�[H�=cZ��H�=]ZH�&m�PH�=8ZL�Am�H�=SZ��1�L��H�l$P�!H��$�H�D$PH��H�D$HDŽ$����1�L���#H��$�H�5;mHDŽ$�H��$��R���1�L��3H�5�jHDŽ$��0���A�1�H��H��$��H�L$QjjjL��$�H��$��7���H�� H������H��$����H��$���H��$���L��`H�|$X1�L�޺
H�D$X���H�|$`1ɺH�D$`H�5k[����H�D$XH�t$h1�I��H�5~`DŽ$�H��$�H�D$`L��L�D$@H��$��f��$�H�D$h�!���H��yL�L$p1�H��L�ϺL�L$HH�D$p���H�T$hH�t$x1�DŽ$I��H�5�jH��$H�T$pL��L�D$(H��$�f��$�+H�D$x���H��$�1ɺ(HDŽ$�I��H��H��$�L��L�L$0�a���H�\$81�H��L��jH��$��*HDŽ$�L���/���1�H�ߺ(H�5�jHDŽ$��
���H�|$1�L���!HDŽ$����H�T$xL��1�H�5�xHDŽ$�H��$�H��$�H��$�H��$�H��$�H��$�H��$�H��$�H��$���~���1�L��1H�5
hHDŽ$��\���E1�1�H��H��$�H�t$V�j�t$jL��$�H��$��d���H�� H���H�H��$���H��$����H��$����H��$����H��$����H��$���H�|$x��H�|$p��H�|$h��H�|$`��H�|$X��L��]H�|$(1�L�ֺH�D$x�t���H�|$01ɺH�5HXHDŽ$��P���H�T$xH�|$8�f��$�1�H�5@hH��$�H��$�DŽ$�H��$��+HDŽ$����1�H�ߺ(H�5�hHDŽ$�����H�|$1�L���!HDŽ$����H��$�1�L��H�4vHDŽ$�H��$�H��$�H��H��$�H��$�H��$���`���L��1ɺ1H�5'fHDŽ$��>����t$1ҾjA�H��t$jL��$�H��$��M���H�� H���1�H��$����H��$����H��$����H��$���H��$���H��$���H�|$x��L��[H�|$@1�L�޺
H�D$h���H�|$H1ɺH�D$pH�5PV�d���H�D$hH�|$(1ɾ�	DŽ$�H��$�H�D$pf��$�H�5H[H��$�H�D$x����H�gH�|$01�H�ƺ*HDŽ$����H�T$x1ɿf��$H�|$8H�5�eH��$H��$�DŽ$H��$�+HDŽ$����1�H�ߺ(H�5 fHDŽ$��o���H�|$1�L���!HDŽ$��O���H��$�1�L��H�5�sHDŽ$�H��$�H��$�H��$�H��$�H��$����1�L��:H�5�cHDŽ$����t$E1�1�j�H��t$jL��$�H��$����H�� H�����H��$���H��$��w�H��$��j�H��$��]�H��$��P�H��$��C�H�|$x�9�H�|$p�/�H�|$h�%�L�:YH�|$@1�L�޺
H�D$h��H�|$H1ɺH�D$pH�5�S���H�T$hH�|$(1�L�YA�DŽ$�H��$�H�T$pL��fD��$�H��$��	H�D$x��H�|$01�H��dH�ƺ*HDŽ$��q�H�D$xH�|$81�A��+H�5ccDŽ$H��$H��$�fD��$H��$HDŽ$���1�H�ߺ(H�5�cHDŽ$����H�|$1�L���!HDŽ$����1�L���H��$�H�5mqHDŽ$�H��$�H��$�H��$�H��$�H��$���1�L��=H�5�aHDŽ$��`�t$E1�1�j�H��t$jL��$�H��$��r�H�� H���V�H��$��	�H��$���H��$����H��$����H��$����H��$����H�|$x��H�|$p��H�|$h��L��VH�|$@1�L�ֺH�D$h��H�|$H1ɺH�D$pH�5aQ�u�H�D$hH�|$(L��VA�L��1ɺ	H��$�H�D$pfD��$�H��$�DŽ$�H�D$x��H�>bH�|$01�H�ƺ*HDŽ$���H�T$xH�|$81�A�H�5�`DŽ$H��$H��$�fD��$H��$�+HDŽ$���1�H�ߺ(H�5*aHDŽ$��y�H�|$1�L���!HDŽ$��Y�H��$�1�L��H�5�nHDŽ$�H��$�H��$�H��$�H��$�H��$����1�L��:H�5�_HDŽ$�����t$E1�1�j�H��t$jL��$�H��$���H�� H�����H��$���H��$���H��$��t�H��$��g�H��$��Z�H��$��M�H�|$x�C�H�|$p�9�H�|$h�/�L�ETH�|$@1�L�ֺH�D$h��H�|$H1ɺH�D$pH�5�N��H�T$hH�|$(1�L�T�DŽ$�H��$�H�T$pL��f��$�H��$��	H�D$x��H�|$01�H��_H�ƺ*HDŽ$��}�H�D$xH�|$81ɺ+H�5u^DŽ$H��$H��$�HDŽ$�H��$�f��$�$�1�H�ߺ(H�5�^HDŽ$���H�|$1�L���!HDŽ$����1�L���H��$�H�5{lHDŽ$�H��$�H��$�H��$�H��$�H��$���1�L��=H�5O]HDŽ$��n��t$E1�1�j�	H��t$jL��$�H��$���H�� H���d�H��$���H��$��
�H��$���H��$����H��$����H��$����H�|$x���H�|$p���H�|$h��H�|$P���t�f�H�-aHL��$�H��L��$�L�=oK�:�����1�L���!L��HDŽ$��d��HDŽ$���E1�E1��H�H��$�L�����L���X�H��$��k���!��H��$��H�H��H�����H��$����H��H��G������H�i\�H�=MI�x���L�ҾH�=I�\�����H�ھH�=�H�<����H�y[�H�=�H���^��N��ff.���H�H�G�ff.����AUATI��USH��H9�tmH�.H��H��t
H�EH��PI�<$I�,$H��tH��PL�kM��tQ�X���L��H��H���1�M�l$I�l$M��tL������XL�����H��L��[]A\A]��1�����I���d������AWE��AVAUATUSH��H���t$L�t$8L�d$H�T$L��L�l$@�$dH�%(H��$�1�H�D$8��H�k`1ɺH�5:OL��H�D$H���1ɺL��H�D$@H�5O���L��L���H���b�H�|$@H��$@��H�|$H��f�H���*$�YbS
�]��H��$t�ωL$�x���L$H�D$HI������H�|$8�J�H�D$HL��H�D$HH�D$8����H�|$H�%�L�C`1ɺH�5�NL��H�D$HL�D$�
�H�|$L��L�����H�|$H���f�H���A*��Y�R
���H��$t�ωL$����L$H�D$HI�����H�|$8��H�D$HL��H�D$HH�D$8���H�|$H�m�L�C`1ɺH�5�ML��H�D$HL�D$�U�H�|$L��L������H�|$H�&�D���
H����L��$��4$�
L��L�D$��$����t$�
L��$�L��L�L$��$4�]�L�T$P�t$�
L��L�$��$��<�Hc�$4Hc�$���$�H�L�|Hc�$�I�I�D�����E��L�$L�L$H�D$HL�D$�,H�|$8�R�H�D$HL��H�D$HH�D$8����H�|$H�-�L�{`1ɺH�5sLL��H�D$H��L��L���L����H�|$H����L�s`1ɺH�5;LL��H�D$H���1ɺL��H�D$@H�5L��L��L���L���H�H�|$@���H�|$H���L�s`1ɺH�5�KL��H�D$H�q�1ɺ	L��H�D$@H�5�K�R�L��L���L�����H�|$@�%��H�|$H�����O
H��L�s`���H��L��H�D$H�‰�$t�J��1ɺL��H�D$@H�5_K���L��L���L���h�H�|$@���H�|$H���H�k`1ɺH�5�PL��H�D$H��1ɺL��H�D$@H�5K�r�L��L���H����H�|$@�E��H�|$H�;��H�k`1ɺH��;H�5�JL��H�D$@H�D$H��L��L���H����H�|$@����H�|$H����H�k`1ɺ$H�5;VL��H�D$H���1ɺ	L��H�D$@H�5ZJ��L��L���H���@�H�|$@���H�|$H�|��H�k`1ɺH�5&JL��H�D$H�i�1ɺL��H�D$@H�5J�J�L��L���H�����H�|$@���H�|$H���H�k`1ɺ0H�5�UL��H�D$H��1ɺL��H�D$@H�5�I���L��L���H���n�H�|$@���H�|$H���H�k`1ɺ9H�5`UL��H�D$H��1ɺ
L��H�D$@H�5_I�x�L��L���H����H�|$@�K��H�|$H�A��H�k`1ɺH�5,IL��H�D$H�.�1ɺ	L��H�D$@H�5
I��L��L���H����H�|$@����H�|$H�����L�c`���A�L��H��H��A�H�
�H������H�kXH�|$8���H��$�dH+%(�H�Ę[]A\A]A^A_�DH�xHc�$tH�H����H�E1��mmA�HfD�H���@H�HHc�$�H�H���H�� f�8H�HHc�$�H�H���2H�� f�0H�HHc�$4H�H����Hc�$�HѺ f�H�yH�H����H�D$HD�x1�f�D�8���@H�xHc�$tH�H��uKH��mmA�HE1�fD�@����H��L�D$(�L$$H�T$�j��L�D$(�L$$H�T$H�����@H��L�D$(�L$$H�T$�:��L�D$(�L$$H�T$H����H��H�L$H�$���H�L$H�$�8����H��L��H�$����H�$H�����DH��L��L�D$H�$����L�D$H�$H�����H��L��L�D$L�L$H�$���L�D$L�L$H�$H���R����t����H���j���H������H������H������H������H������H���6���H������H������H�������H������H������H������H�������H������H�����@��UH��AWAVAUATSH��dH�%(H�E�1�H��u'H�E�dH+%(�<H�e�[A\A]A^A_]�DH�� ���L�g`1�I��L������H��HDž ���H�5+EH��������1ɺL��H�5DL����HDž�������H��L�����L����H�����L�=
H���H�� ������I�u`H��A�A�H�
�D������H���HDž�H��H��������I���H��@���H�����H���(��f�H����4��H�����H����HDž���H������H��������M�u`1ɺH����H�5PCHDž�������H��������L��H�����o�H�����L����������AoD$(M�UpL��HDž���HDž���L����HDž����)�����
��jM��A�����jH����L��H�����H�����H������XZ�2��H�H����L�c1�L�sL���d�H��t�H�����L���
����D�p�E�D�����H�����I��E�������H�����b1��f�fA�fA�LPH��H��u�H����HcE�I�HH�H��uBH�1��)f�E�pf�p�7����H����d��H������H�����H�����H��L������H�����S��L������H����H����+����H���u���H������H���}���H�����f.���AVL�5���AUI��1�ATI��UH��1�SH��L��H�� dH�%(H�D$1��Q��H�;L��H��P(����H�uH��L��H��H��P(L�-Â��L��L�����L��1�1�L���	��I�$H�$I�L$H�$I�T$I�$H�D$H�T$H�T$I�D$I�T$H�T$H�L$H9�t/L��H�����H�D$dH+%(u H�� L��[]A\A]A^�@I�D$I�D$��������H�����f.���ATI��USH��H��dH�%(H�D$1�H��2��H�3H��H��PH�<$�H��@�wH��������tE1ɺH�5�EL���_��H�<$�F��H�D$dH+%(��H��L��[]A\�fDH�<$�H�N@�wH���T�����t1ɺH�5�BL�������H�<$�H�)@�wH��������t1ɺH�5@L������U���@H�<$�H�@�wH���������t1ɺ	H�5�?L���y������@H�$�H��?�pH�x������t1ɺH�5�?L���9������H�$�H��?�pH�x�X�����t1ɺH�5�?L��������H�$�H��?�pH�x������t1ɺ	H�5�?L������]���H�$�H��?�pH�x������t 1ɺH�5�?L������!����{��H�$�H�m?�pH�x�����t1ɺ	H�5j?L���D�����H�$�H�W?�pH�x�c����t1ɺH�5S?L��������H�4$L���G�������H����fD��H�>tUH�`H���I��H��]H�����DÐfD��UH�`H�����H��]H������f���AUATI��UH��0H�.dH�%(H�D$(1�H�=5�H��t2H�EL�l$H��4H��L��H�D$�xtGH�5p~��L�����I�$L�����H�D$(dH+%(��H��0L��]A\A]��L��H�5&~��H�l$ H�D$ �c��I�$L���S��H��t�H�EH��H��PH�4$�_� L��H�D$���H�D$I�<$H�D$�o��H�D$H�|$H�D$I�$����H�|$�I��H�<$�@��H�EH��P�)����H�AR�H�=�3�������������I�����f���H���A��L���H��t6L���	�H��H��tH�PH�HfD9@ r�H��H��H��u�I9�tf9w ��Ð1�Ðff.����AUI��ATUH��H�>H�}H��tH��P�X����L��H��I������L�e]A\A]���I���d���I���K��@��AUATUH��SH��H��H�>H�}H��tH��PL�kM��t1�X�W��L��H��I���y��L�eH��[]A\A]�f.�E1�L�eH��[]A\A]���H�������I�����fD��AUATI��UH�� dH�%(H�D$1�H�H�>tUL�l$H��L�����H�|$L���HI�<$H��tH��PH�|$L�D$I�<$M��t
I�L��PI�<$H�H��PH�D$dH+%(u
H�� L��]A\A]������H������H����@��AWAVAUATI��USH��HdH�%(H�D$8H���H+��H��������D$t
�x��A�D$|1ҋD$1�L�l$ L�|$L�5�z����yH�fD���H��L��H��H�E�H�D$ �xtQL��L������A�T$|H��9\$���$�����I��$�H�,�H��u�H��9\$���$��H�l$0L��L��H�D$0���H�l$H��t�H�E�L��1�H�D$H�5&:H�@(H�D$���H�D$L��H��L���H�D$ L��L��xtX�+��H�|$���H�EH��H���PA�T$|9\$�1���@�����H�T$8dH+%(uBH��H[]A\A]A^A_�H�D$(�8t�����H�|$����$A�D$|�D�W|�r��������H�����fD��AWAVAUATUSH��H��(L�&H�t$dH�%(H��$1��Ƈ�LJ�f���LJ�LJ��7��M��t4H��I�$H��$L��H��H��$�xt=H�5�x��H�����H��$dH+%(�0H��([]A\A]A^A_�DL��$L�5ax��H��HDŽ$L�����L�l$M��t�I�EL�d$L��L��PH�|$��1ɺL�|$ H��H�58L�l$HDŽ$���L��L��H��L����H�D$ �x�vL��L��L�|$@����H��$�i��1ɺH��H�5�7HDŽ$�W��L��L��H��L���V�H�D$@�x��L��L��L�|$`跿��H��$�
��1ɺH��H�5�7HDŽ$���L��L��H��L����H�D$`�x�HL��L��L��$��U���H��$���1ɺH��H�557HDŽ$���L��L��H��L����H��$��x��L��L��L��$���H��$�C��1ɺH��H�5�6HDŽ$�1��L��L��H��L���0�H��$��x�>L��L��L��$�苾��H��$����1ɺH��H�5�6HDŽ$����L��L��H��L�����H��$��x��L��L��L��$��&���H��$�y��1ɺH��H�586HDŽ$�g��L��L��H��L���f�H��$��x�<L��L���ɽ��H��$���1ɺL��H�5�5HDŽ$��
��L��L��L��H���	�H��$�@���������v����H��$D�8L��H���F���H��$����D������t-H�|$�?���H��tH���H���H��������H�|$H��tH��PH�|$H����H��P���������H��$D�8�c���@H�D$(�8����v���@H��$��8�������H��$��8����0���f�H��$��8������f�H��$��8����&���f�H�D$h�8������@H�D$H�8����-���@H��$D�8����H��L���ͻ��H��$�� �����H��$D�8�V���������H��L�l$�����H�������H�������H�������H�������H�������H�������H�������H������H������@��AW1ɺH�5[3AVAUATUSH��H��hH�o`dH�%(H�D$X1�L�d$@L�t$ H�D$@L���>��1ɺL��H�59
L�t$H�D$ ���L��L��H�����H�|$ ����H�|$@����H�s`L��A�A�H�
�2����/���H�C`H�=(H�hx��H��t-H�EH��'H��L��H�D$@�xt<H�5�q��L������H�|$�]���H�D$XdH+%(��H��h[]A\A]A^A_�H�l$PH�5�q��L��H�D$P�͹��H�l$H��t�H��H�5�&
L��`L�l$��H�3H��H�EL��L�xxH�D$@�@��H�T$@L��H��H�T$A��H�|$����L9�u�H�EH��P�8���H�P<�H�=�&�g������蝽����H������H������H��������AWAVAUATUSH��H��h�t$�T$�L$D�D$dH�%(H��$XH�G`H�=r&H�@xH�D$�cH�|$�H�t$H��$�H�C&H��H��H��$��x��H�5p��H���b���L�k`H�D$HH�D$1ɺH��HDŽ$�H�5�-L��$����1ɺL��H�5�-HDŽ$��p��H��L���L�����H��$��@���H��$��3���L�k`A��ntq1ɺH�50H��HDŽ$����1ɺL��H�5�/HDŽ$�����H��L���L���~��H��$����H��$����L�t$PL��$H�D$PL���6������������t�t$�
L��L��$������t$�
L����$T����Hc�$T��$H�L�DD��L�D$ �8���L�D$ H��$�H��E���H�|$P����H��$�H��HDŽ$�H�D$P脽��H��$��׿���t$�
L���V���t$�
L����$T�>��Hc�$T��$H�H�D����
L�{`1ɺH��H�5�+HDŽ$��z��L��H���L�����H��$��J���L�s`1ɺH�5�+H��HDŽ$��4��1ɺL��H�5|+HDŽ$����H��L���L�����H��$����H��$��վ��L�s`1ɺH�5@+H��HDŽ$����1ɺ	L��H�5#+HDŽ$����H��L���L���*��H��$��m���H��$��`����@/
L��L�s`�,��L��H��HDŽ$��‰�$D茾��1ɺL��H�5�*HDŽ$����H��L���L�����H��$����H��$��ݽ��L�s`1ɺH�5�/H��HDŽ$�����1ɺL��H�5B*HDŽ$����H��L���L���2��H��$��u���H��$��h���L�s`1ɺH��L��H�5�)HDŽ$�H��$��C��H��L���L������H��$�����H��$�����L�s`1ɺ$H�5\5H��HDŽ$�����1ɺ	L��H�5�)HDŽ$�����H��L���L���[��H��$�螼��H��$�葼��L�s`1ɺH�5;)H��HDŽ$��{��1ɺL��H�53)HDŽ$��Y��H��L���L������H��$��)���H��$�����L�s`1ɺ,H�5�5H��HDŽ$����1ɺL��H�5�*HDŽ$�����H��L���L���q��H��$�贻��H��$�觻��L�s`1ɺH�5�5H��HDŽ$����1ɺ
L��H�5b(HDŽ$��o��H��L���L�����H��$��?���H��$��2���L�s`1ɺ3H�5H5H��HDŽ$����1ɺ
L��H�5#*HDŽ$����H��L���L�����H��$��ʺ��H��$�轺��L�s`1ɺH�5�'H��HDŽ$����1ɺ	L��H�5�'HDŽ$����H��L���L�����H��$��U���H��$��H����L�{`芳��A�L��H��I��A�H�
.'���脷�����L�sX��L�s`1ɺ
H��H�5!)HDŽ$����1ɺL��H�5�%HDŽ$�����H��L���L���X��H��$�蛹��H��$�莹��H�D$`H�s`A�A����H��H�D$ H�
�&�ж��L���1ɺH�5�(L��L�=�%�L���L�C`1ɺL��H��HDŽ$�L�D$(�%���H�|$(L��H������H��$���L�s`1ɺH�59(H��HDŽ$��ݿ��1ɺ
L��H�5#(HDŽ$�軿��H��L���L���H��H��$�苸��H��$��~���H�s`L��A�A�H�
�'����ʵ��L�C`�t$�
L��L�t$XL�D$(�˼��L��H��HDŽ$��‰�$T�{���1ɺL��H�D$XH�5S)
����H�|$(H��L�����H�|$X�ݷ��H��$��з��L�C`�t$L��
L�D$(�F���L��H��HDŽ$��‰�$T���1ɺL��H�D$XH�5�*
臾��H�|$(H��L������H�|$X�X���H��$��K���L�C`�t$L��
L�D$(���L��H��HDŽ$��‰�$T�q���1ɺL��H�D$XH�5�#����H�|$(H��L�����H�|$X�Ӷ��H��$��ƶ��L�C`�t$L��
L�D$(�<���L��H��HDŽ$��‰�$T���1ɺL��H�D$XH�5�"�}���H�|$(H��L������H�|$X�N���H��$��A���H�s`H��A�A�H�
�%���荳��H������L�����L�C`1ɺH�5~%H��HDŽ$�L�D$(��1ɺL��HDŽ$�L���Լ��H�|$(H��L����_���H��$�袵��H��$�蕵��L�{`1ɺH�5�$H��HDŽ$�����1ɺ
L��H�5�$HDŽ$��]���H��L���L�����H��$��-���H��$�� ���H�s`L��A�A�H�
{$����l���Hct$Lc|$L��L�C`H��Hi��MbL��Ii��Mb����L�D$8I��H��&I��%H��%)�t$E��A��A)�A)ʺ
D�\$(D�T$0�'���L��H��HDŽ$��‰�$T�״��1ɺL��H�D$XH�5�%
�h���H�|$8H��L����H�|$X�9���H��$��,����D$L�C`L��Ii��Mb�
��L�D$H��&)�t$莸��L��H��HDŽ$��‰�$T�>���1ɺL��H�D$XH�58'
�Ϻ��H�|$H��L���Z���H�|$X蠳��H��$�蓳���T$+T$(L��ֺ
L�{`����L��H��HDŽ$��‰�$T踳��1ɺL��H�D$XH�5��I���H��L��L���ּ��H�|$X����H��$������t$L��+t$0�
L�{`膷��L��H��HDŽ$��‰�$T�6���1ɺL��H�D$XH�5
�ǹ��H��L��L���T���H�|$X蚲��H��$�荲��H�s`H��A�A�H�
�!����ٯ��H���Q���L���I���H�|$ �?���H�|$P�E���H�|$H��tH��PH��$XdH+%(�$H��h[]A\A]A^A_�@1ɺL��H�5!L��$������DH�T$PL��D�BA�D��D�D$ ��H�D$PD�D$ HcPH�LPHc�$H���`Lc�$TH�� f�H�HK�?M���1�fB�yH�D$PD�@���fDH�|$P�V���H�|$����H��$XdH+%(�9H�|$H�H�@H��h[]A\A]A^A_��@L��$�H�5Q_��H��HDŽ$�L�|$舧��L�|$HL�k`M���*�A��n��H�|$H�
LH��H�H�@xH��$���H��$�蛰��L�k`���f�f�L���*D$�Y[!
�V���D�x��$DD���s���H��$�H��E���?H�|$P�E���H��$�H��HDŽ$�H�D$P�ĭ��H��$�����L�{`1ɺH�5�H��HDŽ$�����L��H���L��莹��H��$��ѯ��f�L���*D$�Y� 
藹��D�x��$DD��质��H��$�H��E����H�|$P膯��H��$�H��HDŽ$�H�D$P����H��$��X���L�{`1ɺH�5�H��HDŽ$��B���L��H���L���ϸ��H��$�������DH�xHc�$H�H���H�A� fD�H�xHc�$TH�H���(H�� 1�f�0D�Af�x��DH�I(�H�=��`���H�|$���@H�D$HL�k`H��$���fDH��L��D�D$ �p���D�D$ H������H�H��L��D�D$(H�T$ �H���D�D$(H�T$ H���v���fDH�xHc�$DH�H����H�E1��mmD�yfD�X���@H�xHc�$DH�H����H�E1��mmD�yfD�P����@L��L�D$(H�T$ 讥��L�D$(H�T$ H��$�H�����@L��L�D$0H�L$(H�T$ �y���L�D$0H�L$(H�T$ H���S���L��H�L$(H�T$ �P���H�L$(H�T$ H���'���L��H�L$(H�T$ �,���H�L$(H�T$ H���;���������H�������H��������H��������H��������H�������H�������H��������H�������H���$����H���'����H���:����H���@����H�������H��������H���8����H���K����H���^����H���q����H�������H�������H�������H���{����H���o����H�������H���8����H���,����H�������H���b����H���u����H�������H�������H�������H�������H��������H���������U1ɺH�5�H��AWAVL�u�L�}�AUATSH��H���H��(���L�g`L��dH�%(H�E�1�H�E�L��8������1ɺL��H�5CH�E�L������ٱ��L��L�����L���f���H�}�L�-�X��親��H�}�蝪��H�s`L��A�A�H�
�������H���H���H��0���H9�u/��f.�H��8���L�����H��H9�0�����L�#�د��H��M��t�I�$H��8���L��H�E��xu�L�u�H��8���L��H�E�苠��L��H���M��t�I�L�e�L��L��PL�u�H��8���1ɺH�5oI�L�x(H�E�貰��H��8���L��A��H�}�A��艩��H�}�H��tH��PL��H���E����I��L��1�H�5L�p(H�E��U���H��8���L��L��A��H�E��@���5��E1���wH�E�D�0H��8���L��裟��H�}����H�="
L�;��M��t/I�H��8���H�
L���H�E��xtlH��8���L���U���L��H���M���d���I�L��H���PH9�0����[���H������o���H�E�dH+%(��H�e�[A\A]A^A_]�DL�}�H��8���L��H�E��ݞ��M��t�H��P���L��H�� ���H��I��PH��P���H�����H���fE���L��(���I�~`�}���H��H����H�8H�}����H�
�3I�~`L��(���H��8���L�u�H�M����L���X���H�}�蟧��H�u��L��H�9�G���H��(���H��8���1ɺH�5�H�E�L�@`L������c���H��8���L��H�����������H�}��/���L��(���1�H��8����
H�5�H�E�M�v`����1ɺL��H�5H�E���L���L��H��8����}���H�}��Ħ��H�}�軦��A����L��(���H��8���A�H�
�I�v`����M�v`����I��H��H���L��H��L��H��������M�t$�A�D$H�� ���L���4���H�� ���L��蕧���A�.�:H��8�������H�}�����H��P���H��tH��PI�L���P�@���DH�E�fD�0����f��˜��H�����H���o��H�����H��H��x���H��X���H�H�������P(L��x���M���S��I�L���PH��x���L��`���H��tH��PI�L���PA��I�E����H��8���L���P H�E�E1Ƀx�_H�=o	L�h	��L��L����n��H��8���L��H�����H��h���袛�����H�����H���n��H���H��H������H��p���H��P(H��x���H�����H�H�����H��PH�����H��x���H�M�H��tH��PH�����H��P����I�L���P��������H�����H��PH���H��PH�����t
H�����H��PI�L���PH�����H��P��������������H�i�H�=-�Ƞ���
���I�$L��P����L�M�����ƅ�����X���@L���PH�����H��P����L��H�&�L������U���L�����L���H����}�����H���F����H�������H�������H�������H��H��H���H������O���������H��H��H���H������#����H��������L����H�������H��������H��������H��������H��H��H���H����������H��������H���!����H��������H��������H��H��H���H����������H��������H��������H��H��H���H������Y����H���������AWAVAUATL�%MP��USH��(H�6H�|$dH�%(H��$1�H��$�H�$H��H��P H�D$@���H�|$@H��H�0L��U��ATH��$�L�
�O��H��$�襫��L�l$P_AXM����I�EH�5!1ɺ#H��$�H��H�X HDŽ$��R���H��L���H��$������%���L�t$@�˦��H��M��t+I�L��H��H��$��x�L��H��E1�舗��I��H��1�H�5�L�t$HL��$�H�D$PH�X(HDŽ$�蹧��H��L��L���H�5�H����H�D$PH��L�
�N��H�D$L��T��H��H��ATH��$�H��$��u���L��L�����H��$�=���Y^H��L��$�L���ؗ��I��L��1�H�D$XH�5�H�X(HDŽ$�����L��L��H���H�5�H���H�D$XH��L�
N��H�D$(L��S��H��I��ATH��$H��$�©��L��H���7���H��$�芟��XZH�|$X��H��$�L��H������L��H��莝�����FL���n���H��I���c���I9�L��$���H��L���7���H�D$ H�8H�|$`H��tH��P1�H��襞��L��L���
���H�\$xL��H�����H������H��H��L���t���H��H�D$(H�T$�"���L������H������1�L���H���L��H��譟��L���Ť��H��$�H��L��H��H��$����H��H�T$0I���ǖ��L��迖��H�L$H����r��H���eH���H���UH���H�L$(H�D$H�t$8H��$�H����H��$�M��t����I�DG�H�H�L$0H��$H����H��t����H�DA�HD$��H��$�
���H�t$8H��L��H��I���ԗ��H�D$hL��H��H�D$�o���L�t$h�5���H��M���@��I�L��H��H��$��x���L��$L��H��HDŽ$�ݓ��H�>I�L�t$pH�@ H�D$(H��uH���H�=�ؙ��H�	L�|$`H�
5K��H��L������L��1�H�5�HDŽ$��أ��H�D$(H��L��L����H��$�諜��H��L���@���H���(���H��H���mH�D$H���H��tH��PH�|$xH�\$L��$�H���M��tI�L��PH���H�H�t$�P8I�L���PH�|$hH��tH��PH�|$`H��tH��PH��$�H��t"H�0�
�;�'�E�P��U����H��$�H��t"H��
�;���E�P��U���H�|$XH��tH��PH��$�H��t"H���
�;���E�P��U���gH�|$PH��tH��PH�|$HH��tH��PA����C���A�H�|$@H��tH��PH�<$L�����H��$dH+%(��H��(D��[]A\A]A^A_�DA���H�|$`H��tH��PH��$�H��tsH���
�;�c�E�P��U��uUH�EH��H��H�@H9��8�;��E�P��U��u&H�EH�
�H��H��H�PH9��=�P�H��$�H��tsH�l�
�;���E�P��U��uUH�EH�JH��H�@H9����;���E�P��U��u&H�EH�
KH��H��H�PH9����P�H�|$XH��tH��PH��$�H��tsH���
�;�C�E�P��U��uUH�EH��G��H�@H9��]�;�D�E�P��U��u&H�EH�
�G��H��H�PH9��
�P�H�|$PH��tH��PH�|$HH��tH��PE1������L��$�L��L���
���H�D$����L��H��L��$HDŽ$�q������@�H��H�=��
耕��H�5��
����@�H�gH�=��
�X���H�5��
���@L��L���}����k�����������E�����������E�����������E������������E����H������fDH�EH�5F��H�@H9��q�;�/�E�P��U���f���H�EH�
2F��H��H�PH9����P�C���f.�H�EH��E��H�@H9���;���E�P��U������H�EH�
�E��H��H�PH9��6�P���f.�H�EH�uE��H�@H9����;���E�P��U���8���H�EH�
rE��H��H�PH9����P����f.��������E�a�����������E������������E������������E������������E������������E�k���H����O���H������H��������������E����������E�Z���H������H����4�����������N�����������o������N����������"�����H���׻����H���X�����H��L�|$`�ܻ����H���l�����H��麻����H���ܻ����H���q�����H��������H���=�����H��龻����H���λ����H���Q�����H���\�����H���[�����I���a�����H���`�����H��L�|$`�9�����H���5�����H���?���@��AWAVAUATUSH��dH�%(H��$�1�H��Hu.H��$�dH+%(�v
H�ĸ[]A\A]A^A_�DH�o`1ɺI��H��$�H�5�HDŽ$�H��蟛��H��$�1ɺI��H��H�5�HDŽ$�H�$�n���H��L��H�����H��$��>���H��$��1���I�t$`���H��$�H�
>H��H�D$0A�A��o���I��$8I��$(I��$�H�D$H�L$H9���o�H��
�D$(fHn��q�������H�D$PD�@E��tIM�|$`1ɺ	H��H�5�HDŽ$�脚��H�L$ H��L���������H��$��R���H�u(�
L���1���D�x	��$�D���>���H�D$XI��E���]
M�D$`1ɺ
H��H�5ZL�|$XHDŽ$�L�D$ ���H�|$ L��H�ھ��臜��H��$��ʒ��I�t$`H��A�A�H�

�������H��荋��H�|$X蓒��H�|$P艒��H�<$�p���H�U H�M(L���rH��蹅��M�D$`1�H�ߺH�5��HDŽ$�L�D$ �M���H�|$ L��H�ھ���؛��H��$�����I�t$`H�<$A�A�H�
������e���H�D$H�H���ωL$ ����L$ H�D$`I�Dž���M�D$`1ɺH��L�=HDŽ$�L��L�D$ 謘��1ɺL��H�D$pH�5�
荘��H�|$ H��L������H�|$p�^���H��$��Q���M�D$`1�L���H��HDŽ$�L�D$ �9���1ɺL��H�D$pH�5�
����H�|$ H��L��襚��H�|$p���H��$��ސ��H�uP�
L��M�|$`�x���L��H��HDŽ$��‰�$�����1ɺL��H�D$pH�5$�虗��H��L��L���&���H�|$p�l���H��$��_���H�uX�
L��M�|$`���L��H��HDŽ$��‰�$�艐��1ɺL��H�D$pH�5`�����H��L��L��觙��H�|$p���H��$����M�l$`1�H�ߺH�5.HDŽ$��ɖ��1ɺL��H�D$pH�5誖��H��L��L���7���H�|$p�}���H��$��p���M�l$`1�H�ߺH�5�HDŽ$��Y���H�L$H��L������H��$��'���I�t$`H��A�A�H�
������r���H�����H�|$`��H�<$�ׇ��H�|$X�ݎ��H�|$H�ӎ��H���˕��H��H9D$�]H�|$H�u(��I��H��t�H�E H�u(�
L��$ L��H�HD�pH�L$ �m�����$�H�M�DD��L�D$�r���L�D$H�D$HE����M�t$`1ɺH��H�5��HDŽ$��8���H�L$HH��L������×��H��$�����H�u0�
L��M�t$`蠍��L��H��HDŽ$��‰�$��0���H�<$1ɺH�5�	HDŽ$�轔��H�$H��L������I���H��$�茍��H��$�����H�u8�
L��M�t$`����L��H��HDŽ$��‰�$�詍��H�<$1ɺH�5�
HDŽ$��6���H�$H��L������–��H��$�����H��$����H�u@�
L��M�t$`蒌��L��H��HDŽ$��‰�$��"���H�<$1ɺH�5F�HDŽ$�诓��H�$H��L������;���H��$��~���H��$��q���H�uH�
L��M�t$`����L��H��HDŽ$��‰�$�蛌��H�<$1ɺH�5z�HDŽ$��(���H�$H��L�����贕��H��$����H��$����1ɺH��H�51�M�t$`HDŽ$��Ӓ��H�<$1ɺH�5�HDŽ$�谒��H�$H��L������<���H��$�����H��$��r���I�t$`H�<$A�A�H�
�����輈��M�wH�D$PL�|$`H�D$PH��H�D$ �Ȉ��I�V(H�u@L��L�|$����I�V0H�uHL�t$pL�����L���V����1�誏��L��fI~��=���1��葏���
��	�D$(fIn��y��������L���	���L��联��H�|$��$T��L��$�L���`���Hc�$T��$H�L�D
H�D$PE��uD�@����D@H�|$ D��D�D$(�j���H�D$PD�D$(H�5a�HcPH�LP� 1���f�f�AH��H��u�Hc�$H��H�H����Lc�$TH��, H�yK�?M���rH�D$PB�)D�@����@�b1�H�5���
�f�f�LPH��H��u�H�HK�6M����Lc�$�H�A�.fD�H�HK�6M���lH�D$HD�@E1�fF�q����fD�u1���H�=��	f�fA�TGH��H��u�H�t$HI�HcFH�H����H��)f�A�O1�f�H�����#1�H����f�fA�LPH��H��u�Hc�$�I�HH�H����H��)1�f�0E�xf�x�J����H�|$0�F����c�L��D�D$(�c���D�D$(H���t���fDH��L��D�D$<H�T$(�;���D�D$<H�T$(H���%���f�H���L$(H�T$ �����L$(H�T$ H�����DH��L��L�D$����L�D$H���w���H�t$ H��L�D$(H�T$���L�D$(H�T$H���$����H��L��L�D$(H�T$ ���L�D$(H�T$ H�������l�����H���~�����H��键����H���ͮ����H��饮����H���Ѯ����H�������H������H���Y�����H��������H��������H������H���׮����H���	�����H���
�����H��������H��������H�������H�������H�������H��������H���߮����UH��AWI��AVAUATI��SH������H��I��H��hH�������dH�%(H�E�1�H������讅��I�w I�(H��H������H�������p���L��L������H������H���7~��L��HDž�����d���H�=�
M�t$x��	M����	I�H������H���
L���H�������x�H������H�5�3��E1��|��HDž����H������L��@����
L������H�Eĉω������B~��������H������I������H����������H������H������HDž����H������艂��H�������݄��H������1ɺH�5^�HDž�����ȋ��L���L��H�������Q���H������蕄���
H��L���5����H�Eĉω������}��������H������I������H�������N���H������H������HDž����H�������Ɂ��H����������H������1ɺH�5Y�HDž��������L���L��H������葍��H�������Ճ��H���
L��H�4�H������H���e����
H�߉E�H������H��H�4�H���B���HcUĉ�4���H�H�L��H�������|��H������H���������mH�������Q���H������H������HDž����H��H�������ɀ��H����������1ɺH��H�5d�HDž��������L��H�ھ��L��虌��H������L��0����ւ��1ɺH��H�5:�HDž�����ʼn��1ɺL��H�5��HDž0���褉��H��L���L���1���H��0����u���H�������i���A��$ntm1ɺH�5O�H��HDž�����M���1ɺL��H�50�HDž0����,���H��L���L��蹋��H��0������H��������H�z�
1ɺL��H�5��H������HDž0����҈��L���L��H������H���X���H��0���蜁��H������萁��1ɺH��H�5;�HDž��������1ɺL��H�51�HDž0����^���H��L���L�����H��0����/���H�������#�����	L����L��H��HDž�����‰�t����U���1ɺL��H�5s�HDž0������H��L���L���q���H��0���赀��H������詀��1ɺH��H�5��HDž����蘇��1ɺL��H�5�HDž0����w���H��L���L������H��0����H���H�������<���1ɺH��H�5(�HDž�����+���1ɺ	L��H�5�HDž0����
���H��L���L��H������萉��H��0���L�������H������������L��L��A�A�H�
���}��H�����H������H������1�HDž���H��HDž���HDž ���HDž������	H������H��tH��PH��L��L���:H������1���~��H�������I���H������H������H��裇��H������H�����H������Iw��H������1��{~��H������H������H�������A���H������H����H�����w��H������L��L���%*L�����HDž���L���|��jM��A�L������jH����H�����H������L��誸H�����XZ�<~��L���D,L���l9H�����H�����H��H9�tII��M�eM��tL���?����XL���v��I�}H��tH��PL��H��I��H9�u�H�����H��tH�� ���H)��Iv��L���v��M��t	I�L���PH�������}��H�E�dH+%(�\H�e�[A\A]A^A_]�DL������H������H�5�+��HDž������s��L������M������A��$o����I�H�
��
H������L��H�@xH��������H�������|�����f.�H�0 0 H�xH�PHc�4���H�H����Hc]�H�� f�0H�xH�H����H�������H1�f�_�7���@H�xHcE�H�H���H�1��mmA�Hf�x����f�H�xHcE�H�H����H��mmA�HE1�fD�@����H���H�=u�
��x��M���g����HDž��������L��H�������t��H������H���)���f�H��H������H��������s��H������H������H������@L��L��p�����|���H�������s��L��p�����|���H������H�������L��L��p�����|���H�������ds��L��p�����|���H������H������3v����H��黣����I�������I��������I��������I���ۣ����I���ڣ����I�������H��������H���g�����H���s�����H���O�����H���7�����I���ȣ����H���+�����H��������H��������H�������H�������H�������H���ע���f���AWAVAUATI�Ժ
U����SH��H���dH�%(H��$�1�L�t$pL���{~��D�h��$�D����r��H�D$E���JL�{`L�l$P1ɺH�5�L��H�D$P貀��H�L$L��L������=���H�|$P�y���s�	L���S���L��H�|$ H�D$ �‰�$��y��H�D$ Hc@L�t	D���Nr���s1�H�5i�H�D$(�f�f�f�LPH��H��u�L�D$ H�HIc@I�pL�<H����J�9�,-H�HJ�9�)1�L��f�H�T$(H�5�D�rL�s`�	f�H1�H�D$P���H�L$(L��L������=���H�|$PL�t$0�~x��H�s`L��A�A�H�
`������u��L�{`1ɺL��H�D$PH�5���G��L��L���L���ԁ��H�|$P�x��H�s`L��A�A�H�
Z�����fu��H�{`H�t$f�l$H��x�L����p��L���p��H�|$(��w��H�|$ �w��H�|$�w��H��$�dH+%(��H���[]A\A]A^A_�DI�ǹb1�H���	�
Df�fA�LWH��H��u�Hc�$�I�2H�H��un1�E�ofA�t2�c���DH��L��L�$H�t$�4o��L�$J�8IcxH�H�,-H�?H��t<H�t$H��H�$�o��L�<$H������L��H�$��n��H�$���q��I��������H�������H�������H��������H��������H��������H���
�������AV1ɺH�5��AUATUH��H��8L�w`dH�%(H�D$(1�L�l$L�d$H�D$L���!}��1ɺL��H�D$H�5
��}��L��L���L�����H�|$��u��H�|$��u��H�u`L��A�A�H�
������s���-L��1�H�D$H�5m��|��L���H���H����(H�5|�L��1��r|��L��
�H���"����TH�5��L��1��L|��L�⾢'H������YH�5��L��1��&|��L�⾔'H��������H�5��L��1��|��L��'H������5H�5��L��1���{��L��'H�������H�5��L��1��{��L���%H���d�����H�5X�L��1��{��L��" H���>����,H�5�L��1��h{��L�� H��������H�5�L��1��B{��L��l�H����H�|$�t��L���m��H�D$(dH+%(uH��8]A\A]A^��n����H��铝����H��顝���fD��AVAUATU��SH��H��xH��f�t$H�t$��H��tAI��L���A�H��t;�(��l��L��L��D��H���D$f�F �g|��H���H��[]A\A]A^�f�L9�t�E1�f;j A���ff.���AWI��AVI��AUI��ATUH��H��PdH�%(H�D$H1�L�d$H�D$L���p��A�E1�1�L��L��H���tz��H�|$��r��H�û
L��H��H�EH`H�E H��8H�E(H��8H�E0H��@H�E8H��0H�E@H��0H�EHH��8H�EPH���Dž�HDž�H���H���HDž��o��H�}xH��PL��L����l��H�9��L�l$H�xH�D$�s��1�L��Hc�H��H�t$H��L���1�H��tH�H��tH�H�y����nH�|$��q��H����	H�xH�D$�r��1�L��Hc�H��H�t$H��L���$�H��tH�H��tH�H�y�d��oH�|$�dq��H�
�
�5�
H�xH�D$�9r��1�L��Hc�H��H�t$H��L���H���UL�0H�|$�q��M���II�F�x��ƅp��n��ƅrH����H�xH�D$�q��1�L��Hc�H��H�t$H��L���A�H��tH�H��tH�H�y�I��qH�|$�p��H�
��H�xH�D$�Wq��1�L��Hc�H��H�t$H��L����1�H��tH�H��tH�H�y����sH�|$�p���!L����Ns��� I���As��H�ƹ
L��L���t���HL����s���y
I���s��H�ƹL��L����s���|
L�����r���{
I����r��H�ƹL��L���s��L���D��H�|$H�D$@H�t$H9�t	H���g��H�D$HdH+%(�bH��P]A\A]A^A_�DH���
�5��
H�xH�D$�p��1�L��Hc�H��H�t$H��L����H��tH�H��tH�H�y����rH�|$��n�����DH�|$��n��I��H�$L���Sl���L��1�H�D$H�5&��u��H�|$1�L���t��H�|$����p�rn��H�<$�in���j���@I�F�8��p�S���DH�@�8�����f�H�@�8�����H�@�8���8����H�@�8������H�@�8�������h����I�������H��������I�������I��颗��ff.����AWAVAUATUH��SH��H��xdH�%(H�D$h1�H��t	���uBH��hH����H�T$hdH+%(��H��pH��xH��[]A\A]A^A_��@H�G`��pt���st�L�|$@�H�5��	H�D$@L���D$H#�s��H��8H����H��1�L��8H��L��L��H��L����I��H���H�H�D$��
���-H�|$��L��L���6I��H�EL�hI�EL������I�EL������I�EL����
t!I�EL��H�|$@�����-l�����H�|$��H����L�t$PH�{H�\$P��l��1�L��Hc�H��I�t$H��L���bH�|$PH����H�8����k��L��L��H�\$P�EH�|$PH��L�-&�
�k��H��
L�l$�pH�x�yl��1�L��Hc�H��I�t$H��L��L�l$H��H��tH�8�{f.�H��t8H�[H��t/f��CA�L��L��L��f�D$PH�D$@�P�u��H�H��u�L��L���d��I��H�} H���Yh��L����j��H�|$@��j���H�D$hdH+%(�-H��x[]A\A]A^A_�DH�D$H�EE1�L�h�H�����	�
���/H�D$H�EL�h����L�%��
L���!f�����������_c��foW�	1ҹdf�H,H�5���-@foD�	H���
�@(el@�f�f�LP.H��H��	u�1��@H�5l�
H�=��f�P@H���
��n��L���i���+���H����L�t$PH�xH�D$P�j��1�L��Hc�H��I�t$H��L���H�|$PH��t9H�8t3�yi��H�b�L��L��H�D$P��H�|$PH��L�l$H�Pi������Fi����������W����3���%����L�l$HA�H�
��L��L���Og���������L�l$HA�H�
��L��L���$g�����H�x��L�t$PH�xH�D$P�i��1�L��Hc�H��I�t$H��L����H�|$PH��t'H�8t!�h��H�)�L��L��H�D$P������_h������L�%��
L���d���������H�D$����L�l$H�����&h��H���
H���
H�\$�pH�x�h��1�L��Hc�H��I�t$H��H���l�H��t�H�8t�1�H�t$L���2H�xL�l$H�r���H�t$L���H�@A�H��u3���A��A��uf������f��DF�H�H�����P��A��~�A�t$���w�f��ts��f��DF���L�l$HA�H�
,�L��L���we������L�l$HA�
H�
�L��L���Ue�����L�l$HA�H�
��L��L���3e������A��T���H�D$@L�l$HA�L��H�
k�L��P�d��E���U����L��H�D$P�D$X�k���U,�u(H�}�a��H�L$8f�D$&H��H�L$��q�����_��H�t$1�H��H�D$��f��H�|$��H�T$4���I�ѺL��L�L$�eo��D�D$&H�L$�H�t$H�|$�p��H�D$8L���pH�P��O��H�|$8��e��A��8A����A��t2H�D$PL���pH�P�O��H�|$P�e���O����`��A�D$���w��D$ �t$ H�|$�e��D�D$&H�L$D��H�t$H�|$�p��H�D$8L���pH�P�IO��H�|$8�?e���D$ �D$ ��u�H�D$X�D$ H�D$(�6DH�D$PH�t$(L���P�o��H�|$8�d���D$ �D$ ��
�%����t$ H�|$�k��D�D$&H�L$D��H�t$H�|$�|o��H�D$8D�@H�HE��y��7�����H�������H��������H��������H���ݎ����H��������鱎����H��騎����H�������H�������H��鎎�����w����fD��AWAVAUATUSH��hdH�%(H�D$X1����t%H�D$XdH+%(��H��h[]A\A]A^A_�f�L�l$@L�g`1ɺH�5��L�|$ H��L��H�D$@�j��1ɺL��H�D$ H�5���j��L��L�����L���m��H�|$ �dc��H�|$@�Zc��H�u`L��A�A�H�
f�����`��H���H���H)�H�����9��L��@E1�H��H�D$�s�H�5I��L��1��Y��H�}`H�\$@�qd��H��L����^��H�|$@H��H��tH��PH�H�|$�P��t�G�����b��L;d$��H���I��L�1�L��H�H��H��HH��H���n�H��t�H�8t�H��L����H�D$@H�0L���Y��H�D$@H��H�D$�e��H��H���2���H�H��L��H�D$@�x����H�5P��L��H�\$PH�D$P�X�����DL����Z������H�}`H��L���H���H�D$@�`k��H�|$@�a��H�]`�L��H�D$@H�52���a��H�L$L��H�߾��� k��H�|$@�fa��H�u`L��A�A�H�
H�����^��L���*Z��H�|$����;\����H���݋����H��������H�������H�������H���ɋ����H������f���UH��AWAVAUATA��SH��H��H�����L�.dH�%(H�E�1��Tf��M��t=H��H�� ���L��H�����H��I�E�H�� ����xtEH�����H�5����W��E1�H�E�dH+%(��H�e�D��[A\A]A^A_]�f.�L��0���H�����H�5k��HDž0����V��L�� ���M��t�H�3H��(���H��PH�����D���E��trI�H������1�H�5��L������L�h(HDž ����f��H�����L��L��A��H������E1�x��L��H�5�
���V��H�� ����i_��L��0���H��L��藋��E��u2E����E1�H��0����:_��H��(����._��I�L���P���H��0����G��	t!��u�H���H�5O��V����u�럐H���	H�5��V����u�H��0����G�H��(����H����wH���X�����tPH�=�
L���M��t:I�H�����H��
L��H�� ����x��
H�����H�5�����T��L�����H�1�I��$�H��H�wH��H���^�H������H�8����I��$�H��HDž`���HDžh����H�@H������	1�H�5�H���I�L�`(HDž �����d��H������H�����L��H������H��A��H�5�
H����H��H����H�����H������PL�
���L����H��`����|g��H������H�5�����S��H�� ����=]��Hc�d���Hc�`���H���AZH��p���Hc�h���H��x���Hc�l���A[H������H�������5_��H��u(A����DH�������8A���I���DH��8���HDž8���H��H������GZ��H��������t.H��0����P����������	�PE����L�����H�����1ɺH�5c�HDž ���M�e`�Ic��H�����L��L����e��H�� ����\��I�u`���H������A�A�H�
���^Y��I�E`H�=:�
L�hx��M��t>I�EH�����H��
L��H�� ����x�H�����H�5�	��E1��5R��L��H���L��@���HDžH���L���Y��I��1�H�����H�5��L�p(HDž ����Xb��H����H�����L��H�����H��A��H�����x��H�����H�5[	���Q��H�� ����Z��H��H���D�HE��tGH�����L�����A�A�H�
a����H�p`L���(X��I�EL��L��P8L���S��L��P���HDžP���L���)X��I��1�H�����H�5�L�p(HDž ����ma��H�����H�����L��H�����H��A��H������x�%H�����H�5p���P��H�� ����Z��H��P���D�@E��tGH�����L�����A�A�H�
�����H�p`L���=W��I�EL��L��P8L���R��L�#��]��H��M��t7I�$H�����L��H�� ����x�H�����H�5���E1��P��H�����L�� ���H�x`��Z��H�����H���VU��H�� ���I��H��tH��PI�$�x��tSH�����H�����1ɺH�5p�HDž ���L�p`�`��H�����L���L���b��H�� �����X��H�����H�1�H��L���H��H���L��H��H����I��H��tL�0M��tH��L���*�L�pH��X���HDžX���H��H������V��H������L��H�����H��I��PL������H�����1ɺL�%��I�L��L����H�@(HDž ���H�����_��H�����H����H������H�� ���������W��������txI�L��L�����1ɺH�@(L��HDž���H�����^��H�����L��L��H������H�� ����x��
H�����H�5����N��H������[W��L�����H�����A�A�H�
6����I�t$`�T��H�����1ɺH�5��L�����M�d$`HDž ����
^��H�����1ɺH�5��HDž�����]��H��������L��H������j`��H������V��H�� ����V��L�����1�H�����HDž ����M�D$`L�%��L��L�����w]��H�����1ɺH�5��HDž����R]��H��������H�����H������_��H������V��H�� ����V��L��1ɺH�����L�����HDž ���L�@`L��L������\��H�����1ɺH�50�HDž����\��H�����L��H�������L������>_��H�����L�e��~U��H�� ����rU��H������
L�狵`���L�@`L������Y��H�����L��HDž ����‰E��U��H�����1ɺH�5k�	HDž����\��H��������H�����H�����^��H�������T��H�� �����T��H������
L�狵d���L�@`L�����=Y��H�����L��HDž ����‰E���T��H�����1ɺH�5��	HDž����y[��H��������H�����H�����]��H������>T��H�� ����2T��H������
L�狵h���L�@`L�����X��H�����L��HDž ����‰E��NT��H�����1ɺH�5o�HDž�����Z��H��������H�����H�����Z]��H������S��H�� ����S��H�������l���L��
L�@`L�����W��L��L�����HDž ����‰E�L���S��H�����1ɺH�5��HDž����6Z��H�����L��H��������\��H������R��H�� �����R��H�����L��A�A�H�
T����H�p`�8P��L���K��H��X����@����4L��HDž �����(����X�������E1�E1�H��0����L�L��H�����H��8���H��@���H��H���H��P���H��X���H��`���H��h���H�H��p����V����p�����������H�����L������
H�5G�HDž���H�H`L��H�����1���X��H�����L��H���������i[��H������Q��H�����L��A�A�H�
�����H�p`��N��H�����L�����H������H��p���H���A�����H�xpAVS譋YL��^�3J��H�� ����7Q��H������J��H������H��tH��PH��X����
Q��H��P����Q��H��H����P��M��t
I�EL��PH��������I��H��8�����P�����f�H��0���H�����H�5����HDž0���H������4G��H�����H����H���)�H�����H�����1ɺH�5��HDž ���L�@`L������VW��H�����1ɺH�5G�H��HDž���H������'W��H��������H�����H������Y��H�������O��H�� �����O��L��L������,S��L�����H��M��t6I�H�����L��H�� ����x�]H�����H�5����*F��E1�H�����L�� ���H�x`�Q��H�����H���qK��H�� ���I��H��tH�����H��PL�����H�����L�����L�P`I��@��tbH�����1ɺH�5s�L�����HDž ����V��H��������H�����H������X��H�� �����N��H�����L�P`H�����A�L��A�H�
������	L��H����H�����A��H��H�������H�����A���YG��H����H��tH��PE������f�L��0���H�����H�5{���HDž0���L������D��L���������H�ز�H�=]�
L������J��L������B�D�H��H�=��
�J��H�5�
��@H�����L�����H������H��p���H���A�����H�xpAVS�ӇXZ�5���H��8����`M��H�	�	1�H�����H��8����H�����H�5��HDž ���L�``�2T��H�����1ɺ
H�5w�H��I��HDž���H������T��L���L��H������V��H�������L��H�� ����L��H�����HDž����JJ��I��
1�L�����H�5�L�`(HDž ���L���S��H������L��L��H�����H��A��H�������@���������H������D� H�����H�5y�����B��H�� ����L��fA���:fA���fE����L�����H������H�5F�HDž ���L�``L���'L��H�����L���L���`U��H�� ����K��H������K���*�H�����H�5���L��0���HDž0����B�����H�����H�5����L��0���HDž0�����A�����H����H�=��
�G���J�H�x�	H�5���B���������E�������H��0����x	���H�x�	H�5S��B�����e�H�����H��������H�xH�5k��kB������A	�H��0����P��H�xH�5���DB����H��0���A�ŋP���H�����H�5�����@��H�� ����PJ��H�����1ɺH�5���FQ���9���H������fD� ���H����L��H�0�nG�����H�����L��H�0�WG�����H�����1ɺH�5b���P������H�����1ɺH�5J���P�����H��(���H�����H�0�F�����D����H���t����H���u����H��H����H������6u����H����t����H���,u����H���.u����H���>u����H����t����H���t����H���t����H���*u����H���/u����H���4u����H���:t����H���u����H���`u����H����t����H���t����H���	u����H���u����H����s����H���u����H���s����H���u����H���"u����H���3u����H���3u����H���8u����H���,u����H��� u����H���u����H���u����H���t����H����t����H���s����H����t����H����t����H���t����H����r����H���t��fD��AWD��AVI��AUATUSH��HH�|$H�>L�l$dH�%(H�D$81�H�H�D$�P(�$�����D$1�H�l$ L�%�����MH�|$����=��H�|$D��L���7�D$H�|$H�D$H��tH��P��9$��I�6��H��H��P0H�5i�
H��tDH��L��L�
���ATH�L$0L���H�T$8��P��ZL��YH���f����9=�����H�H�H�=
�
�HC��H�5�
���D$H�|$H��tH��PH�D$8dH+%(u�D$H��H[]A\A]A^A_��7A����H���Ws���f.���UH��AWI��AVL��h���AUI��ATSD��H��H��X���L��H��P���H��L��H���H��8���dH�%(H�E�1��2u��H��X���A���L�@`tH��h���D�PE����H�=٩
M�px��M��t3I�L�e�H���
L��L��H�E��x��H�5��L����;��L�u�L��X���L�=)����A�A�L��L��I�t$`�|B��I�MI��$�1�H��H�wH��L����H��t2H�8t,I��$�L���q�H�@H��H��@����F��H��������H��P���H�X���=��H��x�������H��X���L�e�1ɺH�5ٰL��H�E�L�k`�oK��H��x���L���L���M��H�}�L�m��;D��H��X������L�@`u
����r1ɺL��L��P���H�5�H�E��K��1ɺL��H�5��H�E���J��L��L���H��P����pM��H�}��C��H�}��C��L�����L��H��X���A�A�H�s`�@��H��H����H������L��A���X<��H��x����\C��L���D<��H��h����HC��H�E�dH+%(�#H�e�D��[A\A]A^A_]�H��H���H��X���1��k���A���fD����HDž0���L�e�H��P���L�hD����;��H��p���E����H��X���1ɺL��H�5�H�E�L�h`�I��H��p���L���L���6L��H�}��}B��H��X�������AH��X���L�m�L�@`��t
�����1ɺ
L��L��(���H�5(�H�E��4I��1ɺL��H�5)�H�E��I��L��L���H��(����K��H�}���A��H�}���A��L�����L��H��X���A�A�H�p`�&?��H��X���L��x���H�E�L��L��(���L�PpH�E�HDžx���L�� ����?��jA�L��H��@���L��(���jH�� ���H�Q(�{^_H��x����:A��L���":��H��p����&A��L��0���M���a���L���9���L���9���G���@L�e�L��L��H�B�L��H�E��J��H�}���@��H��X���H�=�
L�@`M�px�9���H�Q��H�=��
�h=������L�}�H�5��L��H�E��7��L�}�M���)���L�u�H�E�L����=��1Ʉ�t~�H�5"�L���JG��H��X���1ɺL��H�58�H�E�L�@`L��@����G��L��L���H��@����I��H�}���?��H�}���?��I�L���P����H�5��L����F���f.�H��P����-�@bof�HH�HH�6H�����XH��P���1�f�A���M�D$`1ɺL�m�L��X���L�e�H�5@�L��L��0���H�E��GF��1ɺL��H�5<�H�E��)F��L��L���H��0����H��H�}��>��H�}���>��H��X����L�h`�+8��A����L��H��A�H�
�H��0����!<������@1ɺL��L��P���H�5�H�E��E��1ɺ
L��H�5ܯH�E��uE��L��L���H��P����G��H�}��E>��H�}��<>��H��X���L�@`����@L�@`L�m�����H��P���A�-�@bgH�HfD�HH�6H����D�hH��P���E1�fD�A����fDH��8���H����5��H��H��x����*���f�1ɺL��L��(���H�5��H�E��D��1ɺ
L��H�5�H�E��}D��L��L���H��(����G��H�}��M=��H�}��D=��H��X���L�@`���@H��8���H���A5��H��H��p����$����8����H���Mj����H���+k����H���j����H���Wj����H���:j����H���Ij����H���j����H���Cj����H���%j����H����i����H���j����H���5j����H���~j����H���'j����H����i����H���zj����H���nj�����AWA��AVI��AUATI��USH���L$L�l$ �dH�%(H��$�1����H�D$ ���H�5ۢL����B��H�D$0I�t$`A�A�L���H��H�D$�;��A��$��]Ic��D$H��D;|$��fDI�.H�H�}��I�|$`�<��H��H���j7��M�D$`H�l$p1�I�źH�5��H��H�D$pL�D$�9B��H�|$L��H�����D��H�|$p�
;��I�H�H�9H�|$pH��tH��PI�H�I�UA�I��L��rH����H�|$pD$H��tH��PA��H��D9|$�(���H�|$�3��H�|$ �:��H��$�dH+%(���D$H�Ę[]A\A]A^A_�fD�H�5z�L���\A���p����H�l$pL�-K�1ɺL��H��I�\$`H�D$p�$A��H�D$P1ɺH�5g�H��H�D$H�D$P�@��H�T$H��H�߾���C��H�|$P��9��H�|$p��9��I�\$`1�L��H��H�D$p�@��H�T$H��H��H�5��H�t$P����1C��H�|$PH����p9��H�|$p�f9��1ɺH��H�55�M�l$`H�D$p�R@��H�|$1�H��H�D$P��5@��H�T$H��L����B��H�|$P�9��H�|$p�8��I�t$`H�|$A�A�H�
۟����E6��M�D$`1ɺH��H�5ӪL�l$(H�D$pL�D$�?��1ɺL��H�D$(H�5��?��H�|$H��L����#B��H�|$(�i8��H�|$p�_8��M�D$`1�H��
H�5@�H�D$pL�D$�F?��1ɺH��H�D$(L���+?��H�|$H��L����A��H�|$(�7��H�|$p��7��M�D$`1�H��H�5?�H�D$pL�D$��>��1ɺ
L��H�D$(H�5��>��H�|$H��L����EA��H�|$(�7��H�|$p�7��I�t$`H��A�A�H�
b������4��H���D0��M�D$`1�H��H�5g�H�D$pL�D$�;>��1ɺL��H�D$(H�5w��>��H�|$H��L����@��H�|$(��6��H�|$p��6��M�D$`1�H��H�5ϨH�D$pL�D$��=��1ɺH��H�D$(L���=��H�|$H��L����:@��H�|$(�6��H�|$p�v6��I�\$`1�H��H�5çH�D$p�b=��1ɺ
L��H�D$(H�5���C=��H��L���H����?��H�|$(�6��H�|$p�6��I�t$`H��A�A�H�
�����W3��H����.��H�|$��.���3�����0����H���d����H���c����H���
d����H����c����H���d����H���c����H����c����H����c����H����c����H����c����H����c����H����c����H���c����H���c���f���AWAVAUATUH��SH��L�o`H�t$�T$(�L$,dH�%(H��$�1�����������tlH�\$L��L�#�L6��H��L���0��H�H��rH��H��$�dH+%(��	H��L���H��E1�[]A\A]A^A_�Z�f.�L��$�1ɺ
HDŽ$�H�5|�L��L��$��>;��1ɺL��H�3�HDŽ$�H��H�\$0�;��L��L��L���=��H��$�L�=ޚ��3��H��$���3��H�D$pH�u`A�H��L�����H�D$8A��1��H��$�H�u`A�L�����H��H�D$A���0��L�m`1ɺL��H�5��HDŽ$��c:��1ɺL��H�5��HDŽ$��A:��L��L��L����<��H��$��3��H��$��3��L�m`1ɺH�5٤L��HDŽ$���9��1ɺH��HDŽ$�L����9��L��L��L���]<��H��$��2��H��$��2��H���D�hA��D���+��H�D$`H��E���JL�m`1ɺ	L��H�5��HDŽ$��U9��H�L$`L��L�����;��H��$��#2��H�u`L��L��A�A�����s/��H�]`1ɺ
L��H�5M�L�l$hHDŽ$���8��L��L���H�&�H��H�D$h�i;��H�|$h�1��H��$��1��1ɺL��H�5~�H�]`HDŽ$��8��H�t$01�L��H�D$h��o8��L��L���H���:��H�|$h�B1��H��$��51��H�u`L��L��A�A�����.��L���)��L���)��H�|$`�0��H�|$��)��H�|$8��)��L�m`����
���L��$�1ɺ
HDŽ$�H�5�L��L��$��7��1ɺL��H���HDŽ$�H��H�D$0�7��L��L��L���:��H��$�L�=T��S0��H��$��F0��H�D$pH�u`A�H��L�����H�D$8A��-��HcD$(H��H��H�D$;\$,���H�|$8��(��H��$�dH+%(�6H��[]A\A]A^A_�DH�D$H�\$H�H�H��t	H�H��PH�\$XH���(���L�m`tu1ɺH�5�L��HDŽ$��|6��1ɺ
L��H�5ŠHDŽ$��Z6��L��L��L����8��H��$��*/��H��$��/��L�m`H��$�A�L��L��A����H��H�D$�],��H�D$H�}`L�l$L(�g0��H��L����*��H��H��H��
�ωL$ ��'���L$ H�D$`I�Ņ���L�m`1ɺL��H�5�HDŽ$��5��H�L$`L��L����8��H��$��Y.��H�u`L��L��A�A�����+��L�m`1ɺL��H�5��HDŽ$��#5��H��L���L���7��H��$�L�l$h��-��L�E`1ɺH�5ßL��HDŽ$�L�D$ ��4��H�t$01�L��H�D$h��4��H�|$ L��L����A7��H�|$h�-��H��$��z-��H���D�@A��D��D�D$ �n&��D�D$ H�D$hH��E��� L�E`1ɺ	L��H�5��HDŽ$�L�D$ �-4��H�|$ L��L����6��H��$��,��H�u`L��L��A�A�����K*��H�H�D$L�l$XE1�H�L$M��H��rHH����L���%��H�|$h�,��L���%��H�|$`�,��H�|$�s%��H�|$XH��tH��P�D$(�D$(H�D$9D$,�Z���H�D$X����|���H���H������������u1���H�5��	f�f�TAH��H��u�H���H�yHcFH�H����H��)f�D�A1�f�H�~���fD�c1�H�5'��f�fA�TEH��H��
u�H�3I�}LcFK�M��u1�A�MfB�4G�����H��L�D$@�L$ �~#��L�D$@�L$ H����H��H�L$HD�D$@H�T$ �X#��H�L$HD�D$@H�T$ H���@����u1�H�
��	��f�f�TCH��H��u�H���H�KHcBL�H��uJ��)E1�f�8D�kfD�@�\���H�rH��L��L�D$��"��L�D$H�����%����H���@Y����H���yY����H���GY����H���mZ����H���'Y����H���bY����H���VY����H���Y����H���ZY����H���pY����H���Y����H��L�l$X�[Y����H���Y����H���Y����H��L�l$X�DY����H���Y����H��L�l$X�1Y����H���Y����H��L�l$X�!Y����H����X����AWAVAUATUSH���H���H+��dH�%(H��$�1�H����u2H��$�dH+%(�/H���[]A\A]A^A_�f�H��$H�w`I��A�H��A�H�
1����H��$@H��$�L��$��Y&��M�o`�H��H�5^�HDŽ$@�%)��1ɺL��H�5�L�t$8HDŽ$��/��H��L��L���;2��H��$��~(��H��$@�q(���
��M�o`H��$�H��I����,��L��H��L�d$�‰�$�HDŽ$@�(���H�5ʫL��HDŽ$��n(��H��L��L���1��H��$���'��H��$@��'��L�l$A�w|�
M�g`L���W,��L��H��HDŽ$@�‰�$��(���H�5s�L��HDŽ$���'��H��L��L���$1��H��$��g'��H��$@�Z'��M�g`A��$sto1ɺH�5��H��HDŽ$@�9.���H�5%�L��HDŽ$��i'��H��L��L���0��H��$���&��H��$@��&��I������H����H���H���H�������$�A��A�����t{H�|$8HDŽ$��#$��fA������fE���hfA��u)H�|$81ɺH�5ߘ�Y-��DŽ$�fDH��$�D�GE���s�&��I�w`H��$ A�A�H�
�����H��H��$��Z#��H��$��H�5��HDŽ$��%&��A���������H�D$�C�H�D$HH�D$@H�D$hH�D$�>�H�5���H�����H�L$H�D$@H+D$H�D$PH�AH9L$H��fDH�D$H�L$I���H�=w�
H��A��L�+�M��t�I�EH�W�
L��H��H��$@�x�u���L��$PH�56��H��HDŽ$PL�t$ �m��M���S���H�t$ H��$�H�|$0H��PH�|$D��
�*)��H��$���$�H�HcRL�lD�����H��$�I��E���M�g`1ɺH��H�5��HDŽ$@�N+��H���L��H��$���-��H��$@�$��M�g`L���%��H��H��� ��H��H��H�%�L���H��$@�-��H��$@��#��M�g`L���W%��H�t$0H������H��H��H���L���H��$@�H-��H��$@�#��A���H�T$@H+T$��$�H�T$P��t=L�#�)��H��M��t-I�$L��H��H��$@�x�SH�5���H������I�w`A�H��A�H�
�����x ��H������H��$���"��H��$�H��tH��PH�|$ H��PH�L$H�AH9L$H�y���A����\H�D$hH+D$1�I�_fieH��Lc��%DM�w`1ɺH��H�5َHDŽ$@�r)��H�L$8H��L������+��H��$@�@"��H�D$I�w`H�<�H��PH��$�H���"��I9���
H�|$�
���&��D�p��$�D�����H��$�H��E���S���fo�	�_L�hH�x&�@ ldf�P$@Hc�$�H���1�D�qf�D&����fA���S���H�|$81ɺH�5!��(��DŽ$��+���H��$�H�HHcFL�4H����
Hc�$�Iξ_fA�6I�~H�H���N
1�E�l$fA�L���@H����H�==�
�������L��$PH�5)��H��HDŽ$P�e��L��$�M�������L��$�HDŽ$�L���8��L�t$8I�E1ɺH�5<�L��H�X(HDŽ$��y'��L��L��H���H��$@�x�|H��H�5�������H��$��0 ��H��$����H��h
HDŽ$�H��$�L��$�H��$�H��$�H��H�D$`H��$���$�HDŽ$�HDŽ$�HDŽ$�HDŽ$�HDŽ$��3��H�L^
��H��$@H��$�H��$(H�D$pH��$�H��^
H��$�H��$xH�D$xH��$HH��$�H��H��$���$��$hHDŽ$HDŽ$HDŽ$HDŽ$ HDŽ$(DŽ$0HDŽ$PHDŽ$XHDŽ$`HDŽ$pHDŽ$xHDŽ$��"��H�{]
�
1�H��$@I�EH�5X�HDŽ$�H�X(H��$`HDŽ$`I��H��H�D$(�=%��L��L��L������#��H��$�H��H�Z��H�0H��$�H��L�%��L�
.��RH��$�H��$��'��H�5!��L���i��H��$p���L��$XZM����I��	L��1�H�5`�L��$@L�D$XH�X(HDŽ$��$��H�t$XL��L���H�5�
H���nH��$@H����H��PH��$PL�
s��L�\��H��$X�?'��L��H�5e�������H��$����A\X��tD��$@E���)I�E�L��1�H�5/�L��$`H�X(HDŽ$���#��L��L��L���H��$`�x�:
L��H�5����+��H��$��~��I�E�L��1�H�5؊L��$�H�X(HDŽ$��\#��L��L��L���H��$��x��L��H�5u�����H��$����I�E�L��1�H�5��L��$�H�X(HDŽ$���"��L��L��L���H��$��x�4L��H�5
���U��H��$����I�E�L��1�H�5Q�L��$�H�X(HDŽ$��"��L��L��L���H��$��x�	L��H�5�������H��$��=��I�E�L��1�H�5��L��$�H�X(HDŽ$��"��L��L��L���H��$��x�>L��H�54�����H��$�����I�E�L��1�H�5��L��$H�X(HDŽ$��!��L��L��L���H��$�x�H�5���L�����H��$��g��H��b
H�D$`H��$�D�PE���0fDI�E�L��1�H�5وL��$@H�X(HDŽ$��!��L��L��L���H��$@�x�!L��H�57�����H��$�����I�E�
L��1�H�5��H�X(HDŽ$�� ��H�|$(L��L���H��$`�x�hH�|$(H�5������H��$��n��H��$��x����H�D$hH�\$�D$XH)�H��$�H��H��$���$�����H��$�H��$����D$XH���D$X9�$��XH�;H��$�H��L��$�H��P��tƿ����fo�	H�_fieH��$`H�H�@ ld�@�@$_@H��$�H�t$0H�8H�����t$XH�|$�
�����$���tEH��$`H�|$(B�Ɖ��u#��H��$`Lc�$�HcPH�LPM����1�fB�4!�XI�`H�L$(L��H�ѢH��$��!��H��$�����H��$`�����DH��$HL��H�0���H�5��H���N��H��$����I�`L��H��H� ����H��$@�.!��H��$@�q���<���@I�G`��p��	H�D$H�l$hH9�tH��DH�;H��tH��P(H��H9�u�H�D$H��t
H�t$PH�����H�=[����H��$����H��$�����H��$������x�f.�H�t$H�T$(����L��$�H�T$(����H��H��L�����H���N����H�t$H�H�D$ H�T$���H�L$ H�T$���f.�H��$�L��H�5��������H��$��9��������M�g`1ɺL��H�5�HDŽ$����H�T$(L��L��H�	t
���H��$`���H��$`����H��$�����H�F^
H�D$`H��$ L��H�D$XH��I�E�PL��$ H���1ɺL��$@H��I�L��L��$�H�@(HDŽ$@H�D$0�n��H��$�H�D$0L��Є��H��$@1��5��H��$ H����H��PI�EH�P����H�|$XL���L��$ H�5�L��1ɺI�L��$�H�@(HDŽ$@H�D$0����H��$�H�D$0L��Є���H��$@1����H��$ f���L$0H��tH��P����I�EH�|$XL��PL��$ H��L��1�H�޺I�L��$�H�@(HDŽ$@H�D$0�8��H��$�H�D$0L��Є��nH��$@���H��$ H��tH��PH��$�H��tH��PH��$�H��\
H��$@���H��$XH�0\
H��$@H��t+I��H�I�|$H��tH��P�L���
��H��u�H��$PH��$H1�H�����H��$PHDŽ$`HDŽ$XH��$HH;|$xt	H�����H��$H��[
H��$�H��t-DI��H�I�|$H��tH��P�L���m��H��u�H��$H��$�1�H���	��H��$HDŽ$HDŽ$H��$�H;|$pt	H�����H��$�H�2[
H��$��e��H��$�H��Z
H��$�H��t1f�I��H�I�|$H��tH��P�L���
��H��u�H��$�H��$�1�H���I
��H��$�HDŽ$�HDŽ$�H��$�H;�$�t	H���N
��H��$����I�EL��P�v�f�H��H�\$(I�E1ɺH��L�`(HDŽ$`���H��L��L��A��H��$�H�5����L���X����H��$`���?��H��$@�2��H��$ H��tH��P���(���L�d$(I�E�1�H�5�L��H�X(HDŽ$`���L�d$(L��L��L����H��$�H�5���L���@�������Q��H��$`���M�g`1ɺH�5�L��HDŽ$����H�T$(L��L��H������H��$`�
��H��$`�M��H��$��@���M���I�EH��H�\$(1ɺH�@(H��HDŽ$`H�D$0���H�D$0H��L��L����H��$��@����wb��������H��$������H�5���L���P��H��$`���H��$@���H��$ H���a����b�����1ۃ�w�H��$���f.�H��$hL��H�5���������H��$��9�������M�g`1ɺL��H�5�HDŽ$����H�T$(L��L��H�I����H��$`���H��$`����H��$������J���[��H��$`������f��D$0H�|$I�_`�l��H�t$L��HDŽ$��‰�$�����H�T$(L��H��H�(l
���H��$`���H��$`�9��H��$��,������I�EH�|$(�1�H�5�H�@(HDŽ$`H�D$0���H�T$(L��L��H�D$0��H��$��@�����:
H���Hc�H�>��DM�g`�H�5�H��HDŽ$@��
��H�L$8H��L����'��H��$@�j
��H��$��:�D��s��H�\$H�D$hH9�����I���H�;L��H��PH��H9\$hu�H�\$H�l$h����f.�H�|$81ɺH�5r���DŽ$�����H�54�H��M�g`HDŽ$@�
��L�t$81ɺH�5�xHDŽ$�L�����H��L��L���"��H��$��e��H��$@�X��M�g`1ɺH�5�~H��HDŽ$@�B��H��L��H�P�L��H��$����H��$����H��$@���M�g`1ɺH�5�}H��HDŽ$@����H��L��H�ΗL��H��$��^��H��$�L�%}���H��$@���M�o`1ɺL��H��HDŽ$@�{��H��L��H���L��H��$����H��$��<��H��$@�/��M�o`1ɺL��H��HDŽ$@���H��L��H�i
L��H��$����H��$���
��H��$@��
��M�g`1ɺH�5t}H��HDŽ$@���H��L��H�)�L��H��$��9��H��$��|
��H��$@�o
��I�w`H��A�A�H�
Qq������H���3�������A�����I�G`��p�
��s���H�D$PH�D$H�D$h����H���H�=�m
���H�5�m
�n�@M�g`1ɺL��H�5+|HDŽ$����H�T$(L��L��H�X����H��$`�&��H��$`�i	��H��$��\	���n��H��$�L��H�5���������H��$��)	�������1ɺL��M�g`H�5ozHDŽ$����H�\$(�H�5HDŽ$`H���6	��L��H�ھ��L���s��H��$`���H��$����H�"Q
H�D$`�X��H��$�H�5Ѷ��L��8������H��$��f����$���������1ɺL��M�g`H�5{HDŽ$��:��H�\$(�H�5��HDŽ$`H���e��L��H�ھ��L�����H��$`����H��$������+�H��$HL��H�5�����V���H��$���������1ɺL��M�g`H�5�xHDŽ$����H�\$(�H�5z�HDŽ$`H�����L��H�ھ��L������H��$`�6��H��$��)���c�H�|$8HDŽ$����DŽ$����fDH��$���#���H��$������H�|$81ɺH�5by��
��DŽ$��x�H��$�L��H�5����6���H��$���������I�E�L��1�H�5LuH�X(HDŽ$��g
��H��$ L��L��H�D$XH���H��$ �@���;	�����	��uH��$(���$0DH�|$XH�5D������H��$�����H�D$hH�\$�D$XH)�H��$�H��H��$���$���(�f��D$XH���D$X9�$��^H�;H�
�M
H��$�L��$�H�L$`H�t$8H��P��t���^���fovv	H�_fieH��$`H�H�@ ld�@�@$_@H��M
H�D$`H��$�H�t$0H�8H�����t$XH�|$�
�o	����$���tFH��$`H�|$(B�Ɖ�����H��$`Lc�$�HcPH�LPM����E1�fF�!�XI�`H�L$(L��H���H��$����H��$��\��H��$`�O���
������>���H��$(���$0�(�����.���foFu	�HH�_fieH�PH��$`@H�J�Bld�@�@$_H�WL
H�D$`����I��H�CL
�o�$H��$�H�D$`I�|$I�$H��$I�D$I�D$H��$I�D$I�D$ I�D$8AT$(���H��B
I�$��$0A�D$@H�D$hH9D$@��L� H��H�T$H�D$hHcD$XH��H��$�����H�D$hH�\$�D$XH)�H��$�H��H��$���$�����L��$��@�D$XH���D$X9�$��oH�;H�
,K
H��$�L��H�L$`H��P��t¿���fo�s	H�_fieH��$`H�H�@ ld�@�@$_@H��J
H�D$`H��$�H�t$0H�8H���<��t$XH�|$�
�����$���tFH��$`H�|$(B�Ɖ��%
��H��$`Lc�$�HcPH�LPM���E1�fF�!�XI�`H�L$(L��H���H��$��S���5�������fo�r	�HH�_fieH�PH��$`@H�J�Bld�@�@$_���I��H��I
�o�$hH��$HI�$I�|$H��$PI�D$I�D$H��$`I�D$I�D$ I�D$8A\$(�k�H��$�H��I
I�$I�|$@���H��?
I�$H�D$hH9D$@�nL� H��H�T$H�D$hHcD$XH��H��$���f�1��|$0H�5ɮ��L������H��$`�d��H��$@�W��H��$ H�������H��$�f���*��t$0�H��$�f����*��l$0�H��$�f����*��d$0�m���H��$��0�t$0�V���H��$�f���Z(�l$0�;���H��$�f���H*��d$0����H��$�f��*8�|$0����H��$H�|$`H�0�������H�t$M�H��L���u���H��H��$`�"�H��������H9�$���H��$��H��HE�H���H���{H��������H9�HG�H��H���6���H��H�I��H�D$@H��$�H�|$hL�$H�D$H9��\H��H�0H��H��H�r�H9�u�H+D$H�H�|$H��tH�t$PH�L$hL�D$�
���H�L$hL�D$H�CL�D$PH�D$hHcD$XH�L$H��H��$�����M���foeo	�HH�_fieH�PH��$`@H�J�Bld�@�@$_H�vF
H�D$`�<���I��H�bF
�o�$�H��$�H�D$`I�|$I�$H��$�I�D$I�D$H��$�I�D$I�D$ I�D$8A\$(��H��$�H�4F
I�$I�|$@���H�<
I�$H�D$hH9D$@��L� H��H�T$H�D$hHcD$XH��H��$�����H��$hH��$�H�0�l����{�H��$(���$0��H��$(���$0����H�t$M�H��L�����H��H��$`����H��������H9�$��JH��$��H��HE�H��|H����H��������H9�HG�H��H�����H��H�H�D$@H�AH��$�H�t$hL�$H�T$H9���H)�H��H�H�:H��H��H�x�H9�u�H��H�D$hH�|$H��tH�t$PH�L$�y�H�L$HcD$XH�\$PH�L$H��H��$����H�t$M�H��L�����H��H��$`����H�D$@�1�1��C���H��������H9�$��aH��$��H��HE�H��<H����H��������H9�HG�H��H���{�H��H�I��H�D$@H��$�H�|$hL�$H�D$H9���H��H�0H��H��H�r�H9�u�H+D$H�H�|$H��tH�t$PH�L$hL�D$�O�H�L$hL�D$H�CL�D$PH�D$hHcD$XH�L$H��H��$��G���H�D$@E1�1����H�D$@E1�1��J���H�D$h�Z���H�����H�=ځ�X���H�=΁�L���1��v��@���H���������3���H���<���H������H�=������H�������������H���)����H���*����H���*����I����*����H���i*����I���*����H���+����H����+����H����+����H���)����H���e+����H���+����H���+����H���g)����H���p)����H���+����H���C)����H���)����H����+����H����+����H���,����H����+����H��� ,����H���&,����H���,����H���-,����H���G)����I���)����H���,����������H���,����H����*����H����*����H���*����H���*����H����+����H���V(����H����+����H���i*����H���(����H����+����H���+����H���v+����H���Y*����H����+����H���f(����H���+����H���+����H���;+����H���/+����H���K)����H���+����H���)����H���+����H���&)����H����*����H���*����H���(����H����*����H���*����H���*����H���*����H���U*���@��AWAVAUATUSH��XH�|$H�t$dH�%(H�D$H1��UZ
����H�D$H�XH����H�D$.L�57Z
H�D$�H�8t_H�H����H�|$H�s�0�L��H���Տ1�H��H�D$H��D�h@E��fD�l$.L��L��H�uI��H�T$L��谤H��u����L��L��H��H�H��A�fD�hH�l$0H�D$8�$�H�H���j���H�D$HdH+%(��H��X[]A\A]A^A_�DH�-QY
H����������fo�f	1ҹdf�H,H�5=f�-@fo�f	H�
Y
�@(el@�f�f�LP.H��H��	u�1��@L�5�X
H�=UXf�P@L��H�'Q
�2���H���z��`����0���H���>)��@��AWAVI��AUATUSH��hH�W@H�wdH�%(H�D$XH���JH�T$(H�t$�L$$H�D$8H����A�H�DB
H�D$H�D$8H�D$H�D$L�x�D$$����H�D$(H�X��H�8tPH��H;\$��L��L����H�t$H��賍D�#H��1�H��L��L��H�uI��H��L��蟢H��u���p�H��H��L��A�L��H��H�l$@f�AH�L$H��H��H;\$�w���H�D$H�H�D$H���$���H�|$8���H�D$XdH+%(uH��h[]A\A]A^A_�H��������H����'����H����'�����AWAVI��AUATUSH��hH�W@H�wdH�%(H�D$XH�~}�JH�T$(H�t$�L$$H�D$8H����A�H�DB
H�D$H�D$8H�D$H�D$L�x�D$$����H�D$(H�X��H�8tPH��H;\$��L��L��耇H�t$H���#�D�#H��1�H��L��L��H�uI��H��L����H��u�����H��H��L��A�L��H��H�l$@f�AH�L$H聢H��H;\$�w���H�D$H�H�D$H���$���H�|$8�2�H�D$XdH+%(uH��h[]A\A]A^A_�H��������H���U&����H���S&���ATUH��dH�%(H�D$x1�H��t
�G��utQ��xt$E1�H�D$xdH+%(ugH�ĈL��]A\�H�D$xdH+%(uFH�ĈH��]A\��DH��H�wH���	�H����H�|$0I����H������U���I���%������UH�nH���_�H��t	1�]�DH��1��V���]H���
����ff.����ATUH��H�nL�bH����H��t1�H��]A\�DL����H��u�1�H�����H�����1�L��H�����H�����H9���붐f���UH��AWAVAUATSH��XH������dH�%(H�E�1�H���u(H�E�dH+%(�wH�e�[A\A]A^A_]�fDL�� ���L�w`1�H��L������H�5cL��HDž ������1ɺL��H�5�[L������HDž�������L��L�����L���_���H�������H�� �����H�s`L��A�A�H�
�\������H�����HDž���H��H���������H���H������H���?H������L�hL���e�H���1�L���a���H������H���H���	���L��@���H�ƺ
L������X�Eĉ����H�� ���I�ƅ��#H�������H�� ���L��HDž ���H������6�H�� �����1ɺL��H������H�5�ZHDž ���L�p`�n���H������L���L�����H�� ����;�H������L�p���H��M��t'I�L��L��H�� ����xt3H�5T���L����H��������H�������������L��0���H�5���L��HDž0����W�HDž��L�����HDž��M��t�I�L����	1�H�5�^L��H�X(HDž��v�L��L��L���H�5�Q
H���[H��H�����H�� ���H��(���PL�
j���L�S���H�����7���H�5`���L�����H�����Y^���$Hc���Hc���HDž�HDž����H��(���H������H�� ����@��u�s��x��H������H���H���H������H��H��H��H��H������H��P H������L�����HDž���L��L������L�PpL���������jA�����L��jL������L��L��H�������t&H�����XZ��H������H������H��H��P I�L���PH������H�H������H������������HDž����1�1�1��0���f.�H�������b1��H��[f�fA�LVH��H��u�HcE�H������I�NH�H��uLH��)E1�f�8A�^fD�@�|����H������H�C@H�[HH������H��H��H��H������H��L��H��������H������H���f��H�,\H�=O
��H�5O
���I�L���P���������H���G����H���g����H���i����H�������H���#����H���e�����AWH��AVAUATUSH��H�|$0L��$�H��$�H�t$H�qPdH�%(H��$�1�H�|$x�}]L����H��$�1�1�H��H�\$@�,�H��$1ɺƄ$�H�5]H��HDŽ$L��$H�l$8L�5����L�-�����H��$ 1ɺ
H�5�NH��H�D$`HDŽ$ �����L��H��L��H��u�H��$ H��$`�p�H��$H��$L��H��$pDŽ$h�5�L��L��DŽ$����H����H��1�H��$@�H�5$\H��H�D$HH��$�HDŽ$@�����#�L��H��L��H����H��$@H��$���H��$L��H��$H��$�DŽ$���L��L��DŽ$����H��$`1ɺH�5�[H��H�D$ HDŽ$`�=��Ƅ$�{�L��L��H��H�H�\$��H��$�L��L��H��$���H��$`H��$���H��$L��H��$H��$�DŽ$���L��L��DŽ$��4��L��H���)��H�5�I
H���
H��$�H��$`�L�����H��H��H�D$X��������H��$�H��0L��L�uL������H�}�!�H9�u�H��$`��H��$@��H��$ ��H��$���H��$�H�PH�@H�T$H�@H�$H�D$H�(��J
�����=fK
L�5�J
��H��t.H�EL��H��L��H��$�x�ZL��L��1��
��H��$H�|$L��H�$��H��$H��tH��PH��$�H�t$XH��PH�|$@�����H��$�H��H����1�L��H����H�D$H�(��H��H����H�EH��L��H��$�x�L��L��1��^��HDŽ$�H�\$L��L��H�����H�D$0H��H����+�H��L���p��L��$M��tL�����XL������H��$H��tH��PH��t
H�EH��PH��$��(u H�5�G
H���.H��$�L�����H�|$@��L���<�H��$�H��tH��PH��$�dH+%(��H��[]A\A]A^A_�H��$L��L��HDŽ$�A��H��$�H������L�t$H�E�
1�H�5pVHDŽ$`L��H�X(HDŽ$��e�L��H��L�����H��H�0L�g���L�
p���AUH��$H��$H�|$0�4�L��L�����H��$���L��$pY^M���7���I��	L��1�H�5�VL��$�L�$H�X(HDŽ$���H�4$L��L����H�5�G
H����
H��L�
͑��L�����AUH��$�H��$�H�|$��L��L������H��$�P�XZL��$`����M�������I�L���P�u����L��L��H��$HDŽ$������@�s��H�8H�D$(����=�G
��H�D$(H�8����'����L��F
L���q���������H�|$`1ɺH�5�UHDŽ$ ���HDŽ$@���H�|$ 1ɺ%H�H�5)dHDŽ$`HDŽ$hH��$XHDŽ$pHDŽ$`�,�H��$`H�߾��H�|$1ɺ.H�5�cHDŽ$����H��$��H��$h���1�L��1H�5�cHDŽ$��H��$L�����H��E1�E1�S1�1�jH��$pPjjL�t$xH��$PL���/��H��0L����H��$`�F�H��$h�9�H��$p�,�H��$@����5��H��$ �H�H��I����H��$���H��$����H��$`���H��$ ���L��D
L�5�D
L����������$��T���I��L��1�H�5�SH�X(HDŽ$�y�H�|$8L��L����H��$�$�x��H�|$8L������H��$�,��L��1�L��$`H�5�SI�H�X(HDŽ$��H�|$`L��L����H��$ �@���a���������H��$(�H�|$`L���J��H��$����L��1�L��$`H�5SI�H�h(HDŽ$�|�H�|$HL��L����H��$@�@�����j
������u
H��$H�	�H�|$HL�����H��$�����H��$`��"$�D$(H��tH��PL���i��L���!�H�\$0H�D$1�E1�H���H�\$PH��uQ��@E��u3H����H�t$8H�|$PH��$�hH���{	�|$(� D�4$H��H9l$txH��L����H�Ë@��u����x��ш$u�=�tʀ|$(t�H��$��CH�t$L����H��$�H��t��ou�H�H���PH9l$u���|$(L��H�t$IE�H�|$�=��H�D$0H�t$H����g�H�t$H�����H��$�H��tH������XH���(��H��$�H��tH��PL����H��$�H���0���H��P�%�����@
����H��?
H�=�?
H�0����H�5�?
����HDŽ$��e������A
��?
���WH��BH�D$PH�t$PH�|$ 1ɺ!HDŽ$HDŽ$`���H��$`H�|$1�L�lb�HDŽ$�L��H��$`��1�L��%H�5H^HDŽ$�w�SE1�1�j�jjL��$�H��$ H�|$X��H�|$XH�� �n��H��$�!��H��$����H��$`���H�|$`1ɺ	H�5%HHDŽ$ ���L�<^H�|$H1�L�޺ HDŽ$@���H��$ �1�f��$xH�t$P�!H��$pH�|$ H��$@DŽ$`HDŽ$`H��$h�r�L�aH�|$1�H��$`L�ֺHDŽ$�H��$X�;�1�L��.H�5]HDŽ$��E1�1ҾH��$XPH�D$pjSjL��$�H��$ H�|$X�"�H�|$XH�� ���H��$���H��$����H��$`���H��$@���H��$ ���H�|$`1ɺ	H�5�FHDŽ$ �o�L��\H�|$H1�L�޺ HDŽ$@�H�H��$ H�t$P1�H�|$ A�DŽ$`H��$pH��$@fD��$xH��$h�!HDŽ$`���H��$`L��_1�H�|$L��HDŽ$�H��$X���1�L��1H�5�[HDŽ$��H�D$hE1�1ҾPjSjH�\$XL��$�H��$ H����H�� H�����H��$�8��H��$��+��H��$`���H��$@���H��$ ���H��$�W������f���;
���&H��;
H�=;;
H�0�{��H�5,;
����H�\ZH�=�<
�p��H�5�<
��H�-5;
H���E�����,����ؽ��H��H�;
�������@H�D$0H�x`����H�t$H���U��H�D$h�C��u�L��x��H���H��$�H���H��$�H���H��$�H���H��$�L��$�H�|$�1�H�5sKI�H�X(HDŽ$�����H�T$H�|$ L����H��$`�@�����S������aH��$h��D$tf�H�|$ L�����H��$��V��I�H�|$ 1ɺH�5�JH�X(HDŽ$`�;��H�T$ H�|$L����H��$��@���������a����H��$�H�@L�t$L��L���p��H��$`����H�D$0H�t$hH�� �m�H��$�H��$H�X0H�|$HH�PH��$�H�H�PH��$�H�PH��$�H�P HcT$tH�P(H�D$hH��rH�����L��HDŽ$��x��H��$@L��A��L�VH�����H��$�Hck5
Hc@L�tD�����H��$`E����H��$�����(�n�H�t$ E1�1�1�H��I�����L��$��A�FH�t$L�����H��$�H��t
�ouH��PH��$`���H��$@�h�������1ۃ��r���H��$�Hc�b���f����D$t�������H��$h��D$t���f�H�|$`D�s�
HDŽ$`HDŽ$hHDŽ$�HDŽ$��m��H�|$H1��a��A��u��A��xu
�oKp)�$�L�t$`H�T$HH�|$L���
��H�|$HH��$�H��$�����L�������C��u���x������L�s����H�T$H�t$ L��H��H�D$h�N���X�t��H��I�����H�D$hH��$@�@H�t$HL������H��$@H��t
�ouH��Pfo�$�H�|$H1�AF(�f��H�t$HI�~ ���H�|$H���H�t$8H�|$P�?{H�8L�0H������H�|$h����H�|$h�X������f�HDŽ$�HDŽ$�HDŽ$�HDŽ$��L���Hc�2
H�XH���+H�� H��$�H�{HcPH����H��$`D�p�D�
����H�C@H��$�H�CHH��$�H�CPH��$�H�CXH��$�����H��$h��D$t�,���@H��$�H�����H��$�����H��$h��D$t����`L�s����H�T$H�t$ L��H��H�D$h��������H�{���H��$�H��$��m���H�pH�T$h�#��H�T$h��H�5Z1
H��H�T$h���H�T$h����������H��$H���1ۃ����H��$(����L�d4
L���T��H�
}7H�L$P�����H�|$1ɺ!H�5]7HDŽ$��l���HDŽ$���E1�E1��H�H��$�L������L���`��H��$�s����)��H��$��H�H��H�D$h����H��$�����H�D$hL��3
L��H��3
������H�-\3
H���l�����������H��H�E3
�������H��$H�	��O�H��$(���H��$�8�$��H��$H�	���H��$(��|��>��1��p�1��@����D$t�����H���	����H���&����H���o����H���?����H���>����H���Z����H���i����H���o����H���k����H���~����H�������H�������H�������H��������H��������H���f����H���l����H���o����H���z����H���/����H���(����H�������H���A����H��������H�������H���%����H��������H������f���AWAVI��AUI��ATUH��SH��H�2dH�%(H��$�1�L��$H�L��PH��$�H��;�wH�����H��$���L�������H�=�1
H�m��H��t0H�EH��1
H��L��H��$�xtCH�5T|��L�����E1�H��$�dH+%(�ZH�ĘD��[]A\A]A^A_�DH��$ H�5	|��L��HDŽ$ �E��H��$H��t�L��L��L���jH��$A��H��t�H��P�v����H�����H�$H��H���T���H�\$`H�����A���tH���������H�����E1�����H�l$hH������H�
1
�9�p�E�P��U�����H�EH�{��H�@H9��=�9�%�E�P��U�������H�EH�
{��H��H�PH9����P���H�h1�H�=�/
�H���B���H���H�����H���7��H�����H��tJH�=�0
L�}��M��t3I�H��0
L��L��H��$�x��H�5Xz��L�����H������H��H��L���J���I���H���{pH��L����H��$H��tH������XH���>��H��$H��tH��PA��z���H�uH��$�H�D$H��H��PH��$��'���_���1���f.�H��$�H��H�D$���H�D$pH�<$H�D$xH��PxH�P1�H�����tH+H�J�H�rHH�H�P1�H�����tH+PH�B�H�JHH�H��$�L��H��H��$�H��$�HDŽ$�HDŽ$�Ƅ$��������5��H�t$pL��H��I��H��$����L�l$X�A�EH�|$H�t$X�P��H�|$XH��t
�ouH��PH��$@���L�����1�L��fo�$��$����H��$�L���	��L���a��H�T$H��L���Q���I���H���nH��L�����H��$H��tH������XH���E��H��$H��tH��PH�|$A������w���D�������E���f�H���'H�5�K����H��$�A���K��E������L�}����H��M��t/I�L��L��H��$�x�JH�5]w��L��E1�袿��I��L��1�H�5�8L�|$pHDŽ$�H�@(HDŽ$H�D$����H��$�L��L��H�D$H��H�D$��H�5�,
H����H��L��v��L�
�v��ARH�|$(L��|��H��$�H��$����H�|$L��v��L�����H��$ �@��XZH��$���H��$�H�t$H��H�D$�ſ��H�t$H��踾��H��$�H���H�
 
�9���G�P��W���~L�|$pH��$�H��tH��PM�������I�L���P�}���fD�������E����H�$H���H�$���L��$ H�5�u��L��HDŽ$ L�|$(���I�F`��s��M���� ЈD$7tML�}����H��M��t,I�L��L��H��$�x�AH�5Vu��L��螽��H�|$(H��P���H�|$(u�����H��$�H����������H�5u��L��L��$ HDŽ$ �G������H�G:�H�=+
�Z���M���I�L���PH�l$hH���r���H�
�
�9�e�E�P��U���P���H�EH�qt��H�@H9����9���E�P��U������H�UH�
nt��H��H�BH9����R���fD�H��5H�=�)
���H�5�)
�6���L��$ H�5
t��L��HDŽ$ �I���L��$�M�������A�����L�}M���hI�~`���H��H���i��L�}����H��M��t/I�L��L��H��$�x��H�5s��L��E1��Ļ��I�~`L��$���H��L������H��$I��H��tH��PI��H����I��@L��H��H�D$�=dI�L��H�D$HDŽ$H�0�^���H��$H�������H�|$��H��$���H�|$L����cH�0H�ǹH�z3�"��H��$�H��H�D$�ͻ��H�<$H��PxH�D$8H�PH�����tH+H�J�H�rHI�H�L$8H�D$@H�PH�����tH+PH��H�R�H�HHI�H�T$@H���ü��H��H�D$���H�D$ E1��$H��u��$I��L9l$ ��H�|$L������I�Nj@=t#�<$t̓�u�ƒ�x��ˆ$u+�D$7�$�I�G�P������k�<$u��L���Ǻ��L��$��A�GH��$�L��H��H�D$���H��$�H��t
�ouH��PH�D$8H�|$1�H��$8H�D$@H��$@���H�t$H��$0�Ͽ��H�|$�%���H�|$L��H��I��xH�D$H�	�H�t$I��x�huH��$�H��tH�|$H���H�|$H�X����H��$�H��tH��PL��$��A�GH�t$H�|$�2��H��$�H��t
�ouH��PL���`���_���H�D$81�L��H��$�H�D$@H��$����H��$�L�����L���?���H�T$H��L���/�I���H���`fH��L�����L��$M��tL�������XL���#���H��$H��tH��PH�|$���L��$�M���g���I�L���P�Y���H�H�}o��H�@H9����9�1�G�P��W���P���H�H�
{o��H�BH9����RL�|$p�1����������G���������I��H�521�L��$�H�@(L��L�D$HDŽ$�H�D$���H�T$L��L��H�D$��H��$�x��L��H�5�n������H��$��p������H�5�n��L��L��$ HDŽ$ �������H�x��H��3����������I�G�P�����k���������G��������E���H�x��H��3�B������s�������H��$H�5n��L����D$�G���H��$�蚿���D$���(������蓺��H�L$H�|$��H�L$H�|$�(�������E�9���������H�$H���H�$�������?����e�����H���^�����H�������H���`�����H�������H�������H�������H�������H�������H���J�����H���|�����H�������H�������H�������H���,�����H�������H�������H�������H�������H�������H�������H�������H�����f.���AWAVI��AUATUSH��XH�|$H�:L�l$(H�t$dH�%(H�D$H1�H�H�D$(�P(�D$����1�E1�H�l$0L�%
l���OH�|$(���G���H�t$H�|$L�����A	�H�|$(H�D$(H��tH��P��9\$��I�6��H��H��P0H�5�!
H��tBH��L��L�
�k��ATH�L$@L�fq��H�T$H�L��ZL��YH���d���跳���D�H��.H�=�!
�ȹ��H�5�!
��E1�DH�|$(H��tH��PH�D$HdH+%(uH��XD��[]A\A]A^A_�蹷����H�������ff.����AWAVAUATUH��SH��xD���dH�%(H�D$h1�E��t6H���H;���zH�>�pH��������5�L��PH��XL)�H������D�h�1�L�t$PI���f.�L��PH��I�M�<$M��t_I�L���PH��8L��8H��tH��PH��L���<��I�<$H��t)H�H�|$P�PL��L��H���j���H�|$PH��tH��PI9�u�L���H���L)�H�����X��1�L�=�i��H��H�D$�n�L��L��E1��ұ��H�D$8I�<$H�|$PH��tH��PL��L��H�����H�|$PH��tH��PM��t	I�L���PH;\$��L���H��I�M�4$M��t��r���L�l$PL��H��I�L��H�D$P�x�`���L�t$`L��L��H�D$`�'���L�t$8M���P���I��
H�5a,1�H�D$@H�@(H�D$HH�D$H�D$HH��H�D$�K���H�T$L��L��H�D$���Կ��H�L$@H��H�0L�An��H�L$0H��L�
Bh��AWH�L$`H�T$h���L��L��膰��H�|$X�ܹ��L�D$P^_M�������I�H�|$�	1�H�5�,L�D$ H�@(H�D$HH�D$���H�T$H�t$ L��H�D$��H�5�
H����H�|$4H��L�
�g��AWH�L$`L��m��H�T$h�n��L��L��D$ �߯��H�|$X�5���ZY�D$��t�D$4���~H�|$@H�����H��P����DA�H�D$hdH+%(uZH��xD��[]A\A]A^A_��E1����H�l:H�=�
耵��H�5�
�.���@L��H���%���r���蛳����H���.���H���>���H������H�������H���$���H������H����fD��AWAVAUATUSH��H��L���dH�%(H��$�H����G|����H+��H�����Gx�D$L臽��M��t8H��I�$H��$�L��H��H��$��x�9H�5�e��H���:���H�D$P�{x��ƃ�1�1�H�D$�D$H�D$4���D�D$HH�ߋL$4u
���������H���D���t8���t
����"
H���H����H���s���A�Ƅ��@E1�H�|$H��tH��PH��$�dH+%(��H�ĸD��[]A\A]A^A_�f�H�D$H���H���
H��P(����H�|$�����
H��$�L�|$�H��1�H�5�)L�l$pI�L�`(HDŽ$��O���H��L��L��A��H�D$p�@����	�L���K	����
H�D$x��D$4fDL�%Ad��L��L��膬��H��$��ٵ��L�|$L��1ɺH�5h)I�L�p(H�D$p込��L��L��H��A��H��$��@�������������F
H��$���D$H�L��H�����H�|$p�K�����������=4&	H�5&	E1�L�-sc��H�D$H�D$�|$ �|$(��L�t$XH��L�
0c��AUH��$�L�i��L��H��$����Y^��tBH�|$XL��H��t:�V���L�|$X�\���H��M��t(I�L��H��H��$��x��L��H������H�|$XH��tH��PA��H���H��P(A9���H���H��$�L�t$XD��H�D$XH��H��P0H�5�
H�������H��%H�=�
�Ѱ��H�5�
���DL��$�L��H��HDŽ$��q���H�D$pL�|$`H�D$xM���5���I�L�D$h�	1�H�5�$L��L�D$8H�D$hH�@(H�D$@茺��H�T$8L��H��H�D$@��H�5�
H���:H�|$pH��L�
�a��AUH��$�L�ig��H��$��L���L��H��A��辩��H�|$x����XZE����T$t�D$pf�f���T$f.�#	�*��*�z�f(��]t$�_L$(�t$�d$f.%�#	z��f(��]T$�_D$ �T$T$|f�f��D$x�*��\$f.#	�*��t$ �T$(z�g�\$(f(��_��]d$�\$(�d$�l$f.-9#	z�I�l$ f(��_��]t$�l$ �t$I�L���P�������D$H�������H��$���D$H�q�������D$4������H�D$x��D$4���@�d$f.%�"	zt�D$f.�"	�:�41�1�����L��$�H�5�_��H��HDŽ$�L�t$����{xL�t$P��H�|$ƃ�������D$H1�1��D$4���D�D$�d���D�L$(�L$�����T$ �T$������L$���DH���H�BH��H��;�dHDŽ$�H��HDŽ$�H��HDŽ$�H���dH��贩��H�H��$�H���H��$�f.�H�H��H�@�H9�u�L�bH��$�E1�L��$�M��t-@D��I�t$A��L��H��H�$�����M�$$M��u׿XL�k`H��$�����H��L��H��I���jL�ch�L�k`���H�ShL��H��I���$[H�C`L�cp��p�_��s����u&H��XH+�P1�H��H��H��P���s���L$LH���1�H���z�����t
�����H�kXH��tH������H��芧��H�CXH��$�H��$�H9�tCDL�eM��tL�������XL���J���H�}H��tH��PH��H9�u�H��$�H�������H��$�H��H)��������f����*���fDH���H������������
��\$����f/�s0��f/���f/��g���X��,��l$����f/�s0��f/��wf/-����f�X��,��D$(�\D$�D$4���f/�s0�Lf/��7f/B���X�,��D$4�D$ �\D$�D$H���f/����
�f/���f/��d�X��,��D$H�����H�\H�=M
�ة��H�5A
���@H���P���H���������H��$���D$H�l���@H�D$x��D$4����H��$���D$H�<���@H�D$x��D$4����ƃ�1�1��D$H�D$4��H���8H��H����5��H���Ȼ��H�����H�{pH����`�H��������H�{h�~H�C`���fDHDŽ$�1�HDŽ$�����D$�\{�,������\j�,��D$H�Z��\U�,��D$4�4����D$�\:�,����H���	��l����D$H�D$4�+������f���������D$4������D$H�����L���H�=�-�@����D$H�����D$4������H������H������H�������H���>���H�������H���
���H������H�����fD��AWAVAUATUH��SH��H��8dH�%(H�D$(1�I��L���
���H�}�2H���H9���H��XH9�P�
L�l$H��L�����H�D$H����H�xH�@H�|$�PH�|$H��tH��PH�D$H����H�=
H����YH���pH�EL�t$H��L��H��
�H�D$�x��H�5X��L���J���ƃ��8L�t$���H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H����m���H���L��L��H��H���6��H��tH�UH�u[H��H9B��蓱��H�{`H�k`H��tH�H��W��H�@H9���芡��L���H���L9�t+�H�}tH�{`�P���H��H��赳��H��I9�u�L��XH��PI9�t-f�H�}tH�{`����H��H���u���H��I9�u�H���H�(H����H�EH��PH���H���H���8H��PE1�H����!H�kpH��tH��� V�H��蓠��H�{`H�CpH�C`H��tH�H��V��H�@H9����n���H�khH��tH���b�XH���@���H���H�ChH��t/H���1H�}H�E0H�uH9�t	H���
����8H�����H�|$ƃ�Hǃ�H��tH��P�f�E1�H�<$H��tH��PH�D$(dH+%(��H��8D��[]A\A]A^A_��H����z��H��H����H���1�H���H���H���i���H�
�B���o��H��H���H��x�o�x�h���^�A��H���a���H��L���Ǫ��H�|$H�L$H��H9�u�H��H9���H�H���H9�xu�H��H9��u��o�h����H�l$ H�5\T��L��H�D$ 蛜��H������H���H�EH��P�9���@H���E1�Hǃ�H����������DH�������H�t$ H)��*����t���DH�q(�H�=�	
�H������ƃ����@H���(�A���/������{���f����O���f��{W�����1�����H�������H���m����H���y���������������~�����s�����j����AUATUH��SH��H��(dH�%(H�D$1�I��L���1���H�}�L�l$H��L������H�D$H����H�xH�@H�|$�PH�|$H��tH��PH�D$H�����8L�l$苝��H�P0H�@��H�H�@H�@�@ �?H�@(H�@0H�������H���L��L��H��H���0��H��tH�UH�VH��H9B�o�:���H�{`H�k`H��tH�H��R��H�@H9��f�1���H���H�(H��t
H�EH��PH���H���H��tH��PH���'�A��H�kpH��tH���SQ�H���ƛ��H�{`H�CpH�C`H��tH�H��Q��H�@H9���衛��H�khH��tH���0^�XH���s���H���H�ChH��t/H���7,H�}H�E0H�uH9�t	H���=����8H���0���Hǃ�H�|$H��tH��P�E1�H�<$H��tH��PH�D$dH+%(u5H��(D��[]A\A]��T���fD���8���f�������4�����H�������H��������H�������������H������f.���AWAVI��AUATUSH��HH�.H�5)
dH�%(H�D$81�H���H�D$H�$D�eH���(H�<$1�L��O��H�
�O�����������E���^A�D$�H�]H�@L�=�O��H��L�d81�� D������
�H��0I9�tiH�;�G��u�H���H�5������EH�5V
H����H�|$H��H�KH�SAWL�
O��L��T��H��0���Y^I9�u�A���uA�����H�t$L������A��H��t
H�EH��P0H�|$H��tH��PH�D$8dH+%(��H��HD��[]A\A]A^A_��H���H�5F������H�D$ L�l$ L��赝��H�C�x��H�|$0H�L$(�
L��H�D$(臜��L�l$0H�D$0H��tH�EH��P0H�|$0H��tH��P0H�|$(H��tH��PM��tJ�8軖��L��H��H�����1�H��tH�E(H��H�D$���H�D$H�|$H�D$H��tH��PH�|$ L���N�������f��H�$H�=�
���H�5�
�/���@H���
H�5���������H�5\
H����H��H�SH�KL�
M��AWH�|$L��R�����XZ���fDH�;�G�m���DH�t$L��������fDH�;�G�N���DH�CL��H�0�ћ���e���@�	
��tzH�
H�=�
H�0���H�5�
�����
��tzH��
H�=�
H�0�ǜ��H�5x
� ���1�A����F���H�t$L������A���^���L�-�
L��蔙�����o����'���L��H�m
�����V���H�=T
�g������r������H�=;
H�<
�ל���U���荘����I��������I��������I�������I��������I����������f.�����f.�����f.�����f.����1��f���H�?���@��AVAUI��ATI��UH��H��dH�%(H�D$1��I
��t=H�F
M��L��H��L��腧��H�D$dH+%(u@H��L��]A\A]A^�fDL�5
L���!�����t�H�&�	L��H��	藛����P�����AVAUI��ATL�f�UH��H��dH�%(H�D$1����	��t<H���	M��L��H��L�����H�D$dH+%(u?H��L��]A\A]A^�DL�5a�	L��聗����t�H���	L��H�L�	����谖����AVAUI��ATL�f�UH��H��dH�%(H�D$1���	��t<H��	M��L��H��L���D���H�D$dH+%(u?H��L��]A\A]A^�DL�5��	L�������t�H��	L��H���	�W����������AVAUI��ATL�f�UH��H��dH�%(H�D$1��h�	��t<H�e�	M��L��H��L��褥��H�D$dH+%(u?H��L��]A\A]A^�DL�5!�	L���A�����t�H�F�	L��H��	跙����p�����AVAUI��ATL�f�UH��H��dH�%(H�D$1���	��t<H��	M��L��H��L������H�D$dH+%(u?H��L��]A\A]A^�DL�5��	L��衕����t�H���	L��H�l�	������Д����AVAUI��ATL�f�UH��H��dH�%(H�D$1��(�	��t<H�%�	M��L��H��L���d���H�D$dH+%(u?H��L��]A\A]A^�DL�5�	L��������t�H��	L��H��	�w�����0�����AVAUI��ATL�f�UH��H��dH�%(H�D$1����	��t<H���	M��L��H��L���ģ��H�D$dH+%(u?H��L��]A\A]A^�DL�5A�	L���a�����t�H�f�	L��H�,�	�ח���萓����AVAUI��ATL�f�UH��H��dH�%(H�D$1���	��t<H��	M��L��H��L���$���H�D$dH+%(u?H��L��]A\A]A^�DL�5��	L�������t�H��	L��H���	�7��������H�5E�	ATI��H��tL��L�F��1�1�舟��L��A\�f������H�=�	H�0�G���H�5�	��ff.���H�5�	ATI��H��tL��L��E��1�1��(���L��A\�f��覚��H�=��	H�0���H�5��	��f.�@��H�=�	H��	t�f.�H��H�ǾH��踓��H���	H���f.�f���H�=t�	H�m�	t�f.�H��H�ǾH���h���H�A�	H���f.�f���ATI��UH��dH�%(H�D$1���	��t/H�5�	L�����H�D$dH+%(u;H��L��]A\�DH�-��	H���ّ����t�H���	H��H���	�O�����������ATI��UH��dH�%(H�D$1��c�	��t/H�5`�	L���X���H�D$dH+%(u;H��L��]A\�DH�-)�	H���I�����t�H�N�	H��H��	返����x������AWAVAUATUSH��dH�%(H��$�1���	��tE�=�	L�%�	�qH��$�dH+%(�H�ĘL��[]A\A]A^A_�DL�%�	L��虐����t�1�H�|$8�!H�D$8H�5�L�l$H进���H�\$`H�D$@���1ɺ-L��H�H�5�H�l$@H�D$`H�D$HH�D$P�r���H�T$HH�߾�P���H��E1�E1�S1�1�H��jH�D$hPjjH�t$h���H��0H���\���H�|$`����H�|$@�h��������H�T$8�H�H��H�����H�|$H�ؓ��H�|$8�Γ��L��H���	�����=p�	L�%��	������#���H�8H��蘗���=I�	tH�;角���i���f��1�	�:�	����L�l$HH�l$@L�5I��诖��H�|$ 1ɺ
H�D$H�5�H�D$ �5���H�|$(1ɺH�D$(H�5�����H�D$ H�|$01ɺH�5��D$`H�D$pH�D$(H�D$0H�D$h�f�D$x�͙��H�|$81�L��H�D$8�!谙��H�D$01�H��H�5LH�l$H�D$@H�D$PH�D$8H�D$X�x���1�L��-H�D$HH�5��Y���H�D$PE1�1�P�H��jH�D$pPjL�L$`H�L$h�m���H�� H���Q���H�|$H����H�|$@���H�|$8��H�|$0���H�|$(�ߑ��H�|$ �Ց��H�|$�+����7���fDL�=��	L�l$HL��H�l$@L�5���`������?���1�L���!H��H�D$@荘���H�D$H�ʔ��H�T$@E1�E1�H��L������L��臒��H�|$H蝐����S���H�T$@�H�H��H�D$����H�|$@����H�D$L��H���	�G���������f.����ou
H��`�����USH��H��H�oH��tH������XH���%���H�;H��tH�H�@H��[]��fDH��[]Ð��H�?H��tH��`fD����H�?H��tH��`fD����H��(u3USH��H��H�5{�	H��t&H�;H��H�P>��[]�ٓ��f������	��t%H���	H�=7�	H�0�w���H�5(�	�fDH�-Y�	H���i�����t��u��H��H�F�	����f.�D��H�?H��tH��`fD����H�?H��tH��`fD����AWAVAUATI��UH��SH��(H�H�H�H�H�H�HcPH�FH�Hc@L�l\D���
���I�$E��uH��([]A\A]A^A_�f�H�XH�EL�uL�xH�H�hH�H�HH�L�@H�H�0HcFH�H����H�1��fA�f�CH��H��(u�1�f�f�f�TCPH��H��	u�1�f.�f�Tf�TCbH��H��)u�fA�I�6H���f���fA�Gf���HcFH�,H��u[I�$D�h1�f��+�H��([]A\A]A^A_�f.�H��H��L�D$H�L$H�T$���L�D$H�L$H�T$�����H��H���ԅ���f���AWAVAUI��ATI��USH��H�H�H�H��X��Z��菆��I�E��uH��[]A\A]A^A_��H��H�HI�$I�l$L�`H�L�pH�H�0HcFL�<H��urJ�91�@fA�f�BH��H��(u�1�f�fA�f�LBPH��H��	u�1�f�f�Lf�LBbH��H��)u�1��_f���H��[]A\A]A^A_�H��H��L���ф��I�}H���s���D��UH��AWAVL��p���AUI��ATI��SH��H�6dH�%(H�E�1�H�L��H��P H�]�1�L�}��(H��p���H�5H��H��8���H�H�@H�E�H��0����'���L��H��L��H��8���H��0�����H�=�	L�E���M��tAH�E�H���	L��H��8���H��I��H�E��x��H��8���H�5�9���I���E1�I�<$H��tH�L��8����PL��8���H�}�M�$H��tH��PH�}��m���H��p���H��tH��PI�<$��H�E�dH+%(u|H�e�L��[A\A]A^A_]��L�E�H��8���H�5f9��H�E�L��0���袁��L��0����P���fDH���H�=��	L��8���衇��L��8��������Ѕ�������H�
��*H�5��H��8���H��P���H�M�H�
 �H��H�M�1�H��0���H�E�.HDžP����r���H�
#L�u�L��H��x���H��0���H�
��L��`���H�M�L��H�
"H��p���H�]�H�M��f���H��8���L��RL��u��u��u��O��H��`���H�� ���H��P����މ��H�5��	H��8���H�	B���D�����I��H���=��H���Z��H��8���H�����H���Q��H��H���&L���"M��L��8���H�}��r���L���
���L��H��H��t?H��tCH��L������H������H��`����9���H��P����-���H��8����A������
������������H���c����*1�H�5��I��H�H�E�+H�E�H�n�H�E�H��@���H��H��8���HDž@����Ï��H��8���H�u�H�]�L�u�H��P���H�ZH��X���H��P���H��`���H��H��h���H��`���H��p���H�RH��x���H���H�E�H�E�H�E�H��H���H��H�����L��H��L��P�u��u��u��M��H��H���H�� ����H��@������H�5�	H�,@��L���d�����H���-�����H��H��H����‡��H��@���趇��L���Ό��蹊���O���@��H�?H��tH��`fD����AWAVAUATI��UH��SH��(H�H�H�H�H�H�HcPH�FH�Hc@L�lBD���J���I�$E��uH��([]A\A]A^A_�f�H�XH�EL�uL�xH�H�hH�H�HH�L�@H�H�0HcFH�H����H�1��fA�f�CH��H��u�1�f�f�f�TC6H��H��	u�1�f.�f�Tf�TCHH��H��u�fA�I�6H���f���fA�Gf���HcFH�,H��u[I�$D�h1�f��+�H��([]A\A]A^A_�f.�H��H��L�D$H�L$H�T$�5~��L�D$H�L$H�T$�����H��H���~���f���AWAVAUI��ATI��USH��H�H�H�H��X��@����~��I�E��uH��[]A\A]A^A_��H��H�HI�$I�l$L�`H�L�pH�H�0HcFL�<H��urJ�91�@fA�f�BH��H��u�1�f�fA�f�LB6H��H��	u�1�f�f�Lf�LBHH��H��u�1��_f���H��[]A\A]A^A_�H��H��L���}��I�}H���s���D��UH��AWAVL��p���AUI��ATI��SH��H�6dH�%(H�E�1�H�L��H��P H�]�1�L�}��H��p���H�5�
H��H��8���H�H�@H�E�H��0����g���L��H��L��H��8���H��0�����H�=��	L�E���M��tAH�E�H�l�	L��H��8���H��I��H�E��x��H��8���H�5>2���z��E1�I�<$H��tH�L��8����PL��8���H�}�M�$H��tH��PH�}�譃��H��p���H��tH��PI�<$��H�E�dH+%(u|H�e�L��[A\A]A^A_]��L�E�H��8���H�5�1��H�E�L��0�����y��L��0����P���fDH��	�H�=m�	L��8�������L��8��������~����V��H�
�	�*H�5��H��8���H��P���H�M�H�
`�H��H�M�1�H��0���H�E�.HDžP���貉��H�
	L�u�L��H��x���H��0���H�
�L��`���H�M�L��H�
	H��p���H�]�H�M��f���H��8���L��RL��u��u��u���G��H��`���H�� �*���H��P�������H�57�	H��8���H�I:��脂����I��H���=��H���Z��H��8���H�����H���Q��H��H���&L���bE��L��8���H�}�貁��L���J�L��H��H��t?H��tCH��L�����H���E���H��`����y���H��P����m���H��8���聆�����Jy���E����@y���H���}���*1�H�5-�I��H��H�E�+H�E�H���H�E�H��@���H��H��8���HDž@�������H��8���H�u�H�]�L�u�H��P���H�SH��X���H��P���H��`���H�S�H��h���H��`���H��p���H�7H��x���H��H�E�H�E�H�E�H��H���H��H�����L��H��L��P�u��u��u���E��H��H���H�� �F���H��@����:���H�5S�	H�l8��L��褀����H���-�����H��H��H�������H��@������L����������O���@��H�?H��tH��`fD����AWAVAUATI��UH��SH��(H�H�H�H�H�H�HcPH�FH�Hc@L�lKD���x��I�$E��uH��([]A\A]A^A_�f�H�XH�EL�uL�xH�H�hH�H�HH�L�@H�H�0HcFH�H����H�1��fA�f�CH��H��$u�1�f�f�f�TCHH��H��	u�1�f.�f�Tf�TCZH��H��u�fA�I�6H���f���fA�Gf���HcFH�,H��u[I�$D�h1�f��+�H��([]A\A]A^A_�f.�H��H��L�D$H�L$H�T$�uv��L�D$H�L$H�T$�����H��H���Tv���f���AWAVAUI��ATI��USH��H�H�H�H��X��I���w��I�E��uH��[]A\A]A^A_��H��H�HI�$I�l$L�`H�L�pH�H�0HcFL�<H��urJ�91�@fA�f�BH��H��$u�1�f�fA�f�LBHH��H��	u�1�f�f�Lf�LBZH��H��u�1��_f���H��[]A\A]A^A_�H��H��L���Qu��I�}H���s���D��UH��AWAVL��p���AUI��ATI��SH��H�6dH�%(H�E�1�H�L��H��P H�]�1�L�}��$H��p���H�5�H��H��8���H�H�@H�E�H��0���觃��L��H��L��H��8���H��0�����H�=��	L�E���M��tAH�E�H���	L��H��8���H��I��H�E��x��H��8���H�5~*����r��E1�I�<$H��tH�L��8����PL��8���H�}�M�$H��tH��PH�}���{��H��p���H��tH��PI�<$��H�E�dH+%(u|H�e�L��[A\A]A^A_]��L�E�H��8���H�5�)��H�E�L��0����"r��L��0����P���fDH�H��H�=��	L��8����!x��L��8��������Pv����w��H�
g�*H�5�H��8���H��P���H�M�H�
��H��H�M�1�H��0���H�E�.HDžP�����H�
�L�u�L��H��x���H��0���H�
\�L��`���H�M�L��H�
��H��p���H�]�H�M��f���H��8���L��RL��u��u��u��
@��H��`���H�� �jz��H��P����^z��H�5w�	H��8���H��2����z����I��H���=��H���Z��H��8���H�����H���Q��H��H���&L���=��L��8���H�}���y��L����L��H��H��t?H��tCH��L�����H���z��H��`����y��H��P����y��H��8����~�����q���}���q���H����u���*1�H�5m�I��H��H�E�+H�E�H���H�E�H��@���H��H��8���HDž@����C���H��8���H�u�H�]�L�u�H��P���H�"H��X���H��P���H��`���H���H��h���H��`���H��p���H���H��x���H�/�H�E�H�E�H�E�H��H���H��H�����L��H��L��P�u��u��u��&>��H��H���H�� �x��H��@����zx��H�5��	H��0��L����x����H���-�����H��H��H����Bx��H��@����6x��L���N}���9{���O���@��H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����AUI��ATUSH��H�_H�/H9�t=L�eM��tL���{���XL����o��H�}H��tH��PH��H9�u�I�mH��t!I�uH��H��[H)�]A\A]�o���H��[]A\A]�D��H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����AUI��ATUSH��H�_H��tZfDH��H�L�eM��tL���z���XL����n��H�}H��tH��PH�}H��tH��P�(H���n��H��u�I�EI�}1�H���Uq��I�EI�EH��[]A\A]�f.���L�L�O1�L��I��H�L��I��M��t3I�H�HI9�t$H�0H��t*H�NI��1�H��I��I9�uH��I9�u�M�L����E1�L���f���AWAVAUATI��H��������USH��(L�oL�?H�|$L��L)�H��H9���H��H�պI��HE�H��H���H�D$L)���H���H���3H�$H4$L��H�t$H��H���;���M9��L�$$L��H��L���}���H��I��I9�u�I��L��M9�t@H��H���U���H��H��I9�u�L��M9�t5L�cM��tL���x���XL����l��H�;H��tH��PH��L9�u�M��tH�D$L��H�@H��H�D$L)��l��H�D$H�$H�L$H��H�H�H�iH�AH��([]A\A]A^A_�H�����H�L$H�t$�/m��H�t$H�$�����L�$$����H��������H�T$H9�HF�H�D$H��H���H�=)��s����H�����H���=��H���O�gk��H�<$uH�|$��H�<$tH�t$H�<$H����k���8w���3k��L��H9�t*H��H���o����k��H�$I9�tH��H���S����v����H�����v����H���1�v��H����j��H�$I9��u���H��H��������H���
��u��H���ws����u��H���j���5���D��AUATUSH��L�oM���M�e M�����L��M�$$H�] H��tH��H����j��H��u�H�EH�}1�H���m��H�}H�E@H�E(H�E H�uH9�t	H���j��H�}�r���PH���j��M���{���I�EI�}1�H���$m��I�}I�U@I�E(I�E I�EH9�t
H�4��6j��I�}H��tH��PH��L��P[]A\A]�j��H��[]A\A]�D��USH��H�oH����H�] H��tH��H����i��H��u�H�EH�}1�H���tl��H�}H�E@H�E(H�E H�uH9�t	H���i��H�}��p��H��H��P[]�ni��fDH��[]Ð��ATSH��H��L�gM��tQ��@I��A�T$ I�D$f9�IBD$A��H��u�M��E��u$1�f9�LB�LC�H��[L��L��A\�DL�gL9gtL���6n��M����P I����M��H��E1�L��L��[A\�f.�f���AWAVAUI��ATUH��SH���3���H��t^I��L�uA�H��td�(�2i��L��L��D��H��A�EH��f�C ��x��H�E(H��H�غ[]A\A]A^A_�f�H��1�[]A\A]A^A_��L9�t�E1��B fA9EA��념��AWAVAUATUSH��H�L�$�M���~I�$I��H��I��I��H�K(�(�H�3H��tXH�N(1�I��H��H�uI9�uCH��I9�u�I�?H�S�w;ru�H9�tH��H�����(j����u�H��L��[]A\A]A^A_�f�E1���f.����AWAVAUATUSH��XH�T$H�L$dH�%(H�D$HH�L�,�M���6I�]H��I��H�KH�.fDH�3H���H�NH1�I��H��H�uI9���H��H9L$u�H�|$H�CL�'H�D$L9�����}q��H��M��t2I�$L�|$0L��L���H�D$0�x��H�5>��L��E1��d���L�d$(�4q��H�|$H��t,H�t$L�|$0L��H��H�D$0�xtdH�5���L���=d��M��A��M��t
I�$L��PE������fDH�D$HdH+%(��H��XL��[]A\A]A^A_�f�E1���L�D$@L��H�5���H�D$@L�D$��c��L�D$M9�A��M���{���I�L��P�m���H�5I��L��L�d$@H�D$@�c�������g����I��I�����H��I���
H�|$(�W0��L��I��u�d���o���/����Zm��f.���AUATUH��SH��H��H����H��I��H��<��L�,�L���e��L��1�H��I���g��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AHH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���td��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�i���c����H���dc��I�$H�E(�Wo����H���kn��H���l����AV1�AUATI��USH��H��0L�.dH�%(H�D$(1�L��L��H�wI��H��L���M���H��t0H�H��t(H��H�T$(dH+%(�H��0[]A\A]A^��PH�\$�d��I�<$H�H��H�xH��tH��Pf�H�E@H�SH�sH�EH�C(H�{ �E0H�E@H�E�E0�?E H�l$H�D$�q��H�ք�u6H�3L�mHJ��H�H��tCH�H�EH�H�(H�CH�E�,����H�T$H�����L��1�H�sI���DH�CH�kH�EH��tH�@H1�H�sH�,�H�CH����d����H���	��H����a���PH���?b���m��H�|$����H���Xj����H���l��H���Dj��@��AWAVAUATUSH��H�L�$�M���~I�$I��H��I��I��H�KH�(�H�3H��tXH�NH1�I��H��H�uI9�uCH��I9�u�I�?H�S�w;ru�H9�tH��H�����8d����u�H��L��[]A\A]A^A_�f�E1���f.����AUATUH��SH��H��H����H��I��H��<��L�,�L����a��L��1�H��I����c��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AHH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���`��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�Ee���`����H���_��I�$H�E(�k����H���j��H���Sh����AUI��ATI��L��UH��SH��H�� H��H�W�H�w�dH�%(H�D$H�GH�$�n����uHH�3I�l$HJ��H�H��tTH�I�$H�L� H�CH�D$dH+%(u^H��L��[]A\A]�@H��H��H���"���H��1�H�sI���@H�CI�$L�cI�$H��tH�@H1�H�sL�$�H�CH���a��f.�D��AVAUATUH��SH��H�� H�>dH�%(H�D$1��wH���[g��1�H��Lc�L��L��H�uI��H��L������H��t6H�H��t.H��H�T$dH+%(��H�� []A\A]A^�f��PH�,$�R_��H�;H�I��H�x�a��f�L��L��I�D$@L��H��L�d$A�AD$0I�D$@I�D$I�D$A�D$0�?AD$ �����X����`����H��H����H���:f��f.���AWAVI��AUATUH��H�� H�>dH�%(H�D$1��wH���*f��1�H��Lc�L��L��H�uI��L��L�����H��t5H�H��t-H��H�T$dH+%(��H�� ]A\A]A^A_���PH�,$�"^��L��I��H�I�I�I�D$�Qb��f�L��L��I�D$@L��H��L�d$A�AD$0I�D$@I�D$I�D$A�D$0�?AD$ �����N����f_����H��H�����H���d��f.�D��H�H��t��\��f��f.�D��AWAVAUATUSH��XH�T$H�L$dH�%(H�D$HH�L�,�M���6I�]H��I��H�K�.fDH�3H���H�N1�I��H��H�uI9���H��H9L$u�H�|$H�CL�'H�D$L9�����f��H��M��t2I�$L�|$0L��L���H�D$0�x��H�5~��L��E1���Y���L�d$(�tf��H�|$H��t,H�t$L�|$0L��H��H�D$0�xtdH�55��L���}Y��M��A��M��t
I�$L��PE������fDH�D$HdH+%(��H��XL��[]A\A]A^A_�f�E1���L�D$@L��H�5���H�D$@L�D$�Y��L�D$M9�A��M���{���I�L��P�m���H�5���L��L�d$@H�D$@��X������)]����I��I�����H��I���
H�|$(�%��L��I��u��Y����d���/����b��f.���AUATUH��SH��H��H����H��I��H��<��L�,�L����Z��L��1�H��I����\��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���Y��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�E^���Y����H���X��I�$H�E(�d����H���c��H���Sa����AW1�AVAUATUH��SH��H��L�&dH�%(H�D$1�L��L��H�wI��H��L���K���H��t6H�L�xH��t*H�D$dH+%(��H��L��[]A\A]A^A_�@� �VY��H�}H�I��H�xH��tH��PM�~I�FL���u]��H�C(H�SH�{ H�s�H�$�g��H�ք�u0H�3M�fJ��H�H��t=H�I�H�L�0H�C�M����H��H�����L��1�H�sI����H�CL�sI�H��tH�@1�H�sL�4�H�CH���DZ����H���	��H����
W��� L���W���b��I�~�_��I�~�"��L��� �|W��H���_����H����a��H���_����AWAVAUATUSH��XH�T$H�L$dH�%(H�D$HH�L�,�M���6I�]H��I��H�K �.fDH�3H���H�N 1�I��H��H�uI9���H��H9L$u�H�|$H�CL�'H�D$L9�����a��H��M��t2I�$L�|$0L��L���H�D$0�x��H�5N��L��E1��T���L�d$(�Da��H�|$H��t,H�t$L�|$0L��H��H�D$0�xtdH�5��L���MT��M��A��M��t
I�$L��PE������fDH�D$HdH+%(��H��XL��[]A\A]A^A_�f�E1���L�D$@L��H�5���H�D$@L�D$��S��L�D$M9�A��M���{���I�L��P�m���H�5Y��L��L�d$@H�D$@�S������W����I��I�����H��I���
H�|$(�g ��L��I��u�T����_���/����j]��f.���AUATUH��SH��H��H����H��I��H��<��L�,�L���U��L��1�H��I���W��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�A H��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���T��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�Y����S����H���tS��I�$H�E(�g_����H���{^��H���#\����AV1�AUATI��USH��H��L�.dH�%(H�D$1�L��L��H�wI��H��L���M���H��t0H�H��t(H��H�T$dH+%(��H��[]A\A]A^��(�.T��I�<$H�H��H�xH��tH��PH�EH�C(H�{ �H�SH�sH�EH�$��a��H�ք�u4H�3L�m J��H�H��tAH�H�EH�H�(H�CH�E�R���fDH��H�����L��1�H�sI����H�CH�kH�EH��tH�@ 1�H�sH�,�H�CH���U����H���	��I�����Q���(H���wR����]��H�}L�m���L���m��H��(�PR��L���xZ����H���\��H���dZ��@��AUATUH��SH��H��H����H��I��H��<��L�,�L���R��L��1�H��I���T��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���Q��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�V����P����H���tP��I�$H�E(�g\����H���{[��H���#Y����AV1�I��AUATUSH��H��L�&L�GdH�%(H�D$1�L��I��H�L��L�,�M��tgI�1I��H�NI9�t$H�>H��tPH�O1�I��H��I��I9�u<H��I9�u�I�H�BH��t(H�T$dH+%(��H��[]A\A]A^����P��H�SH�sH�{ H�H��I��H�EH�EH�C(H�$�^��H�ք�u0H�I�I�EH��tLH�H�EI�EH�(H�CH�E�e���DH��H�����L��1�H�H�sL�,�I�I�EH��u�H�CH�kH�EH��tH�@1�H�sH�,�H�CI�E���Q����I��L�mM��tL���[���XL���JO��H���=O��L���eW��D��AUATUH��SH��H��L�gM��u�fDI��I�T$ H�}�J�wH��H���a��I�T$��IHT$����H��uɄ�teL�kM9�tTL��M���	T��I��I�|$ H�U�w�JH��H���Ja��A��1�E��LH�LI�H��L��[L��]A\A]�f�E1���M���L�g�f.���AUH�GATI��UH��SH��H9��H�V I�<$H��J�wH��H���`������H�EH��H9�t<H���ES��I�$H�x I�ŋJH���wH���`����yc1�I�}HE�ID�H��H��[]A\A]�fDH�(t9H�G H�H�x �JH���wH���;`����yH�U H��1�[]A\A]�fDH��L��H��[]A\A]�+���I�$H�{ �J�wH��H����_����yYH�U 1�H9��i���H���[��I�<$H�P I�ŋwH���JH���_����y�1�H�{IE�IE�H���(���f�H��1�����fD��AWAVI��AUL�oATI��UL��SH��H�_H��u�bfDH��H��H��t.I�H�{ �J�wH��H���+_��H�KH�S��y�H��H��u�I9�tH�U I�>�J�wH��H���^����yq�`I���L��I�>H��H�x �N��f�H�U L��H�EXL��E(E8EH���H��I��H��t6I9�tH��tG�L��L��H���I\��I�D$(H��H�E([]A\A]A^A_�H�} �'S��H��`H���K����H�R H�E �J�pH�xH���:^���������AV1�AUATUH��SH��H��L�.dH�%(H�D$1�L��L��H�wI��H��L���2��H��t8L� 1�M��t.1҈�H�D$dH+%(��H��L��[]A\A]A^�fDH���<��H�SH�sH�{ I��H�C(�H�$�Y��H�ք�u0H�3M�l$J��H�H��t<H�I�$H�L� H�C��r���H��H���3��L��1�H�sI����H�CI�$L�cI�$H��tH�@1�H�sL�$�H�CH����L����H��M��tI�|$�I���L���,J��H���TR��@��H�I��I��I��L��M��t>I�H�p�&fDH�8H��t0H�wI��1�H��I�pI9�uH��H9�u�A�f9Pu�L���DE1�L���f���AUATUH��SH��H��H����H��I��H��<��L�,�L���2J��L��1�H��I���"L��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H���I��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�M���PH����H����G��I�$H�E(��S����H���R��H���P����AUI��ATI��L��UH��SH��H�� H��H�W�H�w�dH�%(H�D$H�GH�$��V����uHH�3I�l$J��H�H��tTH�I�$H�L� H�CH�D$dH+%(u^H��L��[]A\A]�@H��H��H���"���H��1�H�sI���@H�CI�$L�cI�$H��tH�@1�H�sL�$�H�CH���J��f.�D��AUATUH��SH��H��H����H��I��H��<��L�,�L���H��L��1�H��I����I��L�U0H�uH�EE1�L�MH��t,H��1�H�6H�AH��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H����F��H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t�eK��� F����H����E��I�$H�E(�Q����H����P��H���sN�����'V�����H��P�V����H��H�V����H��@��U����H��8��U����H��0��U����H��(��U����H�� �U����AWAVAUATI��U1�SH��H��(L�ndH�%(H�D$1�L���:O��H��� H��1�H�sH��I��H�D$H�L�<�M��t{M�7I�N�"f�I�6H��thH�N1�M��H��H�sI9�uSI��H9�u�I�VL��H���[����t�M�71�M��t.1҈�H�D$dH+%(�	H��(L��[]A\A]A^A_�@� �E��L��H�L�xI��L����}��H�C(H�SH�{ �H�sH�D$�^S��H�ք�uWH�L�l$I�nI�I�EH��tgH�I�I�EL�0H�C��U���1�L���W��H����Y��H������fDH�T$H�����H��1�H�sH��H�D$�H�CL�sI�H��tH�@1�H�sL�4�H�CI�E�{����hF����H���	��H���L���~���L��� �C��H����K���C��� L���C���O����H���N��H���K��f.�@AWAVAUATUSH��(H�|$H���H�D$H�@H�D$H����H�D$L�xM����I�_H���cH�kH����L�mM����M�eM����M�t$M����I�FH��t>H�xH�$�c���H�$I��H�@I�z H�D$�:J��H�<$�(�B��H�D$H��u�I�FI�~ H�$�J���(L���B��H�$H����I���H�} L�e��I���(H���hB��M��t2L���:���I�} M�e�I���(L���>B��M��t�M������H�{ H�k�I���(H���B��H��tGH������f.�I�D$I�|$ H�$�]I���(L����A��H�$H���{���I������I� I�_�.I���(L���A��H��tI���i���L�|$I� I�_�I���(L���A��H��t
H�\$�)���L�|$I� I�_��H���(L���WA��H��t
H�\$���H��([]A\A]A^A_Ð�H��t{AUATI��USH��I�|$M�����I�]8M�d$H��t.H�{H���t���H�} H�[�WH���(H����@��H��uվXL����@��M��u�H��[]A\A]��Ðff.�AWAVAUATUSH��(H�|$H���H�D$H�@H�D$H����H�D$L�xM����I�_H���cH�kH����L�mM����M�eM����M�t$M����I�FH��t>H�xH�$�c���H�$I��H�@I�z8H�D$���H�<$�X��?��H�D$H��u�I�FI�~8H�$����XL���?��H�$H����I���H�}8L�e�e����XH���?��M��t2L���:���I�}8M�e�;����XL���^?��M��t�M������H�{8H�k�����XH���7?��H��tGH������f.�I�D$I�|$8H�$�����XL���?��H�$H���{���I������I�8I�_����XL����>��H��tI���i���L�|$I�8I�_����XL���>��H��t
H�\$�)���L�|$I�8I�_�T����XL���w>��H��t
H�\$���H��([]A\A]A^A_Ð�H����AUATI��USH��I�|$M������I�]8M�d$H��t2�H�{H���l���H�}8H�[�����XH����=��H��u�I�} �TE���XL����=��M��u�H��[]A\A]��Ðff.���H�GH�7H�G H�G(H��GH�G8H�BH�GH�G@H�BH�G0H�GHH�BH�BH��GP���AUI��ATUSH��H�_@H�o8H9�t<f�L�eM��tL����H���XL���=��H�}H��tH��PH��H9�u�I�m8H��tI�uHH��H)���<��I�}H��[]A\A]�����ff.���UH��AWAVI���AUL���ATSH��H��H����L��dH�%(H�E�1��(J��H��L��L���E�����:�
��L�����HDž ���HDž(���HDž0������HDž8�������=��jH�� ���E1�1�jA�����H��L��jj�)J��H�� ��uWE1�E1������1�H��L����=��H�����H��t����H�TP�HDž ���HDž(���H��0���HDž8������H����L�����1ɺH�5.�L��HDž���L�8��I��H��L���L���uL��H�����L�������B��H�f�x ��H����1�L�0H��0���H=���tH+� ���H�P�H�pHH�H��@����
H���B��H��L��HDž����‰E��B��1ɺL��H�5~�HDž�����6I��L��L�����L����K��H�������B��H������A��1�L��L���>�H����L�0H�������@��unH����A�L��A�H�
�����H�0�?��L���:��H�������A��L���8��H�E�dH+%(��H�e�[A\A]A^A_]�fD1ɺH�5ݭL��HDž����WH��L��L���L����J��H������(A���M����x�r���� L��L��HDž���f��������OA��E1�E1������1�L��L���W;��H�����H��t����H�TP�H�����H��0���HDž ���HDž(���HDž8�������@������;����H��� {����H���H{����H���<{����H���${����H���z����H���z��f.���ATE1�I���;USH��H��H�21�dH�%(H�D$1�H��H�$��H��H�4$�CPI�4$��u"H�D$dH+%(u(H��L��[]A\�fD�	H��L���lI�����:����H���z������AWAVAUI��H��ATM�}UH��SH��8dH�%(H�D$(1��LH��H��I���1?��H��L�������E1���I����I�6H�|$ �����;H�D$ A��1�E1���G��H�T$ M�uE�H�T$M��u�t@H�T$I��I�~ �JH���wH���J��I�V��H��IIFII�H��u�I9��1H�U H�|$L�u0�J�wH��H����I�����	H�E8M��H��u��I��H��H��tH�HH�P9X }�H��H��u�M9��oM�}0A;] �aI�E8L��H��u�3H��H��H��tH�HH�PD9` }�H��H��u�L9�t
D9e ���XM�u(H���77��D�` H��H�@0H���H�U L��H�@H�E@H�EHH�EP�H��H���I9��JH���A1�D;b @���7f��XH�,$��6��H��H�D$H�|$H�D$L�u0H�E ��:���E0H�4$H�U H�E8I�}L�u@L�uHH�EP�I��H���I9�t	H�����L��L��H����E��H�E8I�E0M��H���x���DH�E(�XL�l$H�$�6��L�x0�X H�t$H�P �@0H�<$I��H�@8L�x@L�xHH�@P�6H����I9�t	H�����L��L���_E��H�EP����D�L��H���@E��I�EPH�|$�1<��H�E(H�T$(dH+%(��H��8[]A\A]A^A_�f.�H�}8H�$���H�} ��;��H��X�m4��H�$L�p0H���D���D1�H�$��L��X�@4��H�$L�x0I���g���1���H��XH���4���I���1�;Z @������H�R H�E L�$�J�pH�xH���F��L�$�����I����T6����H���6v�����UH��AWAVAUATSH��H��P����0dH�%(H�E�1��H4��A�1�1������H��H��@���H����6��1�H��H�]��Y9��H��P���H��@���L�}�L�m�H�p8H�@@H��hH��H���H��h���H��8���H9�u&�5DH��h���H��h���H9�8����H��h���H�@H��`���H��t�H��@�������?��H��`����p<��H��X���H�E�H�����L��H�E��7��H�u�H��`����@E��H�Nj@��r�I����p�j��q�IH�w �GD�W@�N9�O�L��H�E�L�e��c=��H�E�H�}�H�E��9��H�E�L��H�E�H�E��7��H�}��q9��H�}��w���H��H���H��P������H�}�I���cA��H�}��8�>��H���?��H�Ǿ�4��H��x���H�E�1�H��p���H�E��H���f.�;]���H�}�H���]�A���E�H��x���A���H�A���p���L���P��H�u�XL���ZD��H�E�D)�L�e��J<��H�E�L��L��H�E��GH�}��n8��H�E�;X�q���H�}�H��tH��PH�}��I8��H�E�H�E�H9�X����#���H��@����G8�����f���s��H�w0L���k5�����fDH�}��G��t���H�_L�e�H�DG
H�E���L��L��H�E�f�E��!8��L��L���
H�}�H���7��H9]�u��=���fDH�w �G0�W,�N9�O������H�H��@����P���fDH�w �O,�W(�F9�O�����H�}��H�E�dH+%(uH�e�[A\A]A^A_]��42����H���(r����H���Hr����H���r����H���r����H���r����H���+r��ff.����AWAVAUATUSH��dH�%(H��$�H���pu.H��$�dH+%(�H�ĸ[]A\A]A^A_�DH��I������H�x(H�D$t�H��$�H�3A�A�H�Ǻ��L�t$HH�D$0H�
O�L��$ �3��1ɺ
L��H�D$HH�5`��
=���
�L���{:��L��H�D$P��$d��H�D$PH��H�D$�$6���0�
/��A������1�1�H��I���1��H��$�L��L�d$XH��H�D$�S6��H��$�H�|$HDŽ$�HDŽ$�H���8��H�|$��?��1�H����4��H��L���2,��H���-��H�t$L���M>���CP�
L���p�sP�9����$d����L�1ɺH��H�5J�HDŽ$�L�D$ ��;��H�|$ L��H����i>��H��$��4��L�31ɺH�5�H��HDŽ$��;��H�L$H��L������">��H��$��e4��H��$�H�3A�A����H��H�D$8H�
���1��H�D$`L�t$`L��L�t$(�1��H�D$hH�D$hH��H�D$ �1��H�|$�%/��1Ƀ���H�5O�L����:��H�|$��*��1ɺ���H�|$ H�5.��:��L��L�3�<��L�l$xH��H��L���^�1ɺH�5�H��HDŽ$��|:��L��H���L���	=��H��$��L3��H�|$x�B3��L�31ɺH�5��H��HDŽ$��-:��H�L$H��L������<��H��$��2��L�31ɺH�5��H��HDŽ$���9��H�L$(H��L������q<��H��$��2��L�31ɺ
H�5L�H��HDŽ$��9��H�L$ H��L������*<��H��$��m2��H�L��H��H�D$��9��H��$��
L��L�t$p��1��L��L��H�D$x�‰�$��2��1ɺL��H�D$pH�5���9��H�|$L��L���;��H�|$p��1��H�|$x��1��H���c:��H�L��H��H�D$�@9��H��$��
L���[1��L��L��H�D$x�‰�$���1��1ɺL��H�D$pH�5/��8��H�|$L��L���
;��H�|$p�P1��H�|$x�F1��H����9��H�3���H��A�A�H�
��.��H���*��L��
L���L�D$�0��L��H��HDŽ$��‰�$��91��1ɺL��H�D$xH�5���7��H�|$H��L����U:��H�|$x�0��H��$��0��H��L��HDŽ$�HDŽ$�HDŽ$��HDŽ$���'��L��L���*��L���0'��1�L��L��L�;�p1ɺH�5��H��HDŽ$��7��L��H���L���9��H��$���/��H�|$x��/��H�3���H��A�A�H�
���1-��H���(��L����&��H�D$H�hL�hI9�t&�H�U L��H���Y�H���15��H��I9�u�H�|$h�o/��H�|$`�e/��H�|$8�K(��H�|$�!6��H�|$X�H�|$P�=/��H�|$H�3/��H�|$0�(�����@H�T$HL��B�ƉD$ �::��H�D$H�L$ Hc�$dHcpH��H�|puK1�f�4�H���DH�|$(�H�5=���5�����DH�|$ H�5"��5�����f�H�L���L$(H�T$ �&���L$(H�T$ H��H�D$H��)����H����i����H���>j����H���i����H����i����H���$j����H���'j����H���%j����H����i����H���i����H���i����H���j����H���j����H���j����H����i����H����i����H����i����H���i����H���	j��ff.����AWI��AVAUATUSH��HdH�%(H�D$81��6�I�G I�OH�L$H�D$H9���L�d$ fDH�D$L�h@H�P0L�p H�T$L9�ttDI�m@I�]0H9�tPL����7��L��L����'��A�u L���q%���u L���6)��L��L������L���3��H���{2��H��H9�u�L���k2��I��H9D$u�H�|$�3��H�D$H9D$�W���H�D$8dH+%(uH��H[]A\A]A^A_��'����H����h�����H�?H��tH�Hx��ouH��`�f.�D��ATUH��SH��dH�%(H�D$H�H�$H��tXH�H�R��DH�?H��tH�H�EHx��o��H�$H��t H�H�x�H��@6��H�HX�H���kt_H�}H��t6H�Hx��ou(H�D$dH+%(uSH�H�@H��[]A\���H�D$dH+%(u+H��[]A\��H��P��H��P�]����@&����I��H�����H�����L����+�����AUATUH��SH��H��L�gM��u�fDI��I�T$ H�}�J�wH��H���	6��A��I�D$E��IOD$��H��uȄ�tdL�kM9�tSL��M���x(��I��I�|$ H�U�w�JH��H���5��A��1�E��LO�LN�H��L��[L��]A\A]��E1���M���L�g�f.���AWAVAUI��ATUH��SH������H��tnI��M�uA�H��tt�(�B#��H��H��H�EH�EH�C �w'��L��L��H��D����2��I�E(H��H�غ[]A\A]A^A_�f.�H��1�[]A\A]A^A_��L9�t�H�R H�}E1��J�wH��H���4����A���^���f.���AUATUH��SH��H��L�gM��u�fDI��I�T$ H�}�J�wH��H���I4��I�T$��IHT$����H��uɄ�teL�kM9�tTL��M���&��I��I�|$ H�U�w�JH��H���3��A��1�E��LH�LI�H��L��[L��]A\A]�f�E1���M���L�g�f.���AUH�GATI��UH��SH��H9��H�V I�<$H��J�wH��H���q3������H�EH��H9�t<H���%��I�$H�x I�ŋJH���wH���73����yc1�I�}HE�ID�H��H��[]A\A]�fDH�(t9H�G H�H�x �JH���wH����2����yH�U H��1�[]A\A]�fDH��L��H��[]A\A]�+���I�$H�{ �J�wH��H���2����yYH�U 1�H9��i���H���B.��I�<$H�P I�ŋwH���JH���d2����y�1�H�{IE�IE�H���(���f�H��1�����fD��ATSH��H��L�gM��tI��DI��A�T$ I�D$9�IOD$A��H��u�M��E��u1�9�LO�LN�H��[L��L��A\�L�gL9gtL���^$��M���P I���ǐM��H��E1�L��L��[A\�f.�f���AUH�GATI��UH��SH��H9��D�*H��D;n }CL�GL��I9�t!H����#��D;h ~`E1�H�xLE�HD�H��H��L��[]A\A]��~NH�W H9�tjH����,��D;h }E1�H�{HE�LE�H���f�H�(u1H��L��H��[]A\A]���@H��I��1�[L��]A\A]�DH�W �B A9$~�H��E1�[L��]A\A]�f.���ATSH��H��L�gM��tI��DI��A�T$ I�D$9�IOD$A��H��u�M��E��u1�9�LO�LN�H��[L��L��A\�L�gL9gtL���"��M���P I���ǐM��H��E1�L��L��[A\�f.�f���AUH�GATI��UH��SH��H9��D�*H��D;n }CL�GL��I9�t!H���O"��D;h ~`E1�H�xLE�HD�H��H��L��[]A\A]��~NH�W H9�tjH���-+��D;h }E1�H�{HE�LE�H���f�H�(u1H��L��H��[]A\A]���@H��I��1�[L��]A\A]�DH�W �B A9$~�H��E1�[L��]A\A]�f.���AT1�I��� H�H�5z��*��L��A\ÐfD��H��0�s���f�AW1ɺ H�5X�AVAUATUSH��dH�%(H��$1�H�|$H�D$�;*��H�|$1ɺH�D$H�5��*��H�|$ 1ɺH�D$ H�5։�)��H�|$(1ɺH�D$(H�5<���)��H�|$01ɺH�D$0H�5 ��)��H�|$81ɺH�D$8H�5.��)��H�|$@1ɺH�D$@H�5���u)����	����L�=o�L�t$XL�l$`L�d$hH��$�1ɺ L��L��H�D$X�-)��1ɺL��H�D$`H�5���)��1��H���H�H�D$H�t$1�L��$��L��DŽ$�H��$�H�D$ DŽ$�H��$�H�D$(DŽ$�H��$�H�D$0DŽ$�H��$�H�D$8H�D$hH��$�H�D$@H��$�H�D$XH��$�H�D$`H��$����L���p"��H�|$h� ����<��H�T$�H�H��I���#��H�|$`� ��H�|$X�� ��H�|$@�� ��H�|$8�� ��H�|$0�� ��H�|$(�� ��H�|$ � ��H�|$� ��H�|$� ��H��$dH+%(��H��L��[]A\A]A^A_�f.�H�!�	H���!��������L�=r�H�|$H1ɺ L��L�t$XH�D$HL�l$`�;'��1�L���H�5��L�d$hH�D$PH�D$XH��$��'��H�D$X1�L��
H�5h�H�D$`H��$���&��H�D$`1�L��H�5J�H�D$hH��$��&��H�D$hI��1�H�t$HL�L$t�H�|$PH��$�H�H�D$tH�|$�D$|���H�|$� ��H�|$P�����Y��H�T$H�H�H��H�D$�!��H�|$h���H�|$`���H�|$X���H�|$H����H�D$H��H���	�/����������@UH��SH��H��H�?���H�EH��H�H�EH��[]�?���ff.�ATUH��H��H�8�}��L�e0M��tL���� ���L������H�}H��tH�u(H)�����H���r��H��H��H]A\���ff.�������fD��AUH�5t�1ɺATI��H��dH�%(H�D$1�I��H�$L����$��H�5�	H��tDL�����L��L���}%�����e[��H�<$���H�D$dH+%(u.H��L��A\A]ÿ�� ��H�=�	H�0���H�5�	��i��f���H��0�3�����AT1�I��� H�H�5
��-$��L��A\ÐfD��ATH�[j	UH��H��H�H��pH�G H��8H�G(H��0H�G0H�G@�(uH�57	H��t:H�}@H���� ��H�}8H��tH��PH�i	H��H�EH��]A\������1	��t%H�.	H�=�~	H�0���H�5�~	�fDL�%	L�������t�����L��H��~	���벐fD��UH������H��]���f.�AW�
AVAUATUH��SH��H���7dH�%(H��$�1�L�l$`L�t$L��$�L���T ���u�
L�$��< ���u�
L����$��$ ��Hc�$�Hc�$��D$TH�H�lHʼn����H�D$��uVH�;�^��H�D$H�|$H�D$H�����H�|$�9��H��$�dH+%(��H��[]A\A]A^A_�H�rgb(H�HH�HHcD$TL�<H��uhJ�9�,f�8H�HHc�$�L�4H��uwJ�1�,f�0H�HHc�$�L�,H��u>J�)�)1�f�H�T$�jf�H�)����H��L��L�����H���DH��L��L�����H���DH��L��L���j��H���s����M��ff.�f�AWAVAUATUSH��dH�%(H�D$x1���}	��tD�=%~	L�%�}	��H�D$xdH+%(��H�ĈL��[]A\A]A^A_��L�%a}	L���q����t�H�|$(1ɺ)H�D$(H�5��� ��H�D$0�4}	���D�=�}	H�&}	��H�H�l$P1ɺ<H��H�57�H�D$`H�\$`H�D$XH�l$0H�D$P�1 ��H�T$PH�߾���H��E1�E1�S1�1�H��jH�D$pPjjH�t$X���H��0H�����H�|$`�� ��H�|$0�'�������H�T$(�H�H��H�����H�|$P���H�|$(���L��H�3|	�����=�|	L�% |	�z���f.�����H�8H���P���=q|	tH�;�_���J���f.��Q|	��z	���zL�l$HH�l$PL�5�}H�|$@1�L���!H�D$8H�D$@����H�D$@1�L��#H�5��H�D$HH�D$`����1�H��<H�5��H�l$8H�D$P���H�D$`1�H��PA��jjjL�L$hH�L$p���H�� H�����H�|$P�U��H�|$H�K��H�|$@�A��H�|$8������f�L�5�z	L�������������1�H�|$8�%H�D$8H�5U�L�l$H����H�\$`H�D$@�;��1�L��5H�H�5G�H�l$PH�D$`H�D$hH�D$XH�D$H���H�T$HH�߾���1�H��2H�52�H�l$@H�D$P�w��H�T$PH�|$h��S��H��E1�E1�S1�1�H��jH�D$pPjjH�t$h���H��0H���_��H�|$`���H�|$h���H�|$@�a����
��H�T$8�H�H��H������H�|$P����H�|$H����H�|$8���L��H�sy	����5���f�L�=ax	L�l$HL��H�l$PL�5u{�@�����o���1�L���!L��H�D$H�m���H�D$P���H�T$HE1�E1�H��H������H���g��H�|$P�}����3��H�T$H�H�H��H�D$���H�|$H����H�D$L��H��w	�'������f��K��H�8I������=y	tI�?�����J���f.���x	�Zw	����L�l$HH�l$PL�5izL�\$@1�L���!L��L�\$H�D$8H�D$@�[��H�D$@1�L��H�5�H�D$HH�D$`�2��1�H��5H�D$PH�5�����H�D$`L�T$81�PL��A�
�H�D$jjjL�L$hH�L$pL�T$(���H�|$(H�� ���H�|$P���H�|$H���H�|$@���H�|$1�L��H�D$@�!���H�T$@1�L��H�D$HH�5SzH�T$`��g��1�H��2H�D$PH�5���H��H�D$A�1ҾPjjjL�L$hH�L$pH�|$(�[��H�|$(H�� �=��H�|$P����H�|$H����H�|$@����H�|$8�5������L��u	L�l$HL��H�l$PL�5�x�p�����/���1�L���!L��H�D$H����H�D$P����H�T$HE1�E1�H��H�����H�����H�|$P�����c	��H�T$H�H�H��H�D$�%��H�|$H���H�D$L��t	L��H��t	�P������
����H���\T��f.�AWAVAUATUSH��dH�%(H�D$x1��0t	��tD�=�t	L�%&t	�H�D$xdH+%(�H�ĈL��[]A\A]A^A_��L�%�s	L���!
����t�1�H�|$ �H�D$ H�5awH�\$P�G���L�t$8H�D$(���1�H�|$0�5H�L�l$@H�l$(H�D$PH�D$XH�5-wH�D$HH�D$`H�D$0����H�T$0H�߾���1ɺ/L��H�D$8H�5w���H�T$8H�|$X����1ɺ8L��H�D$@H�5w�}��H�T$@H�|$`��Y��H��E1�E1�S1�1�H��jH�D$`PjjH�t$P�
��H��0H���e��H�|$P���H�|$X���H�|$`���H�|$(�]������H�T$ �H�H��H������H�|$@����H�|$8����H�|$0���H�|$ ���L��H�%r	�����=�r	L�%r	���@���H�8H���x���=Yr	tH�;�������f��Ar	�r	����L�t$8L�l$@L�=)uL�T$01�L���!L��L�T$H�l$H�D$H�D$0���H�D$01�L��L��u�H�D$8L��H�D$P����1�L��5H�D$@H�5u����H�D$P1�H��PA��H�D$jjjL�L$XH�L$`����H�� H�����H�|$@�u��H�|$8�k��H�|$0�a��H�|$ 1ɺH�D$ H�5&u�P��L�0uH�|$(1�L�޺H�D$(�,��H�T$ 1�L��H�|$��D$PH�T$`H�T$(f�D$hH�T$X�!H�D$0����H�T$01�L��H�D$8H�5�tH�T$H����1�L��/H�D$@H�5t���H�T$H�H��RA�1�jH�D$PH�D$jL�L$XH�L$`���H�� H�����H�|$@�G
��H�|$8�=
��H�|$0�3
��H�|$(�)
��H�|$ �
��H�|$1�L��H�D$0�!���H�T$01�L��H�D$8H�5�sH�T$P�����1�L��8H�D$@H�5gs����H�$1ҾA�H��PjjjL�L$XH�L$`����H�� H����
��H�|$@�z��H�|$8�p��H�|$0�f��H�|$�������H�-o	L�t$8H��L�l$@L�=%r���������1�L���!L��H�D$8����H�D$@�Z��H�T$8E1�E1�H��L���
��L���
��H�|$@�-�������H�T$8�H�H��H�$�
��H�|$8���H�$H��H�^n	��
���K������ff.�@AWAVAUATUSH��8dH�%(H��$(1��
o	��tA�=�o	L�%o	��H��$(dH+%(��H��8L��[]A\A]A^A_ÐH�-�n	H�������t�1�H�|$h�H�D$hH�5)�H��$������L�d$pH�D$p���f�1�H�|$xH��3H�5
�)�$�)�$�L��$�L��$�)�$H��$�HDŽ$H�D$x�X��H�T$xH�߾�6��1�H��$��1H�5�HDŽ$����H��$��H��$����1�H��$��1H�5�HDŽ$�����H��$��H��$����1�H��$��:H�5�HDŽ$����H��$��H��$��s��1�H��$��=H�5�HDŽ$��\��H��$��H��$�2��1ɺ:L��H�5�HDŽ$�� ��H��$��H��$�
��1ɺ=L��H�5�HDŽ$�����H��$��H��$�
��H��E1�E1�S1�1�L��jH��$�PjjH��$��\��H��0L���	��H��$��s��H��$��f��H��$��Y��H��$��L��H��$�?��H��$�2��H��$�%��H�|$p�{����1���H�T$h�H�H��H���	��H��$�����H��$�����H��$�����H��$����H��$����H��$����H�|$x���H�|$h���H��H�Yk	�����=�k	L�%Fk	�C�������H�8H�D$ �^���=�k	tH�D$ H�8�h��������k	��i	���jL��$�L��$�L�=mH�=�k	��H�=}k	H�F~�PH�=Xk	L�a~�H�=sk	��1�L��H�l$P�!H��$�H�D$PH��H�D$HDŽ$��
��1�L���#H��$�H�5[~HDŽ$�H��$��r
��1�L��3H�5�{HDŽ$��P
��A�1�H��H��$��H�L$QjjjL��$�H��$��W��H�� H���;��H��$�����H��$�����H��$�����L��qH�|$X1�L�޺
H�D$X���H�|$`1ɺH�D$`H�5�l���H�D$XH�t$h1�I��H�5�qDŽ$�H��$�H�D$`L��L�D$@H��$��f��$�H�D$h�A��H�͊L�L$p1�H��L�ϺL�L$HH�D$p���H�T$hH�t$x1�DŽ$I��H�5|H��$H�T$pL��L�D$(H��$�f��$�+H�D$x���H��$�1ɺ(HDŽ$�I��H��H��$�L��L�L$0���H�\$81�H��L��{H��$��*HDŽ$�L���O��1�H�ߺ(H�5�{HDŽ$��-��H�|$1�L���!HDŽ$��
��H�T$xL��1�H�5��HDŽ$�H��$�H��$�H��$�H��$�H��$�H��$�H��$�H��$�H��$���
��1�L��1H�5-yHDŽ$��|
��E1�1�H��H��$�H�t$V�j�t$jL��$�H��$����H�� H���h��H��$����H��$����H��$����H��$�����H��$�����H��$�����H�|$x����H�|$p����H�|$h���H�|$`���H�|$X���L��nH�|$(1�L�ֺH�D$x�	��H�|$01ɺH�5hiHDŽ$��p	��H�T$xH�|$8�f��$�1�H�5`yH��$�H��$�DŽ$�H��$��+HDŽ$��	��1�H�ߺ(H�5�yHDŽ$����H�|$1�L���!HDŽ$�����H��$�1�L��H�T�HDŽ$�H��$�H��$�H��H��$�H��$�H��$�����L��1ɺ1H�5GwHDŽ$��^���t$1ҾjA�H��t$jL��$�H��$��m	��H�� H���Q��H��$����H��$����H��$�����H��$�����H��$�����H��$�����H�|$x���L��lH�|$@1�L�޺
H�D$h���H�|$H1ɺH�D$pH�5pg���H�D$hH�|$(1ɾ�	DŽ$�H��$�H�D$pf��$�H�5hlH��$�H�D$x�1��H�"xH�|$01�H�ƺ*HDŽ$��
��H�T$x1ɿf��$H�|$8H�5�vH��$H��$�DŽ$H��$�+HDŽ$����1�H�ߺ(H�5@wHDŽ$����H�|$1�L���!HDŽ$��o��H��$�1�L��H�5
�HDŽ$�H��$�H��$�H��$�H��$�H��$�����1�L��:H�5uHDŽ$�����t$E1�1�j�H��t$jL��$�H��$��
��H�� H����H��$����H��$����H��$����H��$��}���H��$��p���H��$��c���H�|$x�Y���H�|$p�O���H�|$h�E���L�ZjH�|$@1�L�޺
H�D$h�1��H�|$H1ɺH�D$pH�5�d���H�T$hH�|$(1�L�(jA�DŽ$�H��$�H�T$pL��fD��$�H��$��	H�D$x���H�|$01�H��uH�ƺ*HDŽ$����H�D$xH�|$81�A��+H�5�tDŽ$H��$H��$�fD��$H��$HDŽ$��6��1�H�ߺ(H�5�tHDŽ$����H�|$1�L���!HDŽ$�����1�L���H��$�H�5��HDŽ$�H��$�H��$�H��$�H��$�H��$����1�L��=H�5�rHDŽ$�����t$E1�1�j�H��t$jL��$�H��$����H�� H���v���H��$��)���H��$�����H��$�����H��$�����H��$����H��$����H�|$x����H�|$p����H�|$h����L��gH�|$@1�L�ֺH�D$h���H�|$H1ɺH�D$pH�5�b���H�D$hH�|$(L��gA�L��1ɺ	H��$�H�D$pfD��$�H��$�DŽ$�H�D$x�=��H�^sH�|$01�H�ƺ*HDŽ$����H�T$xH�|$81�A�H�5
rDŽ$H��$H��$�fD��$H��$�+HDŽ$����1�H�ߺ(H�5JrHDŽ$����H�|$1�L���!HDŽ$��y��H��$�1�L��H�5�HDŽ$�H��$�H��$�H��$�H��$�H��$���'��1�L��:H�5�pHDŽ$�����t$E1�1�j�H��t$jL��$�H��$����H�� H�����H��$����H��$����H��$����H��$����H��$��z���H��$��m���H�|$x�c���H�|$p�Y���H�|$h�O���L�eeH�|$@1�L�ֺH�D$h�;��H�|$H1ɺH�D$pH�5`���H�T$hH�|$(1�L�2e�DŽ$�H��$�H�T$pL��f��$�H��$��	H�D$x����H�|$01�H��pH�ƺ*HDŽ$����H�D$xH�|$81ɺ+H�5�oDŽ$H��$H��$�HDŽ$�H��$�f��$�D���1�H�ߺ(H�5�oHDŽ$��"���H�|$1�L���!HDŽ$�����1�L���H��$�H�5�}HDŽ$�H��$�H��$�H��$�H��$�H��$����1�L��=H�5onHDŽ$�����t$E1�1�j�	H��t$jL��$�H��$����H�� H�����H��$��7���H��$��*���H��$�����H��$�����H��$�����H��$����H�|$x���H�|$p���H�|$h����H�|$P�.����t�f�H�-�Y	L��$�H��L��$�L�=�\�Z����1�L���!L��HDŽ$�����HDŽ$����E1�E1��H�H��$�L������L���x���H��$������A�H��$��H�H��H������H��$����H��H��X	�6�������H��m�H�=mZ	����L�ҾH�=!Z	�|�����H�ھH�=Z	�\����H��l�H�=�Y	�8��^��n�ff.���H�G0E1�H;GtH�WHH;G8t
D�@�D���DH�B�H���ff.����H�GPÐfD��H�7H�WH�OH�G����UH�oH��tH����H��]�L�@]�fD���<q�|q�%4q�Y��X(`f(�fT�f.�v3�H,�f���-YefU��H*�f(����fT��\�fV�f(��^��f�����I��t���fD1ɺH�5~dL���"���f���AWAVI��AUATI��UH��SH��H��XdH�%(H�D$H1�I��L�|$H�$L���j�L��H�D$�Y�{���L��H������C�P������H�}L��L����0���H�|$�G��tL�EA��qu6�a�H�<$�X�H�D$HdH+%(�H��X[]A\A]A^A_�DL��L��L������H�|$�fD�1�H�5fcL���
����C�P�����V����zo��f���o���%io�*��^eo�Y��XQ^f(�fT�f.�w+�^�H�\$H���r���H��L���‰D$D������@�H,�f���-WcfU��H*�f(����fT��\�fV�f(���N���H���4��f���AWAVAUI��ATUSH��dH�%(H��$x1�H�~����?
H�~���H���.
I��H��H���8���tH���,�����	H�LS	I�7L��$�A�H��$�H��$�A�L���H��H�D$@�p�H��$��s�H�����H��D$X���H��D$\��D��H��H��Hi�ų��D��D��H�� D�L�t$`��L��L�t$8)�H�i�)�H�Cf�L$H�KH=���HD�H�H��H��?H�H�SH�H�����HD�H��$�H�H��H��?H�H�H��$���H��$��T$L��H��H�D$(�8���L��L����H��$�H��D�d$ZH�D$ �r���H��A��D�d$YHi���QH��%�D$Z�N���H��A��D�d$XHi���QH��%�D$Y�*���H��A��D�d$^Hi���QH��%�D$X�����H��A��D�d$]Hi���QH��%�D$^����H��A��D�d$\Hi���QH��%�D$]�~����5�P	�
L��$�A��L��Hi���QH��%�D$\�F��P	��D�`	��$4D����H��$�I��E���MI�}L��$��L�H��$�L��HDŽ$�I�E���H��$���I�?L��L��H�oP	���H��$����H��$����H�D$hH�D$hH��H�D$�u�H���-����EH�������4H�f��H�CE1��H*��l$H=���tH)�H�P�L�hLH�H���|���H�Sf�f�I��E1��H*��H*��Y4_H�C�XD$�|$�D$ H=���tH)�H�P�L�hLH�H���o���f�H�SI���H*��Y�^H�C�XD$�D$(H������FH+��H��f��H*�f(�f��Y��t$f(�H=���tH+C��H��f�H���H*��X��d$f.����Q��YYI�1�L��H�5�\L�l$xHDŽ$��D$0�W�L��L���H�efH��H�D$x����H�|$x��H��$����5�iI��D$ ��i��i�t$�Y��X~Xf(�fT�f.�v3�H,�f���%�]fU��H*�f(����fT��\�fV�f(�L���^D$�o���L��L��HDŽ$��‰�$$���L��L���H�-gH��H�D$x����H�|$x�F�H��$��9��D$(�YD$�X�W��h�-�hI�f(�fT�f.�v3�H,�f���%�\fU��H*�f(����fT��\�fV�f(�L���^D$���L��L��HDŽ$��‰�$$��L��L���H�QfH��H�D$x�4���H�|$x�z�H��$��m��D$0�YD$�X�V�1h�%�gI�f(�fT�f.�v3�H,�f���%\fU��H*�f(����fT��\�fV�f(�L���^D$���L��L��HDŽ$��‰�$$�7�1ɺL��H�D$xH�5�^���L��L���H���U�H�|$x��H��$�������I�7A�H��H��A�H�
�\�������|$_���
H�t$H�|$\�4��M�f�L��L�D$ ��L��L��HDŽ$��‰�$$�p�H�|$ L��L��H�c���H�D$(H�D$x��H�|$x���H��$����I�?H�L$L��H��b���H�D$0H��$��Z�H��$���I�7L���H�eA�A�L��H�D$ H�D$x�]�H�|$x�c�L���K��|$[���	H�t$H�|$X�1��I�H��H�D$�!���f���Z�-�e�*��Y
�Yf(��\��YD$�
�e�X�Tf(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�L���^D$��L��L��HDŽ$��‰�$$���H�D$(L��L��H�|$���H�D$x��H�|$x�`�H��$��S�H�D$0I�?L��H�L$���H��$����H��$��$�H�D$ I�7L��A�A����L��H�D$x���H�|$x���L������R@H���8��������H���'���������fDH��$xdH+%(��H�ĈL��[]A\A]A^A_�(��H�D$p�H��H�D$���H�|$1�H��$��U�H�L$ H��H��$�H�|$H�HL��$�H�����HD����T$H�t$(L�(H�XH�|$��I�1ɺL��H�5HVL�l$xHDŽ$����L��L���H��_H��H�D$x�k�H�|$x��H��$���H�|$1�I���H�0�
L���5�L��L��HDŽ$��‰�$t���L��L���H�caH��H�D$x��H�|$x�<�H��$��/�H�|$1�I�� �H�p�
L����L��L��HDŽ$��‰�$t�O�L��L���H��`H��H�D$x��H�|$x���H��$���H�|$�I���H�0�
L���G�L��L��HDŽ$��‰�$t���L��L���H�U`H��H�D$x��H�|$x�N�H��$��A�H�|$�I��/�H�p�
L�����L��L��HDŽ$��‰�$t�^�L��L���H��_H��H�D$x��H�|$x���H��$����H�q`�H��$����I�7A�L��H��A����H���}�H��$���H���h���f�H���*��t$����a��t�*U�YD$H���D$���A��H�|$\H�D$XA��HE�����H�t$���M��D$L��L�D$ ���L��L��HDŽ$��‰�$$�7�H�|$ L��L��H��\���H�D$(H�D$x�a�H�|$x��H��$���I�?H�L$L��H�x\���H�D$0H��$��!�H��$��d�I�7L���H��^A�A�L��H�D$ H�D$x�$�H�|$x�*�L�����H���z�����qH���i����t
f��|$�|$_��/H�t$H�|$\������S�-h_��_�%`_f(��\D$I�/�l$�Y��XANf(�fT�f.�v+�H,�f��fU��H*�f(����fT��\�fV�f(�L���^D$�:�L��L��HDŽ$��‰�$$��H�D$(L��L���H��H�D$x���H�|$x��H��$���H�D$0I�?L��H�L$���H��$���H��$����H�D$ I�7L��A�A����L��H�D$x��H�|$x��L�����H�|$���H�|$h��H���p���H�����H�|$8�Y��H�|$@�O��H��$xdH+%(��H�Ĉ[]A\A]A^A_�fDH�|$1ɺH�5�Q�(������G1�H��S�f�fA�LPH��H��	u�Hc�$4I�xH�H����1�E�`fA�D�d�H�|$1ɺH�5Q�������|$[���H�t$H�|$X�v��M��LL��L�D$H�N�L��L��HDŽ$��‰�$$��H�D$(L��L��H�|$H���H�D$x���H�|$x�%�H��$���H�D$0I�?L��H�L$���H��$���H��$�����H�D$ I�7L��A�A����L��H�D$x���H�|$x���L��������f�f��|$f(�f(�H=��������DH�|$1ɺH�5�O�p�����H�|$1ɺH�5�O�P���L��L�D$H�T$�F��L�D$H�T$�E����H��f�H���H*��c�f.�H��f��H*���fDH�|$1ɺH�5)O����5�����������-���H���H!����H���!����H���!����H���!����H���!����H���!����H����!����H���%!����H���!����H���!����H���!����H��� ����H���!����H��� ����H���3"����H����"����H���|"����H����"����H���6!����H���!����H���!����H���!����H���!����H���!����H���!����H���!����H����!����H����!����H��� ����H����!����H����!����H���� ����H���!����H��� ����H���v ����H���!����H�������H���!����H���!����H���!����H���\!����H���!����H�������H��������H��������H������@��AWI��AVI��AUATUH��H�� dH�%(H�D$1�H����M��M����I��I��H�$L������L��L��L��H�����H�<$�G����L�l$L�d$���1ɺL��H�D$H�5�N���1ɺL��H�D$H�5,L���L��L��L��H����H�|$���H�|$���H�D$dH+%(�IH�� ]A\A]A^A_��L�d$1ɺH�D$H�5�ML��L�l$�W�L��L��L��H�GUH��H�D$��H�|$� ��H�|$����fDD�hD�����H�D$I��E��uGL�l$L�d$H�}���H��TL��L��H�D$�}�H�|$����H�|$���H�<$����u1�H�
Q�f�fA�TDH��H��u�H�4$I�L$HcFL�<H��u%J�9�)1�f�E�l$f�H�b���f�H��H��L���a��H�����G����H���S����H���l����H���O����H���p���fD��ATUSH��H��H�odH�%(H�D$1�H�GH��tH������H���K��H���stH�P;	�H�$����H�3H��A�H��A����H���h��L�cH�kM��tL���S���L������H�<$�M��H�D$dH+%(uIH��[]A\�@H��:	�H�$�k��H�3H��A�H��A����H�������|��������H���i����H���m����H���r����H���v���ff.���UH�oH�GH��tH�����H��]���@]�ff.���AVAUATUSH��H�� L�'H�odH�%(H�D$1�A��$st{L�wH��L�l$��L��H��L�����H�T$L��L��H��Q���H�D$��H�|$����H�|$����H�D$dH+%(��H�� []A\A]A^�fDH��L�d$��L��E1��;H�01�H�D$�u�H�D$H��H�D$�����t>H���v��L�l$��tL��tgH�;H�MQL��L���H�D$���H���L�l$H�t$�H��IL������H�t$�H��IL������DH�t$�H��IL�����{���������H�������H�������H���������AWAVAUATI��UH��SH���L�oL��dH�%(H��$�1�L�������t/H��$�dH+%(�2H���[]A\A]A^A_�fDH�D$H�\$H������L��L�����H�����H�EL��H�$����L�|$0H�ƺ
L�����D�h��$�D������H�D$(I��E���^L�l$(L�t$ H�<$���H��OL��L��H�D$ �T��H�|$ ���H�|$(���L������t,L����1Ƀ����H�5�FH���m���1ɺH�5�FH���R��H�}H��L���H��NH�D$(����H�|$(���L������������	w
H�,M�4��
L��H�]�x��L��L��H�D$(�‰D$t�.��L��L��H�LNH��H�D$ �_��H�|$ ���H�|$(���H�E��rtqH�D$ L�����L��������tqL����������L���	������H�}L��L���H�k5	H�D$(����H�|$(�'��H�|$ ���H������H�|$������fDL�������u�1ɺH�5JDL�������@�H�5�FH�������}����H�t$ �
H��FL���_���I���f.�1ɺ
H�5lFL���������DH�HHc�$�H�H��uH�1��pxE�nf�P�t���f�H��L��H�T$�P��H�T$H�����1����H�������H���/����H���9����H���!����H�������H���!������H�>tUH�?H���J��H��]H�����fDÐfD��UH�?H��� ��H��]H�����@��H��H��H�pH��t%SH��H�P`H��tH�ƨ����H�H�S[�ÐfD��H��H��H�pH��t%SH��H�P`H��tH�ƨ���H�H�S[�ÐfD��USH��(H�wdH�%(H�D$1�H��tuH�� H��hH��H���4��H�����H�$1�H�D$H�CH��tH�S`H��tH���H�����H��H�D$dH+%(u(H��(H��[]���H�D$dH+%(uH��([]��\��ff.����H�~01�f��u�H�FH�NH�B�H�
Ðf���AWI��AVI��H��I��AUATUSH��H���)��L9�vFH��A�I�p��H��L������PH�ǁ��_��q*��p����qu;�xD~5H��[]A\A]A^A_���J�L��H��L���������stqI��L9�w��fD��u�H�x�	u�H���	�	H�4C�����u�H��[]A\A]A^A_�f��x,~�H��[]A\A]A^A_�H�G0�x~�H��[]A\A]A^A_���0�0����`���f�H�I�v�P�H������AUATUH�� SH��H��H��(dH�%(H�D$1�L�d$�k��L��E1��;H�01�H�D$�=��H�D$H��H�D$������tnH���>��L�l$������t{H�;H�IL��L���H�D$���H�|$���H�|$���H�D$dH+%(uvH��([]A\A]�DL�l$H�t$�H��AL���z����H�t$�H�tAL���W���g���f�H�t$�H�LAL���7���G����}����H��������H������@��AWAVAUA��ATUSH��H��0L�� H���dH�%(H��$�1�����H��L���$����t0H��$�dH+%(��H���[]A\A]A^A_��L�����L��H�D$(���L��I�����L��D$����H��D$���H��I���m��H��H�D$���H��D$ ���H�L$(I��D$$H�9�w;r�	H9�tH��H�����������L;t$t}L�D$@L���
L�;L��L�D$����D�p��$�D�����E��L�D$H�D$8H����H��FH�L$8���L��H�T$0H�D$0�}��H�|$0����H�|$8���D�|$�D$ A9�ttH�D$0L�t$0L���5��1�E���ZA����H�5�=L���|��H�;H�T$8L��H�FH�D$8���H�|$8�A��H�|$0�7���D$�L$$9���������	��L�L�|$@�
L�t$8L��L�D$���L��L��H�D$8�‰�$��:��H�|$H�T$0L��H�VE���H�D$0�g��H�|$0���H�|$8���H���r��E�������H��$�dH+%(�wH���L��H��[]A\A]A^A_�����H���������H�iC�4�������H�5�<L���,������H�xHc�$�H�H����H��pxD�q1�f�H���fDL��L�t$0�;��L��D$�o��H��A���$��H��D$�X��L��H�D$0�D$�3���T$;T$�����H�t$0�FD;|$���FI��E������t�H�^9L�����L�L$0�H�I=L��L������H�D$0�@��uW1ɺH�5q:L�����H�;H�T$8L��H�#+	���H�D$8���H�|$8����H�|$0�����8�����t�H�;H�T$8L��H��*	H�D$8�S��뽐H�|$0�GH��D;|$� �����t��@�H�5V<L���|������H�5f<1ɺ	L���Z��H�t$0D;|$�����V�������f���f.�L��H�L$(H�T$�.���H�L$(H�T$H�����������H���e����H���c����H���i����H���i����H���y����H���Q���ff.���USH��H��H�PH��tH�H�CP�PH�kxH�CxH��tH���S����H�����H�kp1�ƃ�f���H�CpH��t%H������H��H��[]���f.�H��[]Ð���AWAVAUA��ATU��SH��H��L�gxdH�%(H��$�1�H�GxM��tL������L���:���L�d$L�;1ɺH�5�:L��I��Hǃ�H�D$���1ɺL��H�5z3H�$�g��L��L��L������H�<$�;��H�|$�1��E����@��tjH���H�l$�
L�+H�����H��L��H�D$�‰�$��J��L��L��H��AL��H�$�|��H�<$����H�|$���H�"(	�H�D$��H�3E1�E1�L���H��H���w��L�cxH�kxM��tL���b����L�����H�|$�[��H��$�dH+%(��H�Ĩ[]A\A]A^A_�f�H���L�l$�
L�;L������L��L��H�D$�‰�$��W��L��L��H�AL��H�$���H�<$����H�|$�������������H�������H�������H�������H�������H�������UH�oxH�GxH��tH���R���H��]���@]�ff.���H����@�����ff.����AVAUATUSH��0dH�%(H�D$(H����@��u$H�D$(dH+%(�H��0[]A\A]A^�H�l$L�/1ɺH�5�7L�d$H��H��H�D$���1ɺL��H�D$H�5�0���H��L���L�����H�|$�e��H�|$�[��H�3E1ɺ��A�H�
�5H�����H�H���L��L�hxI�EL�p8H�D$�Ժ��H�D$H��L��H�$A��H�<$���H������H���ռ����������H�������I���-���f���H��(Hc�H��dH�%(H�D$1�H�4$H�t$H���H��H�ƨ���H��H�$H��H�|$H�D$dH+%(uH��H��(��c����f���H��ATH��I��H���H��H�ƨ����I�$L��I�T$A\����H��ATH��I��H���H��H�ƨ�g��I�$L��I�T$A\����AT1�UH��SH��H��0H�H�~dH�%(H�D$(1�H�FH�$H�|$H=���tH)�H�P�H�HHH�H�F1�H=���tH)�H�p�H�PHH�H���H�T$H�|$L��L��H�L$H������H���H��H�T$L��H�ƨH�D$���H�$H��H�D$H��H�l$H��H�����H��t����H�TP�H�H�|$H����H��t����H�DG�H�H�3H�KH�SH�CH�D$(dH+%(u	H��0[]A\�証�����AWAVI��AUI��H��ATUH��S1�H��(dH�%(H�D$1�L�d$����L����軼��L��L�����L��M���!���H�����f�D$f��t^���L��������H��I�����L��H��I���H��������H��I�WI������L�������X���f9\$w�H�D$dH+%(uH��(L��[]A\A]A^A_�誻��f.���AWI��AVAUI��ATI��USH��(dH�%(H�D$1�L�t$H�l$L������H�����H��L���+��H���c���L���k�����f��t41�f���L���f���H��L��L���x���H�ƺ��L���(����f9�w�L���ض��H�D$dH+%(uH��(L��[]A\A]A^A_��Ѻ����H���9���@��AWAVAUATUSH��H��H�|$HL�t$PH�t$(L����T$GdH�%(H��$x1��D$XH�D$P����H��茻��H�D$��H�D$ H��u��H�D$H�D$H9D$ ���t$H�|$(�\���H��I�����f�D$Df��v�1�L���̺��H�(H�pH��$��
H��H�D$�{����
H�$tH�D$`H��H�D$�Z���Hc�$t��$�H�H�D��t}H�T$PL�l$XL��L��ZÉ��D���H�D$PHcPH�DP�M H�hHc�$�L�,H����L�A�,fD�MLc�$tH�}M���TH�D$PE1�fF�D-�X�|$G�D$F���D$DE1��L�l$X�D$@��A��Lt H�D$PA�L��L��H�
1�P�
�����L���荹��H�pH�|$�
H�(�G���H�|$�
H�$t�.���Hc�$t��$�H�H�l��tiH�D$PL��L��h������H�D$PHcPL�|PHc�$�H�H���,I׺,fA�Hc�$tI�H����1�fA�DH�D$P�hA�Lf;\$D��H�D$PA�L��L��H�
25�P�j����L����}��<�����E;D$@����A��Ct H�D$PA�L��L��H�
�/�P�Һ����L��D�{���Q���H�pH�|$�
H�(����H�|$�
H�$t��Hc�$t��$�H�H�l��tgH�D$PL��L��h�����H�D$PHcPH�LPHc�$�H�H���@Hѿ,f�9Hc�$tH�yH����H�D$P1�f�t�hfA9�t;H�D$PA�L��L��H�
4�P�;����L������k�������fDD��A�Cf;\$D�����@�|$F��H�D$ H��H;D$����H�D$PA�L��L��H�
�3�P������@H�t$H�H�T$0�.���H�T$0���@H�t$L��H�T$0����H�T$0���@H�t$H�H�L$8H�T$0���H�L$8H�T$0���f.�H�t$H��H�T$0農��H�T$0H������H�D$PA�L��L��H�
�-�P��������D$DL��p����5���1�L��H���(����D$FH�H9�4���H�KH9H�D$F�"���DH�t$XL���ó��H�L$HH�|$PH�����H��$xdH+%(uKH�D$HH�Ĉ[]A\A]A^A_��M�H�t$L��������H�t$L��H���ȱ���\���讴����H���&��f���ATUSH��H��pdH�%(H�D$h1�H�l$H�����H�\$H��t�CH�t$H���8���H�|$H��t�ot7H���ϲ��H��I���d���H�D$hdH+%(uH��pL��[]A\��H��P�������I�������I������f.���H��tH��Ðff.���AWAVAUATI��USH��H��L��L��H���dH�%(H��$�1�H���H�������L��L�d$@H��H���I��L��L�l$H�������L�C H��L��H�$�
H�l$ I��L�D$�ķ��L��H��H�D$ �‰�$��W���H�|$H��L��H��2���H�D$���H�|$�̷��H�|$ �·��L�C L��L��
L�D$�Y���L��H��H�D$ �‰�$����H�|$H��L��H�z2���H�D$����H�|$�a���H�|$ �W����
L��L��L�{ ��L��H��H�D$ �‰�$�膷��H��L���H�2L��H�D$���H�|$���H�|$ ��H�4$L��L�s �
莶��L��H��H�D$ �‰�$��!���H��L���H��1L��H�D$�R���H�|$蘶��H�|$ 莶��H�s H��A�A�H�
�)����ڳ��H���R���H��$�dH+%(uH���[]A\A]A^A_��H�����H�������H���
�����H��������H���*������AWAVAUATUSH��H��H�L$L�d$pH�l$0H�T$H�T$PL�l$(dH�%(H��$�1�H�D$PH�D$XH�D$`���H�D$h�����L�|$PL��L�s �
L���%���L��H��H�D$0�‰�$�踵��H��L���H�v0L��H�D$(���H�|$(�/���H�|$0�%���L�t$XL�C L��
L��L�D$跴��L��H��H�D$0�‰�$��J���H�|$H��L��H��/���H�D$(�y���H�|$(迴��H�|$0赴��H�D$`L�C 1�H=���tL)�H�P�H�pHH�
L��L�D$�1���L��H��H�D$0�‰�$��Ĵ��H�|$H��L��H��.���H�D$(��H�|$(�9���H�|$0�/���H�D$hL�{ 1�H=���tL)�H�P�H�pHH�
L��谳��L��H��H�D$0�‰�$��C���H��L���H�1.L��H�D$(�t���H�|$(躳��H�|$0谳��H�|$�H�D$L�s H����H�H��H��H�D$0H�D$8H���H������H��H�ƺ
H�D$0H�|$8L�����L��H��H�D$0�‰�$�菳��H��L���H��-L��H�D$(���H�|$(����H�|$0���L�s H��A�L��A�H�
]"����E���H��轫��H��$�dH+%(��H��[]A\A]A^A_�@HcD$H��H��L�s H�D$0H�D$8H���H�����H��H�ƺ
H�D$0H�|$8L������L��H��H�D$0�‰�$�薲��H��L���H��,L��H�D$(�ǻ��H�|$(�
���H�|$0�����Z����	�����H���+�����H���;�����H���K�����H���[�����H���k�����H���{������AWAVAUATUSH��H��L��H���H�L$L�d$PH�l$0H�T$L��L�l$(dH�%(H��$�1�H���H������L�C L��H��I�׺
L�D$���L��H��H�D$0�‰�$��s���H�|$H��L��H��+���H�D$(袺��H�|$(���H�|$0�ް��L�C L��L��
L�D$�u���L��H��H�D$0�‰�$�����H�|$H��L��H�V+���H�D$(�7���H�|$(�}���H�|$0�s���HcD$H��L��L�{ H�D$0H�D$8H���H����Dz��H��H�ƺ
H�D$0H�|$8L���گ��L��H��H�D$0�‰�$��m���H��L���H��*L��H�D$(螹��H�|$(���H�|$0�گ��HcD$H��L��L�{ H�D$0H�D$8H���H����.���H��H�ƺ
H�D$0H�|$8L���A���L��H��H�D$0�‰�$��ԯ��H��L���H�*L��H�D$(����H�|$(�K���H�|$0�A���H�s H��A�A�H�
q"���荬��H������H��$�dH+%(uH���[]A\A]A^A_������H��������H��������H�������H������f.���AVAUATUH��H��SH��H��pdH�%(H�D$h1��R�����t&H�D$hdH+%(��H��p[]A\A]A^�DH�L�d$L�l$ L��H���,H�H�D$H�D$H���H���螰��L�u H��H�ƺ
H�D$H�|$L��荲��L��L��L�l$�‰D$dH�D$�>���L��L���H��'L��H�D$�o���H�|$赭��H�|$諭��H��B ���|�����n��uYL�u 1ɺL��H�D$H�5� �v���L��L���H�&L��H�D$���H�|$�=���H�|$�3���H��B$�����������H�m 1ɺL��H�D$H�5[ ����L��L���H�V%H��H�D$艶��H�|$�Ϭ��H�|$�Ŭ���B�����u�L�u 1ɺL��H�D$H�5�訳��L��L���H�6%L��H�D$�)����-���@H�m 1ɺL��H�D$H�5N�]���L��L���H��$H��H�D$�޵���P���f�L�u 1ɺL��H�D$H�5T�
���L��L���H��$L��H�D$莵����������H��������H���.�����H���>�����H���N�����H���^�����H���n���ff.����AWAVA��AUI���ATUH��S��H��8dH�%(H�D$(1�I��L��胱��E����L��L��H����L�t$��L��L�} L���e�L�l$1ɺH�D$H�5|L������L��L���L��莴��H�|$�Ԫ��H�|$�ʪ��H�u L��A�A�H�
�������L��莣��L���ơ��H�D$(dH+%(u&H��8[]A\A]A^A_��L��L���Ť���4����k�����H���M���H���U�f���AWAVAUATI��UH���SH���dH�%(H��$�1�H�\$ H��H�\$�;���H��H��L���]��}��D$u
H�}0�D$L�l$PH�t$L���f���L�E0H�UH�uL��I��$��*��H�E8�@���SHcE�����E@������u^M�l$ L�t$@1ɺH�5bL��H�D$@�e���H�T$0L��L��H��!���H�D$0���H�|$0�*���H�|$@� ����ED������u^M�l$ L�t$@1ɺH�5UL��H�D$@���H�T$0L��L��H�D!���H�D$0�u���H�|$0軨��H�|$@豨��H�EH9E ��L�|$0�H�D$0L���D$8��H�UH9U �I��$1�L�t$@H�D$��f��X��H,�H�H�T$L��H�D$@H�D$HI��$�H���蛪��H�D$@L�l$8H�T$H�$H��t%H�D$0L�l$8A�L��H�
�L��P�/���H�L$p�4$�
H��H�$�V���H�$L��L��A��H�D$0�P�L���H�UH�E H��H)�H��H9�s<��f��f/��1����
�\��H,�H���%����L�l$8L��L��I�l$ ���L�l$@1ɺH�D$(H�5�L��H�D$@�/���H�L$(L��H���躰��H�|$@����H�|$(���H�|$0���H�\$�T$1�L��H���U���H�����H��$�dH+%(��H���[]A\A]A^A_�@M�l$ L�t$@1ɺH�5�L��H�D$@臭��H�T$0L��L��H����H�D$0���������M�l$ L�t$@1ɺH�54L��H�D$@�7���H�T$0L��L��H�����H�D$0趯���<����H�D$0L�|$0I��$H�D$8I��$�L��H����R���H��H�\$pH��M�l$ H��H�T$0H��H�ߺ
L�t$@H�D$8�0���H��L��H�D$@�‰�$����L��L�����H��L��H�D$0����H�|$0�Z���H�|$@�P������L�t$@I�|$ H��	���H�M8L��H�D$@�Ѯ��H�|$@�����w���������H���A���H������H���}���H���E���H���{���H������H���o���H���+���H��������AW�
AVAUI��ATUH��SH���wdH�%(H��$�1�L�t$P�F�GL�������#	��$����Q���H�$���UL�d$0L�t$H�u A�H��	L���L��A�H�D$0���H�|$0���H�} H��L��H�D	���H�D$0腭��H�|$0L�|$�ƣ��H�] 1ɺH�5L��H�D$0質��1ɺ
L��H�D$H�5�蔪��L��L�����H���!���H�|$�g���H�|$0�]���H�u L��A�A�H�
����詠���1�L��H�����L������L������H�<$����H��$�dH+%(��H�Ĩ[]A\A]A^A_�DI��H�HHc�	L�<H��u)L�Lc�$�K�?M��u51�A�\$fB�y�o���@H��L��H�5k	讚��H���f�H��L��蕚��L�$$H����w�����H���+���H���'���H���J���H���(���H���>��f.���AUATUSH��hdH�%(H�D$X1���u&H�D$XdH+%(��H��h[]A\A]��H�l$�
H��H���S���Hc�	�D$TH�L�dD��蹚��H�$E����H�k L�d$1ɺ	H�5�L��H�D$脨��H��L���H������H�|$�W���H��	�H�D$葚��H�s A�L��H��A����H������L�cH�kM��tL������L��茙��H�|$��H�<$������@�u1�H�5B�f�f�LPH��H��u�H�HHc�	L�,H��u8HcD$TL�L�,H��uGJ�)�)1�f�H�$D�bf�H�����H��L��H�5;	�~���H���f�H��L��H���b���H����H�����H���\���H���P���H���4�@��UH�oH��t"H�GH�����H��]�t���@]�ff.���AUATI��UL�oH��M��tH�GL��蘘���L���+���L���ӛ��f��u]A\A]��L��H�������EH��p�H����p]A\A]�8������AWAVAUI��ATUSH��H��L� dH�%(H�D$x1�L�d$@H�l$ L��L�t$���L��H��H�D$ �‰D$t�P���H��L��H��L��H�D$聨��H�|$L�d$L�|$轞��H�|$ 賞��L��H�D$�B���L��H�D$�1���H�t$�L��H���8���A�}���L��L���R���H�t$H�T$H��H�D$ ���H�t$ H�����L��葛��H�|$ �'���H�{ L��H��H�V���H�D$ 跧��H�|$ ���H�s L��H��H�lA�A����H�D$���H�|$�ǝ��H��诖��H�|$赝��H�|$諝��H�D$xdH+%(u6H�Ĉ[]A\A]A^A_�f�1ɺH�5�
L���z��������p�����H������������H������H������f����W��I��(\��(H��H��H��I��H�����W��H��H��H��I��H�����	��H��H��H��I���H����	�����H���WD�Gf���A�7��)�A���*��Y��H,�f��Hк�H9�HO�1�H��HH��Q)������*��Y��H,�f��L�H9�HO�1�H��HH��	��@��)ʹ��*��Y��H,�H�H9�HO�1�H��HH�	�Ðf.���AWAVAUATUH��H��SH���H�t$0H�T$ dH�%(H��$�1�����f��u.H��$�dH+%(�kH���[]A\A]A^A_�DH�1�H�u H��$A�A����H�L$H��$H��$�H��H�D$@�:���H��$�=����u�
�F�EH��$0H��H�D$誟���X��$t������H�D$XI�ą���	H���H�\$H�u A�H��$A����H��$�H��H��H�D$H訚��H��$諚��H�} H�L$XH��H������H��$�6���H��$�y���H�t$0H��HDŽ$�HDŽ$�HDŽ$����HDŽ$����HDŽ$�HDŽ$�HDŽ$���HDŽ$���H�D$pH�D$xHDŽ$�HDŽ$�肘��L�|$ L�t$pH��H�\$L��$�L��L��L���*���L��$�L��H��L������H���H��L��H����'���L��H��$�H��$�L�|$ �:���D��H��H�\$`�Hi�ų��D��H���H�� D�)�i�A)�螔��1�H���$���H��$��H��H�����H��$�1�H��H����L��$��H��L�x�ޗ��I��H��$D��H��H=���ID�L��$�L��I�@�O���1�H��L�u 街��H�0H�|$�
�?���H�t$H�|$HDŽ$�‰�$��˘��H�tH�L$L��H�D$hH�D$h���H��H�D$��H�|$h�6���H��$�)���1�H��L�u ����H�pH�|$�
踗��H�t$H�|$HDŽ$�‰�$��D���H�
�H�T$L��H�L$hH�L$����q���H�|$h跗��H��$誗���H��L�u 虖��H�0H�|$�
�7���H�t$H�|$HDŽ$�‰�$��×��H�
LH�T$L��H�L$hH�L$�����H�|$h�6���H��$�)����H��L�u ����H�pH�|$�
赖��H�t$H�|$HDŽ$�‰�$��A���H�
�H�T$L��H�L$hH�L$����n���H�|$h贖��H��$觖��H�|$L�u 1ɺH�5�H�D$h蒝��H�L$H�T$L��H�����H��$����H��$�O���H�|$h�E���H���-���H�u H�|$H��A�A�L���H��$����H��$����L�t$ L����L���������PH��H��(\��(H��H��H��H��H��D���VA��H��H��H��H��H�������H��D	�H��H��H��L��H����	щ�$��4���L�����)����PH��H��(\��(H��H��H��H��H��D���VA��H��H��H��H��H�������H��D	�H��H��H��L��H����	щ�$������f�L���*��^��D$(���L�����+���A���C�E����f��b�"��f��f�E1��*����\D$(�A*��^��L$�|$�D$8�L��L���D$A���^D$���f��L$(�A*�L��H�$��D$�YD$8�X�f(��L$ ���L��L���D$�^D$�C����D$ L��H�$���fD9��q���H�|$�nj��H�|$H轌��H�D$XD�hA��D���Ȍ��H��$�H��E����H�} H�T$L���H��H��$�/���H��$�r���H�t$01�H�����H��$��Q���H�|$X�G���H�|$@�-����z�����=��Y|$(�|$8f��b�������f��E1��*��\�f��A*��^��T$�|$�D$ f��T$L��L��f(��^D$����YT$ L��H���D$8��$��X��D$(�=�A��f�L��L���A*��D$�^D$����D$(L��H�$���fD9��w���E1�f���A*��d$DL��L���D$A���^D$�U���f�����A*�L��H�$��D$�YD$ �X�f(��\$(��L��L���D$�^D$�����D$(L��H�$��Y�fD9��o������f.��D$(L��H���/��gL��H���������D$8L��H����H��L��H��fHn����� L��H���\D$8����9���f.��g1�H���f�fA�LTH��H��u�Hc�$tI�|$L�,H��um1�A�\$fC�t,�����f1�H�
=�f�f�TCH��H��
u�H�t$XH�KHcFL�4H��u6J�1�)1�f�D�kf�H����H�t$L���{����f�H��H��L���a���H����G�����H���
����H��������H�������H�������H�������H�������H�������H���&����H���)����H���2����H���2����H���8����H��������H������ff.���H���ATUH��SH��H�H��pH�G H��8H�G(H��0�GH�GH�GH�G0H�:H�}8H��tH��PH�5��H��@H��to1�1�L�L=��H���Ԗ��H��{t[]A\�fDH�5Q�H����H��H�SH�KH��H�=��L�
=��PL��B���֘��XZ[]A\���I���t%H�F�H�=��H�0�7���H�5���d���L�%�L���)�����t���j��L��H��衍���������t%H���H�=��H�0�׌��H�5���;���L�%��L���ɉ����t��j��L��H����A������I�������ATUH��H��dH�%(H�D$1�H�<$H��tH��P�H�Ʉ��H��H��H��I������L������H�<$H��tH��PH�D$dH+%(uH��L��]A\��q�����H������@��UH��AWAVAUATSH��HL�w(dH�%(H�E�1�M���H���L�m��n���L��L��H��I��H�E��x�H�5;;��L��E1�考��H�;L�u��d���H��L���و��H�0H�{0����H�}�H��tH��PL�{(L�u��qr��H��L���VV��L��I��H�E�H�L��P(H�M�I��H���M��H�H��PH�}�L�}�H��tH��PI�L���PH�{8L�{8H��tH��PI�L���PH�E�dH+%(ucI�$L��H�@H�e�[A\A]A^A_]���H�E�dH+%(u1H�e�[A\A]A^A_]�f�H�5):��L��L�u�H�E��e�������ˆ����H�������H���5���������H�����ff.���UH��AWAVAUATSH��H���H�HdH�%(H�E�1�H��tH�H�CH�PH�{@H��tH�H�C@�PH�{8ƃ�ƃ�H��t
H��P��u'1�H�U�dH+%(�`H�e�[A\A]A^A_]�H�s8L�e�E1�L��H��P H�E��xuL�u�H�=��L�-����L��L���^T��L�5�8��I��L��H�� ���L���"���M���r����x��H��L��L������"T��H��(���I��H�L��H�5�1ɺL�x H�E��C���L��L��A��H�}�A������E���mI�EH�5�L��1ɺL�x H�E����L��L��A��H�}�A���ډ��E����I�EL��P�����H�����L��H��H��H�E��x��L��L��E1��/���H�;L�m�����H��L��舅��H�}�I��H��tH��PI�E�P���qH�=?�L�58��2H�����L����R��H�����H��H��p���H����H�L��P0H�}��G���q���H���T���L�;1ɺ
L��H�5�L�u�H�E��ߏ��1ɺL��H�5��H�E����L��L��L���N���H�}�蕈��H�}�茈��L�31ɺH�5��L��H�E��{���L��L���L������H�}��O���H����H�E�芁��H�3E1�E1�L���H��I������L�cpL�kpM��tL������L��茀��H�}���H�����H��PH�� ���H��H����������H����������H��R��������L�����I�L���PH�{@L�{@H��tH��P�|��H�����H���1Q��I��H��0���H��8���H�����H��I�EL��PL��8���L�=�L��1�L���I�L�����H�@(H�E�H���������H�����H�����L���H�}�����������������>I�E�L��L��1�H�@(H�E�H������ō��H��P���L��L��H�����H��H�������H��P����@���J�����VH��X���D�8H�����L���|��H�}��S���L��1ɺL��8���ƃ�H�5��HDžP���I�L������H�@(H�E�H���������H������H�����L���H�}������������������H��P���H��t*H��P(A9���H��P���H��tH��Pf��kk��H�����H���LO��I��H��@���H��P���H�����H��I�L���P(L��P���M������I�EL��PH��P���L��H���H��tH��PI�EL��PI�U����L��RI�L���PH��8���H��tH��PH��0���H��tH��PL��(���M�����������L��L��L�m�H�E��Y{���%���@H����L���l�������苄��L�31ɺL��H�5��H�E��z���L��L���L������H�}��N���H������Z����H���H��X���D�8����H�����L���z��H�}������c���I�E�L��1�H�5��H�@(H�E�H���������H��p���L��L��H�����H��H��������H�5��H���WH��H��x���H��p���L�
�1��AVH�����L��7��蘍��H�����L���	z��H�}��`���XZ���f�I�EL��P1��u����L��RH�{HL�kHH��t.H��PI�EL��P���H���L���������I�U����H��p���H�5��1ɺH��H�����HDžp����ω��H��8���H�����H��P(��tVH�E�L��H�����H��H������I�EH��I��P(H�E��x�TL��L���	y��ƃ�H��p����V������H�E�ƃ�H������H�5��H���lH������1�L�_0��1����H��P���D��L��H��P0H�5f�H���H��H�M�H�U�L�
"0��AVH������L�6�����L��L��A���_x��A[H�E�A_E�����P������A�A���H�RfD�����L�xH��fD�����L�l8����
��I��0M9�tGI��P��
u�H�xH�5*��y�����I�G�@��tt����w�I�G�f�����������f��f������f��uf������^H�E��(�z���H�5=�H���?H�}�L��蠄���Y���I�Gf�f������@���H�xH�5���Wx�����(���L��H�E��~��I�G�x�H�}�D�GE��t�Gf������T�������H�s�H�=��}��H�5����I��P���H�E�H������L��D�(�v��E��������������������H���H�=?�H�0�~��H�50������d�����H�]�H�=�H�0�N~��H�5���c����z���.�����H�'�H�=��H�0�~��H�5�����I�GL��H�0�|������L�-��L���z�����L����[��L��H����m~���3���L�-��L����z�����M����[��L��H����=~���4���fǃ�ƃ�fDž����������f�������L�-]�L���mz�����'����0[��L��H�F���}������f�����w	fDž�����H�E����H���9����H���t���������H���h����H�������H���;����H�������H�������H�������H��������H���i����H���k����H���v����H���x����H�������H�������H���b����H�������H��������H���m����H���C����H���R����H���8����H���Q��fD��AWAVAUATUSH��H���H�PdH�%(H��$�1�H��tH�H�CP�PH�{Hƃ�H���BH��P���4H�sHH��$�ƃH�$H��H��P H��$��x�BE1�L�%+��H�<$L��L�l$H�?s��H�D$PL��H�D$H��I�E�PH�=p�L�5i��SI�EH��$�L��L��H��H��$��x��L��H����r��L�t$PH�D$XM��tZI�H�5n�H��1ɺL�x(HDŽ$�����H��L��A��H��$�������{��L�|$XM��t	I�L���PH�|$PH��tH��PI�EL��P1�H��$�dH+%(�H���[]A\A]A^A_�DL��H��L��$�HDŽ$��	r��L�t$PL�|$XM���*����q�����K{��H����x��H����x��H��H��H�D$�x��L�t$XM���iI�L���PH�{PL�sPH��tH��PL�l$X�{o��H��M��t)I�EL��H��H��$��x��L��H���Zq��H�|$XH��tH��PH�|$PL�l$HH��tH��PM��t
I�EL��P�����@L��$��n��H��M�������I�$H��$�L��H��H��$��xt=L�%�(��H��E1�L����p���s���H�,��L����v������L�%I(��H��L��$�HDŽ$�L���zp���%���DL��$�L��H��HDŽ$��Qp��L�l$`M�����I�EH�<$L��PL��$�L�=��H��1�L���	I�H�@(HDŽ$�H�D$�l���H�D$H��L����H��$�A���?y��H��$�H��tH��PI�EE��tfL�p(L���	1�H��$�HDŽ$�I��H��H�D$����H�<$L��L��A��H��$��xtFH�<$L���jo��H��$��x��I�EL��P��fDH�|$PH�����������DH�=X�L��$���M��t�I�H�;�L��H��H��$��xtL��H����n���o���L��$�L��H��HDŽ$�L�|$(�n��H�<$L��L�|$h�n��H��$��x��M���=����f��H�t$(H��H��H��H��$��x�L��H��E1��en��I�EL�l$pH�|$xL��P(L�l$xH��$�H��H�D$0E�uM�}HDŽ$��#u��E����A�F�H�\$ L�5��L��I�D�L�-3�I���6fDH�;�
��L��wA��H��襀�����H��L9��(H�;�
��L��wA��H���%y����u�I�ߋ��H�\$ I�7H��NHDŽ$�)��z��H��$�H��$�H��$��v��H��$�H�<$HDŽ$�H��$��5t��H��$��v��H�|$H��$���s��H��$��G�������I��
�������	�2����ƃ�fDH��$��v��H�D$x�(uH�5Y�H����H�|$xL����y��H�|$pH��tH��PH�|$hH��tH��PL�l$`M����������L��H��L��$�HDŽ$��Al������@L�=
�H���L���@m����t.�j��H�t$(H��H��H��H��$��xtqL��H����k��H��$��G������H���L����l������ƃ���DI�ߋ{�H�\$ �
���DH�\$ �f���fDL��$�L��H��HDŽ$��ik��L��$�M���j���H��$�L��H�D$8H��I�E�PL��$�M��tqI�H�|$1ɺL�5��L�D$ H�@(L��HDŽ$�H�D$�i{��H�t$H�|$ H�D$�Є���H��$��3t��H��$�H��tH��PI�EL��P�����H���H�5���k��������H��$��G�������H���H�5���k���������H��$��G�Y���I�EL��L�4$�1�H�@(L��HDŽ$�H�D$�z��H�D$L��L��H���H��$��xtRH��L���i��H��$��Ms��������v��H�=��H�0��q��H�5x��#���H��$��G���H��$�L��H��D�0�i��H��$���r��H��$���r��E�������L��$�H�|$L�5O�1�L���I�L�D$ H�@(HDŽ$�H�D$�y��H�t$H�|$ H�D$�Є��@���I�EL��L�4$�1�H�@(L��HDŽ$�H�D$�ay��H�D$L��L��H���H��$��x����H��$�L��H��D�0�h��H��$��r��H��$��q��E��H�9�H��H�5(�HDŽ$�HD��5}��H��$�H��H��$��q��H��$�H�<$HDŽ$�H���5o��H��$��q���P���H����H�=@��;n�����H���
H�5���i�����(���H��$��G���H���H�5����h���������H��$��G����H���	H�5���h������H�t$(L�|$1�H�L���P@H����p��H��$�L��HDŽ$�H���Kn��H��$��p���q����k��H���H�5���?h��������H����d��H�t$(H��H��H��H��$��xt)L��H����f��HDŽ$�H��$��I������L��$�L��H��HDŽ$��f��L��$�M��t�H�|$L�l$XHDŽ$��}m��I�H�T$0L��H��P(H��$��xtL��H���Sf��H��$��o���k���H��$�L�|$H�0L����l��L��H���f��L��L�<$H�3L���k��H���L���P��H��$��Po��H����xt�H�|$XtH�;��p��H��L���(z��L�t$X��yr��H��M��t0I�L�l$XL��H��H��$��x��L��H��E1��e��H��H��L��$��.���I��H���c2��I�E�@�������������H���H���B�Ɖ��y��H���HcPH�H�LI�ULcjM��uDB�i �h���L��H��L��$�HDŽ$���d���\���H��$��G���O�D-H�rH��L���9f��H��H������H��������H��釾����H��鈾����H������H���Q�����H���d�����H��醾����H��L�l$X������H��������H���}�����H���ž����H�������H���ľ����H���־����H���
�����H��L�l$X�t�����H��L�l$X鉽����H��鐾����H��L�l$X�b����@��UH��S��H��8dH�%(H�D$(1��4$���D$�D$ ���� t�E`�D$ H�E@H�]0H��(H9����$�C�|$�u/�D$ H��(�C�H�]0H�D$(dH+%(��H��8[]�DH�t$H�{��r��H�U0�L$ �C�$�D$H��(�K �D$ H�U0��t�H�|$�D$�r���f.�H�wPH�|$��l���D$�0����H��H���u��D$��f����H���e����ff.����AUATUSH��H��(H�0dH�%(H�D$1�H9{t?H�C8H�SHH��H9��D�e�A����A�� u=H9�tCH�G؀�H�C0��H�D$dH+%(�H��([]A\A]���U��S`H9�u����c��H�CHH�x�H�P�H�SHH������H�{8H�C@H���H�C0t�Ƈ�H�D$dH+%(��H���|@I��L���u���}�L��u|H�{P�#g��L���{q��A�� H�{0H�C8�����T���@H�j�D���H���A�����f��G�H�D$dH+%(u%H�� H��([]A\A]�q��f�H�u��{����Be����H���̻��fD��AUATUSH��H��8dH�%(H�D$(1��Z���H���r�������I��H�$L���rg�����f���f���'1ɺH�5q�L���p��H�+L�d$1ɺH�5`�L��H�D$�p��L��L���H���s��H�|$L�l$�Xi��H�+1ɺH�5/�L��H�D$�Fp��1ɺL��H�D$H�52��'p��L��L���H���r��H�|$�h��H�|$��h��H�<$��h��L���s��L��H��0�i��L���o��H�߾�k���H�$��H�D$�a��H�3E1�E1�L���H��H���yh��L�cpH�kpM��tL���da���L���`��H�|$�]h�����uƃ�H�D$(dH+%(��H��8[]A\A]�fDL�d$H�+1ɺ
H�5B�L��L�l$H�D$�o��1ɺL��H�D$H�5����n��L��L���H���zq��H�|$�g��H�|$�g�������1ɺH�5Q�L���n����D1ɺH�5>�L���n�������b����H���$�����H��������H���'�����H���+�����H���1���@��AWAVAUATUH��SH��dH�%(H��$�1��G L�d$ L�l$L���q��L��H��0� g��L���m��L�u1ɺH�5��L��H�D$ ��m��1ɺL��H�D$H�5���m��L��L���L���3p��H�|$�yf��H�|$ �of��H�EL��hL���e��f����L����
H�\$pH���L��$L��L�D$��e��H�t$�
H�߉�$��e��L����$��>e��f�H�t$0�H��H�t$�*��Y���o��Hc�$�Hc�$��D$dH�L�t
I�D����^��E��H�t$H�D$��H�}L��L���H���H�D$ �2o��H�|$ �xe��H�|$�ne��H�G��H�D$ �^��H�uE1�A�L���H��I���(e��L�ehL�mhM��tL���^���L���]��H�|$ �e��H��$�dH+%(�H�ĘH��[]A\A]A^A_���@�r1�H�=���
�f�f�LPH��H��u�H�HHcD$dH�H��ujH�� f�8H�HHc�$�H�H���}H�� f�0H�HHc�$�H�H��uDH��)1�f�H�T$D�rf�H���@H��H�T$�C\��H�T$H���|���fDH��H��L���"\��H���DH��H��H�T$�\��H�T$H���f�����^����H�������H�������H�������H�����fD��ATI��USH��H�� dH�%(H�D$H���H��h�=d��L���Ed��H���H��H��H�$H�D$H�ƨ�e��H��L���P]��H�D$dH+%(uH�� L��[]A\��^����H���u����f���AWAVAUATUSH��8dH�%(H��$(1�H���u.H��$(dH+%(�
H��8[]A\A]A^A_�DH��$�L�'1�H���H��H�5�HDŽ$��i��H��$�1ɺI��H��H�5j�HDŽ$�H�D$�Ni��H��L�����L����k��H��$��b��H��$��b��H���H�uA�H��$�H��$�A�H�ٺ��H��H�D$@��a��H��$���a��H�D$XH�D$XH��H�D$ �M_��H�D$`H�D$`H��H�D$(�2_��H�D$hH�D$hH��H�D$0�_��H�D$pH�D$pH��H�D$8�^��L���M������M�|$L���b��H�|$H�ƺ
��`��L����$$��a��H�ƺ
L���`��Hc�$$��$�H�L�|D����Y��H��$�E����H�|$h��`��H��$�H��HDŽ$�H�D$h�H^��H��$��`��L�m1ɺ	L��H��HDŽ$��g��H�L$0H��L����j��H��$��W`��A�t$8H�|$�
��d��D�h��$�D���?Y��H��$�I��E����H�|$p�`��H��$�H��HDŽ$�H�D$p�]��H��$���_��H�}H�L$8H��H�@����H��$��ni��H��$��_��H�uH��A�A�H�
������\��H���uX��H�|$�kX��H�|$�aX��M�$$M����I�D$D�pA��D���_X��H��$�I��E���kH�|$X�1_��H��$�H��HDŽ$�H�D$X�\��H��$��_��L�m1ɺH�5W�H��HDŽ$���e��H�L$ H��L����xh��H��$��^��1ɺ
H��H�5��L�mHDŽ$��e��L�|$1ɺH�5��HDŽ$�L���~e��H��L�����L���h��H��$��N^��H��$��A^��H��H�uA�H��$�H��$�A�H�ٺ��H��H�D$�]��H��$�L��$��]��I�t$0�
H��$�H��H�D$�]��I�t$(�
L�$$�h]��Hc�$$��$�H�L�tD���V��H��$�E���)H�|$`L�5���x]��H��$�H��HDŽ$�H�D$`�Z��H��$��J]��L�}1ɺ	L��H��HDŽ$��8d��H�L$(H��L�������f��H��$��]��H�}I�T$ 1�E1�H�5���l���H�uH�|$H��H���A�A����H��$��\��H��$��\��A�t$8H�}蟍�����W���L�l$x�L����b��A�D$8L��$�H�޺HDŽ$�L��f��$��\��H�}��a��H�}I�t$�ge��H�}L��L����]������L��$�1�L��L���[���L�}1ɺH��H�5y�HDŽ$��b��L��H�ھ��L���e��H��$���[��H�uH��A�A�H�
�����Y��H���T��H��$��[��H�}�[��H��$��v[��L���R�����f��t1���H�5\�f�f�LPH��H��
u�H�HHc�$�L�<H����J�9A�,fD�H�HHc�$$L�<H����H��$�J�9�)E1�f�8D�rfD�@�G����b1���H�
��f�fA�TEH��H��u�I�t$I�} HcFL�<H���zE1�E�ufG�T= �=�����#1�H�
���f�fA�TFH��H��u�Hc�$�I�~4L�<H���:1�E�nfC�D>4������s1�H�5K��f�f�LPH��H��u�H�HHc�$�H�H���#H��,f�0H�HHc�$$L�,H����J�)�)1�f�H��$�D�zf�H����H����<�H�|$p�Y��H�|$h�xY��H�|$`�nY��H�|$X�dY��H�|$@�JR�����DH�t$H��L���`Q��H���C����H��L��L���BQ��H�����f.�H��L���$Q���u����H�t$L���Q�����fDH�t$H��L����P��H���
����H��L��H�T$H��P��H�T$HH������S����H��������H���*�����H���@�����H���'�����H���(�����H���c�����H���d�����H���s�����H���t�����H��郫����H���@�����H��酫����H���P�����H���`���fD��ATUSH��H�0H�w�H�� H�O�H�W�H�G��G�H�G�H��NU��H�C8H���H�C@H�CHH�CPH�CXH�C`H�ChH�CpH�CxHǃ���T��1�1�ƃ�f���H���H���H���f���ǃ�Hǃ�Hǃ�Hǃ�ǃ�Hǃ�Hǃ�Hǃ�ǃ��?Hǃ�Hǃ�Hǃ��;T��H���Hǃ��$T��H��Hǃ�
T��H��Hǃ�S��H��Hǃ��S��ƃH���a��H��0��`��[]A\���H��鬩����I��镩���fD��ATUSH���P���H��0�\��H�� �\��H����U��H���U��H���U��H����U��H����U��H����@�H���H���H���H9�t	H���M��H����aU��H�kxH��tH���@N���H����M��H�kpH��tH���"N���H���M��H�khH��tH���N���H���M��H�{PH��tH��PH�{HH��tH��PH�{@H��tH��PH�{8H��tH��PH�{0��T��H�{(H��tH��PH�{H��t"H�Hx��ouH�[]A\H�@���[]A\���H������fD��AW�
AVI��AUI��ATUH�o(SH��H��(dH�%(H�D$H�H�GH�GH�w H�H�G1�H���H�H�C0�@�OM��H�S0H�C(��H������H��L�$�-M��H���I�$L�cPL�cpL�cxH�C@L��H�SHH�C`H�ShH�C8H�CX�v^��ǃ�H��L��L���L���H���L��L���L���L���Hǃ��i����0�L��A������1�1�H��I���5O��L���L��L���R��1�H���1�Hǃf���Q��L�t$1�L���R��L��L���sN��L���;K��H���H��t
H�H�R��DH���H���H��tH�Hx��ot)L��H�D$dH+%(uH��([]A\A]A^A_�H��P���{M����I��鱧����H���ԧ����I���ߧ����I���g�����I�������I���Ƨ����I���Ƨ����H�D$锧����H���Z����ff.����ATUSH��H��dH�%(H�D$H���H�$H��tbH�H�R��DH���H��tHǃ�H�Hx��o�MH�,$H��t#H�EH�x�H���[��H�EHh��m�H���I��H���H��tH�Hx��o��H����+���H���H��tH���J���H���I��H�{x��W��H�{(�(�H�kH��tQH�}8��P��L�e0M��tL���ES���L���XI��H�}H��tH�u(H)��CI��H����G���HH���.I��H�kH��teH���}I��H�D$dH+%(ufH��H��[]A\�H���H��P����DH�EH��P����H��P���DH�D$dH+%(u	H��[]A\��"K����H���H���fD��AWAVAUATUSH��H��H�XdH�%(H��$�1�H��t
�R��H��u2H��$�dH+%(��H�ĸ[]A\A]A^A_�f�H��$�L�#1ɺH�5��H��L��$�HDŽ$��kV��1ɺL��H�5`�HDŽ$��IV��H��L���L����X��H��$��O��H��$��O��H�3H���H���A�A�H��$�H�D$pH��H�D$(��N��H��$���N��H�CXH�D$PH�D$XH��H�D$H�D$`H�D$h��P��H�D$ H�$H�D$H���z��fD��xu-I�|$�O���Ao�$�H�D$�Ao�$�)T$P)\$`L��螔��L��$ H�ƺ
L���H��H�S0��$�H�HcRL�tD���G��H�D$8E���jL�31ɺH��H�5<�HDŽ$���T��H�L$8H��L������`W��H��$��M��L�31ɺH�5��H��HDŽ$��T��1ɺL��H�5��HDŽ$��lT��H��L���L���V��H��$��<M��H��$��/M��H�3H���H�ŮA�A�L��H��$���L��H��$���L��H�t$�
L����F��D�p	��$�D����E��H�D$@I��E����H�sH���!H�S`H���H�ƨH�|$P�3U��H�sI��I��H��tH�S`H��tH�ƨH�|$`��N��L�L���
L��L�t$HL�D$�K��L��H��HDŽ$��‰�$��L��H�|$H��L��H�K����H�D$H�U��H�|$H�L��H��$��K��L��
L��L��L�D$�K��L��H��HDŽ$��‰�$��L��H�|$H��L��H������H�D$H�LU��H�|$H�K��H��$��K��H�;H�L$@H��H������H��$��U��H��$��TK��H�3���H��A�A�H�
���H��H���D��H�|$@�K��L���D��H�|$8�
K��H�$H�$H9D$ �iH�4$H�|$�;V��I�ċ@��u�t���I�t$H���oM��H���K��H��$�H�D$�N��H���M���AoD$@�AoL$P)D$P)L$`�Z���E1�E1�����D�e1���H�5��f�f�LPH��H��u�H�s0H�H(HcFL�<H����J�9A�.fD�H�HHc�$�L�<H����H�T$8J�9�)1�f�0D�rf�x����D�#1���H�#�f�fA�LWH��H��u�Hc�$�I�OH�H��uoH��)1�f�E�wf�H����@H�|$(�vB������H��L��L���A��H���U���f.�H��H��L���qA��H���
���f�H��L��H�T$�PA��H�T$H���t����.D����H���ȟ����H���ޟ����H��������H�������H���ϟ����H���П����H��������H�������H��������H���ɟ����H�����f.���ATUH��H������H�}(H��tH�H�E(�PH�}8H��tH�H�E8�PH�}@H��tH�H�E@�PL�ehH�EhM��tL���A���L���@��H����E���E H���ڂ��H�����H��H��]A\����f���AWAVAUATI��UH��SH��H���H�w�L$L�t$`L��dH�%(H��$�1��O��H�CL��hL���E����tL����E��H�sH��t2H�S`H��t)H�ƨH���O�����tƃ��E�1�1����u�H9��tG���uH���H��H9��Jƃ�H�����H��H�����~�����H�l$@t!A�f���H�l$@fD�����L�kP��J��H��M��t-I�EL��H��H�D$@�x��H�5��H��E1��=��H�;L�l$@��G��H��H���iB��H�|$@I��H��tH��PI�ED�@E���5��tmL�;1ɺH��H�5��L�l$ H�D$@�M��1ɺL��H�D$ H�5��L��H��L���L���O��H�|$ ��E��H�|$@�E��1�H���ew��H����x��tCL�+1ɺH��H�D$@H�5/��L��H���L��H����O��H�|$@�dE��H�{H�T$E1�1�H�5G���h������u���tH����r����@H���J���VH���R��������L�;1ɺH��H�5f�L�l$ H�D$@��K��1ɺL��H�D$ H�5u��K��H��L���L���KN��H�|$ �D��H�|$@�D��H�3E1�E1�H��L���H��H�D$ �RD��H�|$ �XD��H�L��H�xxH��P8H���0=��H�{E1�E1������1�L���>��H��L���L��H��$�dH+%(��H���[]A\A]A^A_��H�51�H��L�l$PH�D$P�k:���U���fDL�{@M����H�;�;E��H��H�s@�N��L�{@���F��H��M��t1I�H�l$@L��H��H�D$@�x�jH�5��H��E1��9��H�;L�|$@��D��H��H���P?��H�8H�|$�S>��H�|$@H��tH��PH�|$D�OE�����C���S����L�;1ɺH��H�D$@H�5I���I��L��H���L���{L��H�|$@�B�����@L�;1ɺ	H��H�5I�L�l$ H�D$@�I��1ɺL��H�D$ H�5���I��H��L���L���L��H�|$ �UB��H�|$@�KB��H�3E1�E1�H���L���H��H�D$ �B��H�|$ �B��H�H��H�xxH��P8���I�<$�G�������H���H�5e��9�������I�$HcB������H�|BH�5c���n9���������H�D$L�|$L���0?��H���P��
������I�4$L����>��H�3H�΢E1�E1�H�L$ ���H��H�D$ �1A��H�|$ �7A��H�L��H�xxH��P8H���:��H�|$�A������H�3H�v�E1�E1�H�L$ ���H��H�D$ ��@��H�|$ ��@��H�H��H�xxH��P8�~���fDH���1�H�ߺ�x������DL�;1ɺH��H�5�L�l$ H�D$@�G��1ɺL��H�D$ H�5u��jG��H��L���L���I��H�|$ L����6@��H�|$@�,@��H�;L��H��H������H�D$@�I��H�|$@�@��H�3E1�E1�H�
c����L��H�L$@H����?��H�|$@��?��H�;L��H��H�4����H�D$@�eI��H�|$@�?��H�3E1�E1�H�
�����H���<��H�L��H�xxH��P8H���f8��L���^8���)���f�L�|$H���H���L���I��H���L���U�L��H��I���;���D$1ɺH���o��H�5p�A�D$���AD$fA�D$(L�#H�D$@��E��L��H���L���~H��H�|$@L�l$ �>��L�#1ɺH�5�H��H�D$@�E��1ɺL��H�D$ H�5���E��H��L���L���H��H�|$ �a>��H�|$@�W>��H�3E1�E1�H���L���H��H�D$ �">��H�|$ �(>��H���7��H�|$�>��L���F����f�H�5I�H��L�|$PH�D$P�4�����fD��.A���q���H�x�
H�5J��t5����tN1ɺH�59�L���D���-���H�xH�5&��E5�����	���1ɺH�5�L���wD�����H���P�����^8����H���ʔ����H���ؔ����H���ٔ����H���ٔ����H�������H���˔����H��鵔����H��驔����H��鑔����H���Ԕ����H��鼔����H���ɔ����H��齔����H���w�����H���_�����H���S�����H���=�����H���[�����H���E�����H���\�����H���Ɠ����H���ē����H���,�����H�������H��� �����H���ۓ��fD��AWAVAUATUSH��xH�4$dH�%(H�D$hH��@���v� �D$H��I�������ƅ�t
�����H�D$H�|$�99���@H�uPH����H�L�l$PL��P0H�|$�k;��H�D$PL��H�D$PH�D$��8��H�|$P�F;��H�|$�����W��)�H�I�4$�N)ȉ����t2����)�L�NHc�A�ȉ�H�|GL���eD�����
������O���H��臽������H�uPL�t$(L��H��P0H�|$�:��H�D$(L��H�D$(H�D$�88��H�|$(�:��H�|$����Gt������1��@���@H�D$hdH+%(��H��x[]A\A]A^A_�D�������D$ƅ��i����q���DH��H�5����1����tƅ�I�4$H�|$�N�W����f�H�|$��9��H�EH�4$L��H�x���|$�J���H�D$hdH+%(��H��xH��[]A\A]A^A_���L�}P�.��H��M��t1I�L�l$PL��L��H�D$P�x��H�5��L��E1���/��I��	L��1�H�5��H�\$0L�|$ L�h(H�D$(�@��L��L��H��A��H�D$0�x��E1�H�59�H��L�t$P�|/��H�|$(��8��I�1�L��H��P@H�|$�8��H�D$0H��H�D$0H�D$�?6��H�|$0�8��I�L���PI�L���PH�|$�G����fDH�5��L��L�|$`H�D$`��.������fDH�=�L�t$@taM���=���I�L�l$PH��L��L��H�D$P�xtH�5W�L���.������H�5C�L��L�t$`H�D$`�}.�����H�-��H�=���4�����2����H���ɏ����H���ۏ����H�������H��鷏������UH��AWI��AVI��AUI��ATM��SH��H��H������H�� ���L��x���dH�%(H�E�H�H��@����@������H�H�� ���H�FH���H��X����>��H���H��hH������H��H�������O5�����7
H��0���H�X���H������L��H��H���H��(���H����>?��Hc�����H��`���H��h���H��H��=�L�4�HDž����HDž���HDž���L������H����	L���/��L��N�40H������H�xL������H���"
I9�tH�Q�1��R1��H������L�����H���M����E1�E1������1�L���O0��H������H������L��H��H�����-��H������H������H��H��P�����4��f����H��h���L��@����
L������L���5��H��`���L��
�E��5��H�߉�4����4���f�L��p����*��Y�L���?��HcM�Hc�4���������H�H�\
H��.��H�������
H������H�������H�����H�x H�/�H������s>��H������4��H�����4��H������E1�1�H�UH�5��H����X��H�)�H�s E1�A�H�����L��������H����L��H��H��8����84��H������<4����	�	����������H��P���I���L��H������H�L�������DBL��Hc\�H������HDž���f������L����)4��E1�E1������1�L��L���1.��H�����H�H��H��H����3��H��x���H9���H������t	H����
H�������;���G8��H����9��H�Ǿ�R.��H��x�����`���E1���4���H������H��p���H��@���H������H��A�D��L��H������H��x���Dž����A�H���p����P��I�7X��ZD)�;^�…ɉ������� ˆ�����������H������H��tH��PH������H�@ ��r�<H�������-+����uH��������<������L����-��f�f���H*�P����Y�������f/��
�5ŝ�X��������H,�H������H�۸HN��*�����`f���H*�0����Y
��f/��������X������H,�L��X���1�L��I)��0��L�� ���1�L��L�8�0��H�ھL��H�I)�L�p�0��H��H����L��I�T�H��f0��1�L��I���Y0��H�@�L��I�F�D0���L��I���40��H��L��I��!0��1�L��I���0��H�H�L��H�H��H��I�F�/��1�L��I����/��H��L��I���/���L��I����/��H�@L��L��I�F��*��H�������1�L������L����'��H�������:�����+H��X���1�L��L�4X�k/��L�� ���1�L��L�8�W/��H�ھL��H�I)�L�p�=/��H��H���L��I�T7��H��!/��1�L��I���/��H�@�L��I�F�.���L��I����.��H��L��I���.��1�L��I����.��HX�L��H��I�^�.��1�L��H���.��H��L��H��.���L��H���.��H�@L��L��H�C�)��H�������1�L���݃��L���&��L���=&��H��8����1(��H������H�����H��tH)��'��H��@����7��H�E�dH+%(��H�e�[A\A]A^A_]��D��L��HDž����2����4���H������
L������H������H������M�v �:3��H������L��HDž����‰E���.��L��L���H���L��H�������8��H�������^.��H������R.��L�������
H��h���H������M�v ��-��H������L��HDž����‰E��p.��L��L���H��L��H�������7��H��������-��H�������-��E1�L���L������H���A�L��H������I�v �-��H�������-��I�F H������H�xxH��P8L���l&��������uH�������g-�����f�H��P���Hc�H��(���L��HcD��H�����H�����I���H���H�������/��H������H�����A���`���H�������4����,�������H��H������E1�1�jA�����L���`,��AYAZH��H�������HDž����E1�HDž������f�H�������+��������H��8���H)�X�������H������H��`���L��@����
L��L������H�[ ��+��L��L��HDž����‰E��,��L��L���H�F�H��H�������5��H�������+��H�������+��H�������
L��H��h���H�[ �+��L��L��HDž����‰E��,��L��L���H�æH��H�������D5��H�������+��H������|+��E1�L���H������H�C�A�L��H������H�s �:+��H�������>+��H�C L��H�xxH��P8L���$������I�?A��H�Û�wH���o4��������H������L������HDž����H���v(��I�7�F����L������1ɺL��H�5�HDž���M�w �1��1ɺL��H�5��HDž�����1��L��L���L���4��H������L��@����T*��H������H*��H��`���L���
L������M� ��)��L��L��HDž����‰E��n*��L��L���H�,�L��H�������3��H��������)��H�������)��L�������
L��H��h���M� �f)��L��L��HDž����‰E��)��L��L���H���L��H�������*3��H�������n)��H������b)��E1�L���L������H�)�A�L��H������I�w � )��H�������$)��I�G H��H�xxH��P8L���!��H�������(���Y���f.�I�������������\��H,�H�������f��f�H������H��P����H*�x����-9�f�H�������H*�H���H�L��������������^��&f.��X������H,ЉH��H9��f��*�Y�f/�����w��������\��H,�H������=��f(��������\��H,�H������H�������r1�H�5ќ��f�f�LPH��H��u�H�HHc�����H������H�H����H�A� fD�H�HHc�4���L�,H��ukJ�)� f�8H�HHcE�L�$H��u6H����J�!1��)f��Zf�p�I�DH��������@H��L��L���:��H���DH��L��L���"��H���DH��L��H��p������H��p���H���:�����H�L��HDž����u*��H�����H������H�������&��H������L��HDž����H�������$��H�������n&�����H�=��m&���h!����H���~����H�������H�������H���,����H���~����H����~����H�������H���~����H���~����H���@~����H�������H�������H���
����H�������H�������H���~����H�������H�������H����~����H���~����H�������H����~����H���~����H��������UH��AWM��AVI��AUI��ATL��p���SL��H��H��X���H���L��H��P���dH�%(H�E�1��Y,��L���A)����uL���)�����%L���%�����-H��X���DžD������H�����x��H���=����������AoEL��)�`����a%��H��h���H��`���A��H�VH�AA��uH�V�H�A�H��h�����D���H��H��`���H��`���M��L��I��H��P���H��X���P�~���H���H��P���M��L��I��H��X���L��$�V�XZL���\,��H�E�dH+%(�sH�e�[A\A]A^A_]�f.�DžD���DžH�����������L����'�����8H�E�L��H��������*H�H�H��H��?H��H��H)�H��H����(��A��H��H���H��X���H�PH��E��HD�H���1ɋ�x��H�������@��H�4�H)�H�4�������HiҗH։�����H�<�H�zH��H����kH���AoMM��I��QH��P���L��H��`���H��X���)�`���H�`���H�h�����_L��AX�='����u1��H���H��M��L��H��P���H��X���I��L��P��Y^DL���'�����T���I�EI�MH��M��H��X���H��`���I��H��H�Q�L��H��H���H��h���H���H��`���H��P�����xP�N�I�EI�MM��I��H��X���H��H���H��H�QL��H��h���H���H��`���H��P�����x�$��I�EI�UM��L��H��X���H��H���I��H��H��h���H��P���H��`���H�����x�$��I�EI�MM��I��H��X���H��H���H��H�Q�L��H��h���H���H��`���H��P�����x�$�_�I�EI�UM��L��H��X���H��H���I��H��H��`���H��P���H��h���H�����x�$��I�EI�UM��L��H��X���H��H���I��H��H��`���H��P���H��h���H�����x�$���I�EI�MM��I��H��X���H��H���H��H�QL��H��h���H���H��`���H��P�����x�$�t�I�EI�UM��L��H��X���H��H���I��H��H��h���H��P���H��`���H�����x�$�'�������@L��� ��������H��X���M��L��I��H��H��P���L��H�����xP����|���f���������Q����H���y���@��AWAVAUI��H��ATM��UH��SL��H��H�T$L��$@H�L$dH�%(H��$�1��B�����:I��H��tH�x��L��$�H��L�����H�E`H�����H��t����H�tP�H�EhH����H��t����H�LP�L�H�CI����I�$L�L$pH�D$xH��t@��@��L�Dz�M�I�T$L��$�H�����H��t@��@��H�|z�H�L	�H��$���I9����uH9�t
H�t$pL�����L���N���D$(����H��$@������H��H�D$ �s!��H�\$PH���F%��M��tVM�&�9��H��M��t5I�$L��$�L��L���H��$��x�SH�5���L�����H���D#������	1�L��$�H��L���F'��H�|$ �L�����H��$�����H��t/L�%HnA�<$��
�E�P��U���K
�|$(��D��$lH�|$ D�$��%��H�5>H��$�H���]H�l$@L����D��H���v$������v��L�d$`�H�D$`L���D$hL�d$��!��H�D$`��H�\$h�P��	A�H�
�H��L�����H�|$H������I���I��H�|$H��H����$��I��I���H�|$H�T$H��H����w��M�E H��$pL��H�T$(H��
H�D$L�d$HL�D$0�w��H��L��HDŽ$��‰�$����H�
ЖH�|$0L��H�L$H���L���6%��H�|$H�|��H��$��o��M�E H�t$H��
L�D$0���H��L��HDŽ$��‰�$����H�
M�H�|$0L��H�L$H���L����$��H�|$H�	��H��$����M�E H�t$H��
L�D$���H��L��HDŽ$��‰�$��!��H�|$L��L��H�/����H�D$H�P$��H�|$H���H��$����M�E H�t$(H��
L�D$���H��L��HDŽ$��‰�$����H�|$L��L��H������H�D$H��#��H�|$H�#��H��$����I�m 1ɺH�5h�L��HDŽ$��!��1ɺL��H�D$HH�5?��� ��L��L���H���n#��H�|$H���H��$����H�|$H��I�m �F��H�D$HL��L��H��H��H��$��#��H��$��b��H�|$H�X��I�u L��A�A�H�
�������L�����H�|$`�"��H�D$@�(u!H�5�{H���WH�|$@H�K������H�l$XH��t$L�%jA�<$�j
�E�P��U����	H�|$ �N��H��$���L�����f�H��$�dH+%(�
H��[]A\A]A^A_��H���nH�l$XH��t$L�%�iA�<$�k	�E�P��U����H�|$ ���H��$�r��L���j���u���DH���8��I��1�H�D$(I��H�yH��H�L��I��M������I�H�HI9�t,H�0H������H�NI��1�H��H��I9����H��I9�u�I�8����H�\$PM��H�D$PH�����I���H�|$L��H���� ��I��H��H��L	�L�D$��H��$p�
L��$�H������H�t$�
L����$�����Hc�$���$dH�L�D
D��L�D$���L�D$H��$@E����H�|$P����H��$@HDŽ$@H�D$PH��$@H���J��H��$@���I���H�|$L��H������H�L$`�
H�D$H��H��H�L$I�����L��L��L������L��$�H�t$I��H��L���7��L��$�L��H��L���!��L���y���1�����L��fH~��`��1������
܆fI~�fHn�������H���fIn�fHn��������H�D$PD�`E���5H��$@H�D$ H�t$(H��$p�
H���n���X	��$����}��H�D$pI��EH�\$ I�} H�L$pH������H��$@H������H��$@�&��I�u H��A�A�H�
j�����r��H����
��H�|$p����H�|$�F
��H�|$P�����7����L���(��H��$pH�����L����$��	��L��$�L���y��Hc�$���$H�L�d
H�D$PE��u	D�`����D`H��D�����H�D$PH�5��HcPH�LP� 1��f�f�AH��H��u�Hc�$H��L�<H����Hc�$�N�49A�, I�~L�<H���hC�D>)H�D$PD�`�+���f�H������H������H��I������I9��Q���L��$�H��L���Y
����$��������H��$�1�����H��$�1�H���
���L�%�dA�<$���G�P��W���Y@���A�������@�t1�H�5-��
�f�f�LPH��H��
u�H�HHc�$dH�H���H��, H�HHc�$�L�4H����H��$@J�1�)f�8D�BE1�fD�@���H�|$A�H�
M�H�������0���f�H�ɍI�} H�پ��H��$@H��$@H��H�D$ ����H��$@�3�����fDL��$�H�5i���L��HDŽ$�L�d$0���L�d$@M�����H�t$0L��H�D$HH��PL��$�H�5��1ɺI�$H�@(H�D$`H�D$8H�D$`H��H�D$���H�t$H�D$8L���H�|$`A�����H��$�H��tH��PE����L�d$HL�t$L��L���	��L��H�����L�t$hM���L�%`bA�<$�]A�F�P�A�V����H�D$@H�D$0H�|$HH��tH��PH�|$0��H�|$0H��P�o�H�D$0H�|$�1�H�5��H�L�`(H�D$`���H�T$H�t$0L��A��H�5�tH���~L�d$HH�Ͼ��H��PH��$�L��L�
����H��$�L�����t��H�5����L������H�|$p�;��XZ����@H�|$HH���%����2���D�#1�H�
T��
�f�fA�TDH��H��u�Hc�$�I�L$L�4H����J�11��)f�A�\$f�p�X���DH�EH�ս��H�@H9���A�<$�S�E�P��U�����H�EH�
�H��H�PH9��R�P�]���������E�=�H�EH�e���H�@H9���A�<$���E�P��U������H�EH�
`���H��H�PH9����P�����������E����H�EH�����H�@H9��:A�<$���E�P��U������H�EH�
�H��H�PH9����P�����������E�����H�T$���H�=�pH�0����H�5�pH�T$�t�I�H�V���H�@H9���A�<$�vA�F�P�A�V�����I�H�
P���L��H�PH9����PH�D$@H�D$0����fD������A�F��������H�=pH�0�G��H�5p��L��H���������H��L��L�����H���F���f.�H��L��H���b��H���i����������E����������E�����������E�i����H��|H�=q��	��H�5�p�^���H��L��H��L�D$���L�D$H���	���H��L��L�D$H�T$����L�D$H�T$H�����H�������������A�F���H����V���H������L�����Q���1�H��$�E1�H��t
H�PA��D+ L�����H�|$ H��L���
��H��$����H��$�H���(����������������1��D$(����������H�H����H�@H9�u\A�<$tK�G�P��W���{���H�H�
���@�t$H�BH9�uC�R�t$�V����������G�>����������G�@�t$0H�|$���t$0H�|$���t$������H���]e����H���.e����H����e����H���e����H���e����H���e����H���e����H���e����H����e����H���e����H���e����H���e����H���{e����H����e����H����e�����Ce����H���d����H����e����H���d����H���Gd����H����e���@��UH��AWAVAUI��ATI��SH��������H������L������L������dH�%(H�E�H�ƅ�����PƇ	����L��E1�HDž�������Dž����H��H��tufDL��L�����D�pH������A���yA��c~3A�F���1w*H�[�Hc�H�>��H������I���H��P@H������L�xL������L9�w�H�E�dH+%(�^)H�e�[A\A]A^A_]��A��u�H������H�@�p���0���s����4I�U ��su
��������H�xA��H�'h�
�����J���H������L��P���E1�� �L��H�pHDžP�������H��P���L��D�xH������HDžP������D���LL��H������A�H�p���H��P����@�H�ω�x����0����x���H�����I�Dž���L��P���L�����H�������
��I�} L��H�J�H�����H��P����w��H��P������I�u L��A�A�H�
�w������L�����H��������H������L�x����H������I���L��P���L�����H��PI���L��H����L��L���@��L��L���Ug��L���M���AƅL������H������L�x���D�����������H����H��H��x������A��l�n�/A��j�A��kuBH������L�����E1�A�L��H�H@H�P0H�p�
��H��x���L�����L���c���L��x���L����	��f��tRI���I���E1�1�H��dH��`�)��L��P���L��L���g���1�L��L���Z��L���=���H��x�����H������L�x����H������L�x�������{���A����ZH������I�����O�U���f�H������L�x�������;���H������I���HDžP���HDžX���L�HpL�pL��L��x����

��H��L��L������L��x���H�����L��P���H�����H������H�����H������A[A^���fD�����������L������L��P���L��I�w���H��I�OPL��������I�W@M�OpL��M�G`�����������;���A����z
H������I����KH������L�x����f�H������L�x�����������H������D������1�L��H�PH�p�&���������������H������L�xL�����f�������I���1�H��E1�I���L��P���H��`�Z'��H������L��H���U��L��L������L��L���'X��L������H������L�x�2��������������L������L��P���L��I�w A�W,�F��9�A�W(HDžP���N����H��P����wH��������I�E ��s�
L��L���o���I���L���P,��L��H�����E1�1�H��E1�L������DH������L�x�������c���H������H��H��I�����f���D���I���I���1�E1�H��dH��`�%���1�L��L����V������@���������H������L�xL�����M���L��HDž�H�����H�����HDž������
��L��H�����L��P���H�����H������	��L��L��H����H�����p��H������H��������H����L�����L��L��H�P@L����k�A_H������X����L������H������L�x����@�����������H������H�@0�H�����I�E ��s�aL�����L��L��芝��I���L���k*��H������E1�E1�L��L��P���H�QH�q0H�A1�H��x���H��P���H��L��H��X������L������f��������K���L������L��P���L��I�w A�W0�F��9�A�W,HDžP���N��<��H��P����GH�������tVI�E ��s�
L��L��諜��I���L���)��E�O(H�����1�E1�I�wL������L������H��������H������L�x���@�����������L������L��P���L��I�w A�WD�F��9�A�W@HDžP���N��t��H��P����WH�������t�I�E ��s�s	L��L�����I���L����(��I�w0I�O(E1�L��H�����I��H������I�wI)�I������ �������������H������L�����L��P���L��H�p�b���L��L���G���H������������L��L��H��0�*L������L������H������L�x�n���H������L�x�������S���H������H��L������L���H���H���H�pL����G��_AX�����H������L�x���������I���I���1�E1�H��`H���!��H������1�L��H��H���fE����H������L�x���������H������I���1�E1�L�p L��L���V!��H������L��L��H�pH���
E���[��H������L�x�������;�I���I���E1�1�H��dH��`�� ��H������H�@(H=�����L������H��I�zH)�H�NH�V�H�H�H��I�r HH�I�RE1�H�����t/I��I)�M�Y�M�AMH�H�H��H��?I�H�H�H=���HD�H��P���H�8L��P���L��H��L��H��?H�L��H�H��X����K���\�f�H������L�x�������;�I���I���1�E1�H��dH��`����H������L��H4�P0H�p�YF����@H������L�x���������I���I���1�E1�H��dH��`���H������1�1�L��H���E����fDH������L�x�������{�I���I���1�E1�H��`H���6��H������1�L��H�P(H�p��B���;��H������L�xH�������������������H�PH�pL���&��fD���������L������L��P���L��I�w���I�OxI�WhL��D������M���L���1L���@���H������L�x��������{�H������E1�L�pPL���
��������[�H��x���L��I���@H��I9���H��L�������xuu�L�xL��P���H��x���L���H��L��L��HDž�H�����H�����HDž�������H��H������������L�����L���L��L��H���H��������q���@H������L�x���������L������M�NL��L����������f���p�I���f�L��������`�������d��P���A�F�*��Yjvf/rv�	�Xe�H,�L��P���H�����1�E1�I���L��L�������������S��������1�L��H�������M������H������I���H��PH������I�EXI�}(L�yI;E8�
I�UpI;E`�FD�p�����D�� �p�I�EI��H��tI�EH����L���4�I���L��p�rV���0�DH������I���H�D�w�PI�}(D���T���H������L�x��@��uKH��hH9�tH�x��H��h�e��u+H������Aƅ	ƅ������DH��hH��H�����ƅ��������
����{�H�x�H��m�3�����u
�������eH������H�@�p������
A��n��H������H��x���H�������H������H��������L��L��P���HDžP���L�HpH�pHDžX���H���H�������AYAZ��H������L��P���L�xL������L��L��HDž�H�����H�����HDž�����r���H��H������������L�����L���L��L��H�HPH�P@�p������H�B�H����H�x�H�pl��������H������H�@�p�]�H������H�����I���H���'���H������+���H������L�x��H������H�����I���H�������H������H�����I���H���͹���H������L��P���H��0H��x���H������I���L��H�QH�AH��P���H��x���H��X�������H������L�x�"�������%������H�������A���%H�A�p�U�H������1�L�5EkH������L�x�%L��L��I���q���P����DH������L������L9�w�H������I��H���z��������	L����������
��	�\M�~�^�H�x�H��j������tH������H�@�p��������%��u�H�������A����H�A�p�r�H������H�q H�yH�Q1�H���������H��E1��B���I�uH��ttL����I��M�uI�EM��tQI�~8�	�M�~0M��tL���h����L���{�I�~H��tI�v(H)��f�L�����HL���Q�H�������@��H������L��P����L��H�p ���H��@���H��H��h���I�����L��L��������\�������E1���u8���H������H�pH������H9�sL������x��E��u�L�}�M��t$H�?D�8��A�G�P�A�W���7H��h�����L���n���H������L�x�q��������H�@�x
�����H�x�
L��
��������H����������}���A�H����H��H��x������H��x���H��h����|���H��x�����f���F	�H�}��H��H�������Y���H������H�@����H�x8�@H�@H�@ H�@(H�@0H�@8�r�H������M�EH�@@I�EM����I�x8L��������L������I�@0H��t.H��L��p���H���������H���������L��p���I�xH��tI�p(L������H)����L������L��L�������b�H�������H���������zI�}H��x����d���m�Y�P���f/�mI�U��H����B���Xq\�H,��BE���pA�H��x���������H������E1�A�H�H@H�P0H�pH���H��I��������
\�\��H,�H�����H������L��P���E1�A�L��H�H@H�P0H�p��H��x���L���c���L������L��P���H�x
�#fA�GIc@H�H��� 1�A�OfA�D
�����H������L��P����L��L�����H�p ����L�����H�������H��H��p�������H�������H��H��h������L��L���.���H��p���L���O�H��h���L���p���H�����H��H��`������H��`���L������I�}H�����Y�I�MH������f����H������L���D��I�EI�EH����H�x8H���������H������H�x0H��tH��x����$�H��x�����3�H������H�xH��tH�@(H��H��x���H)��
�H��������H�������H���I�EH���(�
�j�Y����f��I�����Y��`f/ʉP�M�X��H,��� ����Pf/���X��H,щPH�pL���w�����,���I�}���t1���������(����G@���t
1�������GD���f���XI�uH����L���EC��I�EI�EH��tvH�x8H�������d�H������H�x0H��tH��x�����H��x�������H������H�xH��tH�p(H)���H�������?�H�������H��H������H�������"fDH������L���)����x��H������H��x���H��H������H������H9�r�H��`�����H��h�����H��p�����H��8���H��tH��H���H)���H�������H�������L���8�L�����L��x���I�����H�@�x�����H�x��H�9b�x�����������H�@�x�!���H�x��H�b�C�����������H�x�H�z_�!���tH������H�@�p���H������H��tOH�=PL�8�/L��M��t6I�L��P���H��OL���H��P����x��H�5����L�����M���L����]��H������D������H������H������H9�sEH������D��L��L������x�L���������L��L��L��I������L��蜃���j�I���b�L��`���H�5���L��HDž`����>�L��P���M���O���I�L���PI���M���H��tH��PH������L��I��I��P����H�z0�����H������H�pH������H9��p���L���r���H��p����@=t.I�MH������=�t>��}��H������H�x0t��)���H��p���H�@�x��I�EH��������H��p����H��H��p�����H��p���H��H��p����_�H������H��p���H�y0H�A0H��t4H���������H����������I�EH�x0�������I�EH�x0����r���@H��p����H��0H��p����\�H��p���H��H��p�������b���E1��/����
�T�\��H,�H������I�p��h���L��p���H��x��������h���L��p���H��x�������������
�F������H���H��H��p�����H��������4���H�H�HcRH�D��H�������W�������H�����H�����xI�EH�x8H��������H�����H������H�����H�A8HDž�����H�������������\��H,�H������f(��\��H,�H�����I�H���H�@H9��`H��8�8�BA�G�P�A�W�����I�H�
֕��L��H�BH9����R�l������A�G�S�H��Z�H�=�K�����H�x�H��Z����tH������H�@�p�8�I���M�~�e������E1����H�x��H��\�>�������H��p����@���H�xH������H�HcpH�6H���'Lc�4���H׸_f�L�WK�	M�����������A1�fC�J�1���H������1����H��`���H�����������I�EH�������'����H�q���H��H�������M�H������H�@����H�x8�@H�@H�@ H�@(H�@0H�@8�f�H������I�}H�@@I�EH��t���H���������H��x����PH��`���H��x������I�}H��x����W�H��x������I�E���������A�G���H��p����v�f��uH��h����e�f�������I�uL����:��I�E������PH�H�PH�PH;P tH�P H�@@H��p�����f��t)I�}H��p����&����������I�uL���m:��H��h������I�MH������f����H������I�EH���w���H����������H�x�	�	H�VW������H������H�@�x	�m�H�x�	�	H�nZ�����K�I�wL���S��x��I���I��H9�������������H������L��L������|�L�����������H������L�x�;���I�wL������xtuI���D������H������L������I9�����H������H������D��L�����x�H������L����������L��L��I��I�����L����x�����H�@�xu�H�x��H��V�R����_�����H��h���H���&���������2I�uL���m8��I�EH����������H��p���L��L��`������H�����L��`���I�����H�pH��X���H��`����z��H��X���H��`���H�����L��������������
�F������H��@���H��H��������H������H��x����E�H����H���H������H����H�
pTH������H�����H��H������H�����(I�MH������H�y8����H�����������������������������
�F������H��@���H��H���������H������H����E�H����H���H������H����H�
�SH������H�����H��H������H�����U'I�MH������H�y8�!��H�������������������������������
�F������H��@���H��H�������:�H������H����E�H����H���H������H����H�
SH������H�����H��H������H�����&I�MH������H�y8�n���H������2��������������h���L���������H�@�x	����H�x�	�	H��R�]�����������������H������H��x���L�x�`����H���=;����H����;����H���;����H����;����H����;����H����;����H���<����H���<����H����;����H���;����H���0;����H����;����H���<����H����;����H���<����H���<����H���<����H���,<����H���0<����H���4<����H���L<����H���8<����H���:����H���8<����H���:����H���<<����H���<����H���;����H���.<����H���L;����H����9����H����9����H����9����H����9���@��AWAVAUATUH��H��SH��H�t$H�T$H�L$ D�D$dH�%(H��$�1����f��u,H��$�dH+%(�H�Ę[]A\A]A^A_�H�I?H�u L��$A�H��$H�D$PA�L���H��H�D$0�W��H��$L��$�R���u�
L���F�E����X��$D���;��H�D$@I�Ņ���H��>H�u A�A�H��$H�D$pL���H��H�D$8����H��$����H�} H�L$@L��H�">���H��$�`�H��$���H�t$L��HDŽ$�HDŽ$�HDŽ$����HDŽ$�������H��$�L��H�����H��$��
L��L�u L��$�H�`WH��H�D$(����L��L��HDŽ$�‰�$��c��L��L���L��H��$���H��$�����H��$����H��$�L��L�u �
H���b��L��L��HDŽ$�‰�$�����L���L��H�
�VH��$�L��� �H��$��c��H��$�V��H��$�L�u 1�H=���tH+D$(H�P�H�pHH�
L������L��L��HDŽ$�‰�$��b��L��L���H�pUL��H��$���H��$�����H��$����H��$�L�u 1�H=���tH)�H�P�H�pHH�
L���D��L��L��HDŽ$�‰�$�����L��L���H��TL��H��$���H��$��E��H��$�8��L�u 1ɺH�5~IL��HDŽ$��"�1ɺL��H�5$JHDŽ$��L��L���L����H��$L��$�����H��$����H�u L��A�A�H�
�I������H�ۺ
L��H���4��H�t$(�
L��$pL��L�D$(H�މ�$����Hc�$���$�H�H�\���N����L�D$(H�D$H�<H�} H�L$HL���H�tTH��$��H��$L��$�����H�u L��L��H��:A�A����H��$���H��$���L���.��H�T$H���H���H�t$L���l��HDŽ$�L������T$E1�E1�L��L��H�����H��$��S��L�����L���3��H�|$H�9��L���!��H�|$8���H�D$@D�pA��D���"��H��$�H��E����H�} L��L���H�(SH��$��H��$����H�t$1�H���:,��H��$����H�|$@���H�|$0������@H�|$ �����H�t$L��H������H�T$ L��L��H������������f1�H�
�J�f�f�TCH��H��
u�H�t$@H�KHcFL�<H���J�9�)1�f�D�sf�H�����t1�H�5�K�f�f�LPH��H��
u�H�HHc�$�H�H����H�A�,fD�H�HHc�$�H�H����H�H�T$H�)1�f�0�Zf�x�A���D�p1�H��F�
�f�fA�LUH��H��u�Hc�$DI�}L�4H��uvE1�A�]fG�L5���@H��H��L���!��H�����f�H��L��H�T$(���H�T$(H���G���H��L��H�T$(����H�T$(H������L��L�������z��������H���s3����H���t3����H���3����H���3����H���3����H���3����H����3����H����3����H����3����H����3����H���3����H���v3����H���3����H����3����H����3����H����3���f.���AUI��ATI��UH��H��S��H�������t
L�������uH��L��L��H��[]A\A]�8��fDH��A��L��L��[H��1�]A\A]�C����f���AWI��AVAUI��ATUH��SH��H��D�D$L�t$ L�L$L��dH�%(H��$�1�H�D$ ���H������H��I�����A�$9���sL��$��
L��L�D$�F�C�Z��D�`��$�D������E��L�D$H�D$(H����H�*5H�s L��$�A�H��$�H�D$@A�L���H��H�D$�P��H��$��S��H�{ H�L$(L��H��4���H��$�����H��$��!��H�D$`H�s A�A����H��H�D$H�
^I�c��I�UI�uH����I�H��$�H��$�H��t����H�DA�H�I�WH��$�H����H����L�l$8L��H��$�L������L�|$0L��L�����L���b��H��L���7��L������L��D$8�Q��L������H��L�����L��������L�����L��L�������L������L$L��L��H���1���L���i��L���!��H�|$����H�|$����H�D$(D�hA��D������H��$�H��E���H�|$ ���H��$�L��HDŽ$�H�D$ �)��H��$��|��H�|$(�r��H�{ L��L���H��LH��$����H��$��B��H�|$ �8��H��$�dH+%(��H��[]A\A]A^A_������H�DB�H��S���DH�maskH�yH�AHc�$�H�H����1�D�af�t����f��m1�H�

G�f�f�TEH��H��
u�H�t$(H�MHcFL�<H���bJ�9�)1�f�D�mf�H����H���h����-Af��L�|$H��H)�H���H�@HiɗH�H��H�HH�����*��^
�L�\�M��t7H��$�H�����L��H��‰�$��+��H�|$ ������@L��$�L������h	��$������H��$�I�ą���H�|$ L��$��r��H��$�L��HDŽ$�H�D$ ����H��$��D�������L��H�L$H�T$�F��H�L$H�T$�N����H��H��L���!��H�����f��o1�H�
>E�f�fA�TDH��H��	u�Hc�$�I�|$L�<H��u1�A�l$fC�|<����L��L������������H����-����H����-����H���.����H����-����H���-����H���-����H���o-����H���-����H����-���@��AWAVI��H��AUATI��USH��H��H�T$�L$dH�%(H��$�1�H�D$0H�D$8���I��H�H�hH�D$I9���L�=EEH��L������H�Ë@=�����o~l��p��#wdIc�L�>��f.�H�D$@H�sH��H�D$�����L$H�t$L��H�D$(H�T$(��������H�|$�h���H��I9��f���E1�1�I�FM���H���Cf.�H�D$H�(�������uTA����L��o��)L$0I�FH��t*I�V`H��t!H���H�|$0�@��I���I���f��H��$�dH+%(�FH�Ĩ[]A\A]A^A_�f��oC@)D$0�@H�C0f�x�!���H�CH�SH�D$8H�T$0�g���f.�f�{0������oc)d$0�C���fDf�{D�����o[)\$0�#���fDf�{,������oS)T$0����fD=�����H�{�G��	ty�������H����H�f?������k����Y���f�I�~D�D$H�SxH�shH���M������H�|$E1�1��}���*����H���	�	H�mA�������H�{�G��	�U���H���	�	H��=�T����teH�{�G�+���@I�FH����M���E1�1�I�V`H�������H���H�|$0�9��I�EI�U���@E1��m���H�|$ L�d$(H�D$ ���L�-	@@L���M���Ä�tlI�vPL��H��P0H�|$ �3��H�D$(L��H�D$(H�D$ ���H�|$(���H�T$ �B��t���u�H�zL�������t�AƆ��L���V>��L�d$@L�-w?��u-H�|$ A�������H�xL���e�����tAƆ�L���AL����t�I�vPL��H��P0H�|$ �v��H�D$@L��H�D$@H�D$ ���H�|$@�Q��H�D$ �P��t���u��H�D$E1�H�(�O����9����H����(����H����(�����AWM��AVE��AUI��ATI��UH��SH��H�~ H��8dH�%(H�D$(1����H�u(H�M0H�H�@H��t?f��f��H*��I*U�^���9H���'f.�ztf(��fDH���?I�4$H)�I�T$H)�H��H	��,H��8�@����H���������E1�L�l$ H�D$ L�����E1�E1�L��D��H��H��蹽��H�|$ ���H������M����L������H�D$(dH+%(��H��8L��[]A\A]A^A_�C���E1�E��L��L��L��H���9�H�:)�H�D$ ����L�l$ H�s H��I��A�A�L����K��H�|$ �Q��H����������
���� 81�f(�f��f�ۿ�H*��I*M�^�f.���Eτ�u	@�������f(�H��H�T$H�D$�L$�$�6��H�T$f��$f���L$H�D$�H*��Y��H2f/����X��H,�f��H*��Y�f/�vb�X��H,����@f.п@��E��1���H�D$(dH+%(uUH��8[]A\A]A^A_�f�H����������\��H,�H������f(��\��H,�H���^��������H���%����H���%����H����%����H���%����H���%����H���%��������AWAVI��AUI��ATUSH��H��H��$�H�t$H�l$HH�q D�D$$H��L��$�L�L$(H�D$0dH�%(H��$�1��J��I�E(I�M0H��H�D$H�L$��H�H��H�T$X�@�D$`�I��H�H������H�T$d�@�D$l�9��L�d$p1�L���z��H��L��L���L��L��H�T$8I������H�T$L��L�����L�t$XL��L�����L��H���a���H�T$H�t$8L�����L�t$dL��L�����L��H���t��L�t$P1�L�����H�|$H��L������L��H�D$pH�T$x蓼��H���[��L��H��H�H�@HT$pHD$x���H���H������L�cH�CM��tUI�|$8����M�t$0M��tL���C���L���V���I�|$H��t
I�t$(H)��?���L���׺���HL���*���L�D$0H�L$(M��L��T$$H���.���H�������L�cM��tH�CL���I����L���ܻ��H�sH��tnH�����L�cH�CM��tUI�|$8� ��M�l$0M��tL���~���L��葻��I�|$H��t
I�t$(H)��z���L�������HL���e���H�������H���!���H��$�dH+%(uH�Ę[]A\A]A^A_�觽����I���"����I���"����H���{"���f���AV�AUI��ATUSH��H�� H�2dH�%(H��$1�L�t$pL�d$HcVL��H�����L��蚹��H�l$L��H���z��1�L��H���
��������H�K@H�s8L��H��H���N��H��tH���P��L��H���e;��H��tH�EH��p��H��H�@H9�u9�D���L������L���$��H��$dH+%(uH�� []A\A]A^Ð�����w�����H���!����H���}!����H���!����H���m!�����H��(�����鷹�����H��0飹����H��(铹����H�� 郹����AVAUI��ATI��UH��H��dH�%(H�D$1��q%��t=H�n%M��L��H��L�����H�D$dH+%(u@H��L��]A\A]A^�fDL�5)%L���!�����t�H�F"L��H�%藿����P�����AVAUI��ATL�f�UH��H��dH�%(H�D$1���$��t<H��$M��L��H��L������H�D$dH+%(u?H��L��]A\A]A^�DL�5�$L��聻����t�H��!L��H�t$����谺����AVAUI��ATL�f�UH��H��dH�%(H�D$1��0$��t<H�-$M��L��H��L���D��H�D$dH+%(u?H��L��]A\A]A^�DL�5�#L�������t�H�!L��H��#�W����������AVAUI��ATL�f�UH��H��dH�%(H�D$1���#��t<H��#M��L��H��L�����H�D$dH+%(u?H��L��]A\A]A^�DL�5I#L���A�����t�H�f L��H�4#跽����p������������H��0������H��(�����H�� �����H�=�"H��"t�f.�H��H�ǾH�B0踺��H��"H���f.�f���H�55 ATI��H��tL��L��k��1�1��x��L��A\�f�����H�=�H�0�7���H�5���ff.���H�5�ATI��H��tL��L��k��1�1����L��A\�f�����H�=�H�0�׻��H�5���f.�@��ATI��UH��dH�%(H�D$1���!��t/H�5�!L���x���H�D$dH+%(u;H��L��]A\�DH�-q!H���i�����t�H��H��H�\!�߻���蘷�����ATI��UH��dH�%(H�D$1��!��t/H�5!L�����H�D$dH+%(u;H��L��]A\�DH�-� H���ٷ����t�H��H��H�� �O�����������USH��H�� H���:���H�kH��tH���;te�E�P��U��tH��[]�H�EH��i��H�@H9�ul�;tG�E�P��U��u�H�EH�
�i��H�PH9�u5H�@H��H��[]��fD�������E�@�������E�@H��H��[]��DH����f���ATUH��SL�gxM��tH�5�;tpA�D$�P�A�T$��t[H��]A\����f�I�$H�i��H�@H9�ul�;tGA�D$�P�A�T$��u�I�$H�
i��L��H�PH9�u.�P�f�������A�D$�f�������A�D$�f����{���f�L����f���H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����H�?H��tH��`fD����AVAUATUH��SH�H��H�H�HcPH�FHc@DL�dD��茲��H�EE��u[]A\A]A^�f.�H�HH�L�kH�XH�H�0HcFL�4H��u6f�Ic]DJ�1H�Hf�H�H��u2H�ED�`1�f�Y[]A\A]A^�H��H��L������H���@H��L������H�����AUATUH��SH��H���H�wdH�%(H��$�1�H��t'H�W`H��tH�ƨH�}@�4���H���H�����H���t���ƃ�tƃ�ƃ�H��H�l$0����
H��H���)���H�S0��$�H�HcRL�dD���+���H�$E���>L�#H�l$1ɺH�5^$H��H�D$���H��H���L�����H�|$L�d$�ŷ��L�+1ɺH�5>.H��H�D$賾��1ɺL��H�D$H�5�#蔾��H��L���L���!���H�|$�g���H�|$�]���H�3E1�E1�H��L���H��H�D$�(���H�|$�.���H������H�kxH�CxH��tH������H��萯��H�<$���H��$�dH+%(��H���[]A\A]�f��b1�H�58-�f�f�LPH��H��u�H�s0H�H.HcFL�,H��uGJ�)�.f�0H�HHc�$�L�,H��u>J�)�)1�f�H�$D�bf�H�I����H��H��L���a���H���@H��L��H���J���H����0�����H�����H�����H����%H�|$���H�<$��H��訶��H�|$�޵��H�|$�Ե����f���AUATUH��SH��H���H�wdH�%(H��$�1�H��t*H�W`H��t!H�ƨH����!���H���H�����H���a����ƃ�tƃ�ƃ�H��H�l$0����
H��H������H�S0��$�H�HcRL�dD������H�$E���CL�#H�l$1ɺH�5K!H��H�D$���H��H���L���q���H�|$L�d$貴��L�+1ɺH�5++H��H�D$蠻��1ɺL��H�D$H�5� 聻��H��L���L������H�|$�T���H�|$�J���H�3E1�E1�H��L���H��H�D$����H�|$����H������H�kxH�CxH��tH������H���}���H�<$���H��$�dH+%(��H���[]A\A]���b1�H�5 *�
�f�f�LPH��H��u�H�s0H�H.HcFL�,H��uGJ�)�.f�0H�HHc�$�L�,H��u>J�)�)1�f�H�$D�bf�H�<����H��H��L���A���H���@H��L��H���*���H���������H�����H�����H����%H�|$�ٲ��H�<$�в��H��舳��H�|$農��H�|$贲����f���L�H�wH��0I9�tH��L��� ����f.�D��AWAVAUATUH��SH��H��L�oHH�w(H�G0H+G8H���������M��H��I)�H��L��H��I��H��H��H�IH��H�C H+CH��H��H�H�3333333H9���H�;H�KL��H)�I��H��I)�I��vs���)����}I�E�EL�c0A�$A�D$�
�E �E�E A�D$ H�CHH�PH�@H�SHH���H�C8H�S@H�C0H��[]A\A]A^A_�f�L�rK�6H9���H�ɸHE�L�|L��H��<�J�<�脪��H�s(I��L��L)�H��M�t�H�CHH�PH9�tH)�L���g���H�CH�;H�4�胩��L�+L�{I�O�,&L�s(L�kHH�CH�H�C I�EH�C8H�H�C@�����H�uI�|$�"���A�D$�����L)�I��H��L��L�4�H)�L9�vL9�t�L���ʩ���y���DL9��k���I�|$H)�L�觩���V���f�I��=t赭���p���H�=�&�4���@��AUATUH��SH��H��H����H��I��H��<��L�,�L���2���L��1�H��I���"���L�U0H�uH�EE1�L�MH��t,H��1�H�6H�A@H��I��H�8H��t;H�H�H�H�H��u�H�}H�uL9�t	H������H�]L�eH��[]A\A]ÐH�}H�9H�ML�H�9tK��I���I���L�g0H�G0M���V���@H��=t蕬���P�����H����I�$H�E(�����H�����H��裯����AWI��AVAUATUH��SH��(H�>dH�%(H�D$1��wH��虯��1�Lc�L��H�uH��H�D$H�EL�4�M����I�I��H�K@�#H�3H��txH�N@1�I��H��H�uI9�ucH��I9�u�I�?H�S�w;ru�H9�tH��H�����h�����u�I�L�pH��t(H�D$dH+%(�4H��(L��[]A\A]A^A_�f��H�6���I�?H�H��H�xL�s���1�L��H�CH�C�C H�C(H�C0f�C8�g����C H�E(H�} �H�UH�uH�C(H�C0H�D$豴��H�ք�u:H�ML�l$L�c@I�I�EH��tIH�H�I�EH�H�E����f.�H�T$H����L��1�H�uH��H�D$�H�EH�]H�H��tH�@@1�H�uH��H�EI�E��ۧ����H���	��H���&L��聳��H�{訬��H�߾H�+���H���S���H�{芬��H���r����HH�������`�����H���t���H������f.�f���ATI��USH�_H��t.@H��H�H�}���H�}� ����HH��裤��H��u�I�D$I�<$1�H���F���[]I�D$I�D$A\�f.�D��AWAVAUI��ATUSH��(H�G0H�W(H�O L�g8H�$H�GHH�jH�L$H�_H�D$H�T$H9�vI�L�uM����I��(M9�tA�~t�A�FI�~I��(����M9�u�H��H9l$w�H�L$H9L$��H;\$u�9DH��(H9\$t)�{t��CH�{�ұ����A�D$I�|$���I��(L9$$tA�|$t���@I�}H��tvI�EHI�](H�hH9�v fDH�;��H���7���H9�w�I�}I�uH��([]H��A\A]A^A_����H;$u�H��(H9$t��{t��CH�{�+�����H��([]A\A]A^A_���H��H���com.sun.star.comp.Draw.SVGFiltercom.sun.star.document.ImportFiltercom.sun.star.document.ExportFiltercom.sun.star.document.ExtendedTypeDetectioncom.sun.star.beans.PropertyValuecom.sun.star.beans.PropertyStatecom.sun.star.frame.XControllercom.sun.star.drawing.XDrawPagesSuppliercom.sun.star.drawing.XDrawPagecom.sun.star.view.XSelectionSuppliercom.sun.star.drawing.XDrawViewcom.sun.star.drawing.framework.XControllerManagerprivate:resource/view/SlideSortercom.sun.star.drawing.framework.XResourceIdcom.sun.star.drawing.XMasterPagesSuppliercom.sun.star.drawing.XMasterPageTargetcom.sun.star.document.XFiltercom.sun.star.document.XImportercom.sun.star.document.XExportercom.sun.star.document.XExtendedFilterDetectionlongHandleDIRECT_VALUEDEFAULT_VALUEAMBIGUOUS_VALUEStateSelectionOnlycom.sun.star.frame.XFrameiset_throwcom.sun.star.drawing.XShapescom.sun.star.io.XInputStreamPagePosFilterNameimpress_svg_Exportwriter_svg_Exportcalc_svg_Exportcom.sun.star.lang.XTypeProvidercom.sun.star.lang.XTypeProvider::getTypescom.sun.star.lang.XTypeProvider::getImplementationIdcom.sun.star.uno.RuntimeException[]type[]bytecom.sun.star.lang.XServiceInfocom.sun.star.lang.XServiceInfo::getImplementationNamecom.sun.star.lang.XServiceInfo::supportsServicecom.sun.star.lang.XServiceInfo::getSupportedServiceNamesServiceNameboolean[]stringcom.sun.star.uno.DeploymentException./include/com/sun/star/uno/Reference.hxxiquery_throwcom.sun.star.frame.Desktopcom.sun.star.frame.XDesktop2create of type ./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/frame/Desktop.hppcomponent context fails to supply service com.sun.star.lang.XUnoTunnelvector::_M_default_appendN3com3sun4star3uno10XInterfaceEN3com3sun4star3uno16RuntimeExceptionEN3com3sun4star3uno9ExceptionEN3com3sun4star3uno19DeploymentExceptionEN3com3sun4star4lang13XTypeProviderEN3com3sun4star8document7XFilterEN3com3sun4star8document9XImporterEN3com3sun4star8document9XExporterEN3com3sun4star8document24XExtendedFilterDetectionEN3com3sun4star4lang12XServiceInfoEN4cppu14WeakImplHelperIJN3com3sun4star8document7XFilterENS4_9XImporterENS4_9XExporterENS4_24XExtendedFilterDetectionENS3_4lang12XServiceInfoEEEE9SVGFilterN3com3sun4star2io11IOExceptionE�?�?�?�����A���FooterFieldFixedTextFieldVariableTextFieldFixedDateTimeFieldVariableDateTimeFieldclassaPropertyNameaValuexListeneraListener1.2versionheightviewBoxxMidYMidpreserveAspectRatioevenoddfill-rulestroke-widthstroke-linejoinxmlnsxmlns:ooohttp://www.w3.org/1999/xlinkxmlns:xlinkxmlns:officexmlns:smilpreservexml:spacesvgBackgroundBitmapsdefsdrawing.GroupShapedrawing.GraphicObjectShapedrawing.OLE2ShapeOLE2drawing.TextShapepresentation.HeaderShapeHeaderpresentation.FooterShapeFooterpresentation.DateTimeShapeDate/Timepresentation.SlideNumberShapeSlide_Numberpresentation.TitleTextShapeTitleTextpresentation.OutlinerShapeOutlineIsBackgroundVisibleIsBackgroundObjectsVisibleIsPageNumberVisibleIsHeaderVisibleIsFooterVisibleIsDateTimeVisibleIsDateTimeFixedDateTimeFormattext/ecmascripttinybaseProfile0 0 xmlns:presentationxmlns:animClipPathGrouppresentation_clip_pathuserSpaceOnUseclipPathUnitsclipPathrectpresentation_clip_path_shrinkpresentation-animationsTransitionTypeAnimationscom.sun.star.graphic.XGraphicTransformedGraphicBackgroundPatternsbg-pattern.patternUnitspattern scale(transform#bitmap(xlink:hrefuse0nonestrokefill1.1EmbeddedBulletCharsSVG_DISABLE_FONT_EMBEDDING-variable0123456789.:/-APMQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmIVXLCDMivxlcdm0123456789TextShapeIndexIsEmptyPresentationObjectBoundRectcom.sun.star.awt.RectanglehiddenvisibilityParaAdjustleftcenterrightTitletitleDescriptiondescBookmarkBoundingBoxcom.sun.star.drawing.XShapeMaster_SlidePageSlideBackgroundBackgroundObjectsbg-dummy-master-pagebo-dummy-master-pageDummySlidedummy-slideclip-pathdummy-pageSlideGroupcontainer-truealpha-upperalpha-lowerroman-upperroman-lowerfalseLinkDisplayNameFillStylevisibleDateTimeTextFooterTextChangeHighResDurationTransitionSubtypeTextEmbeddedBitmapsSVMURLExportOnlyBackgroundcom.sun.star.lang.XComponentFillBitmapTileFillBitmapOffsetXFillBitmapOffsetYWidthHeightcom.sun.star.text.XTextXTEXT_PAINTSHAPE_BEGINXTEXT_PAINTSHAPE_ENDcom.sun.star.io.XOutputStreamFileNameFilterDatacom.sun.star.container.XEnumerationAccesscom.sun.star.container.XElementAccesscom.sun.star.container.XElementAccess::getElementTypecom.sun.star.container.XElementAccess::hasElementscom.sun.star.container.XEnumerationAccess::createEnumerationcom.sun.star.container.XEnumerationcom.sun.star.beans.XPropertySetcom.sun.star.beans.XPropertySet::getPropertySetInfocom.sun.star.beans.XPropertySet::setPropertyValuecom.sun.star.beans.XPropertySet::getPropertyValuecom.sun.star.beans.XPropertySet::addPropertyChangeListenercom.sun.star.beans.XPropertySet::removePropertyChangeListenercom.sun.star.beans.XPropertySet::addVetoableChangeListenercom.sun.star.beans.XPropertySet::removeVetoableChangeListenercom.sun.star.beans.UnknownPropertyExceptioncom.sun.star.beans.PropertyVetoExceptioncom.sun.star.lang.IllegalArgumentExceptioncom.sun.star.lang.WrappedTargetExceptioncom.sun.star.beans.XPropertySetInfocom.sun.star.beans.XPropertyChangeListenercom.sun.star.beans.XVetoableChangeListenerhttp://xml.openoffice.org/svg/exporturn:oasis:names:tc:opendocument:xmlns:office:1.0urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0com.sun.star.container.XEnumeration::hasMoreElementscom.sun.star.container.XEnumeration::nextElementcom.sun.star.container.NoSuchElementExceptioncom.sun.star.xml.sax.XExtendedDocumentHandlerhttp://sun.com/xmlns/staroffice/presentationhttp://www.w3.org/2001/SMIL20/urn:oasis:names:tc:opendocument:xmlns:animation:1.0com.sun.star.animations.XAnimationNodeSuppliercom.sun.star.animations.XAnimationNodecom.sun.star.text.TextGraphicObjectM 580,1141 L 1163,571 580,0 -4,571 580,1141 ZM 8,1128 L 1137,1128 1137,0 8,0 8,1128 ZM 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 ZM 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 ZM 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 ZM 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 ZM 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 ZM 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 ZM -4,459 L 1135,459 1135,606 -4,606 -4,459 ZM 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Zcom.sun.star.drawing.FillStylecom.sun.star.lang.XComponent::disposecom.sun.star.lang.XComponent::addEventListenercom.sun.star.lang.XComponent::removeEventListenercom.sun.star.lang.XEventListenercom.sun.star.drawing.GraphicObjectShapecannot create std::vector larger than max_size()com.sun.star.presentation.XPresentationSuppliercom.sun.star.container.XNamedooo:date-time-formatooo:text-adjustooo:meta_slidesooo:number-of-slidesooo:start-slide-numberooo:use-positioned-charsooo:page-numbering-typeooo:meta_dummy_slideooo:page-number-visibilityooo:date-time-visibilityooo:footer-visibilitycom.sun.star.lang.XInitializationcom.sun.star.lang.XInitialization::initializeaArguments[]anycom.sun.star.uno.Exceptionvoidcom.sun.star.drawing.GraphicExportFiltercom.sun.star.drawing.XGraphicExportFilter./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/drawing/GraphicExportFilter.hppcom.sun.star.xml.sax.Writercom.sun.star.xml.sax.XWriter./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/xml/sax/Writer.hppcom.sun.star.drawing.ShapeCollection./workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/drawing/ShapeCollection.hppvector::_M_realloc_insertooo:id-listooo:meta_slidex���w���w��sx��Ux���w���w��:x��#x��*N12_GLOBAL__N_19TextFieldE*N12_GLOBAL__N_114FixedTextFieldE*N12_GLOBAL__N_118FixedDateTimeFieldE*N12_GLOBAL__N_111FooterFieldE*N12_GLOBAL__N_117VariableTextFieldE*N12_GLOBAL__N_121VariableDateTimeFieldE@ooo:date-time-field@ooo:footer-field@ooo:header-field@ooo:footer-field@ooo:name@ooo:has-transition@ooo:footer-field@ooo:date-time-field@ooo:background-visibility@ooo:display-name@ooo:has-custom-background@
ooo:master@	ooo:slide@ooo:text_field@UsePositionedCharacters@Opacity@	DTDString@TinyModethis.bInHoldMode = true;
};

ElapsedTime.prototype.releaseTimer = function()
{
this.bInHoldMode = false;
};

ElapsedTime.prototype.getSystemTime = function()
{
return ( getCurrentSystemTime() / 1000.0 );
};

ElapsedTime.prototype.getCurrentTime = function()
{
var nCurrentTime;
if ( !this.aTimeBase )
{
nCurrentTime = this.getSystemTime();
}
else
{
nCurrentTime = this.aTimeBase.getElapsedTimeImpl();
}

assert( ( typeof( nCurrentTime ) === typeof( 0 ) ) && isFinite( nCurrentTime ),
'ElapsedTime.getCurrentTime: assertion failed: nCurrentTime == ' + nCurrentTime );


return nCurrentTime;
};

ElapsedTime.prototype.getElapsedTimeImpl = function()
{
if( this.bInHoldMode || this.bInPauseMode )
{
return this.nFrozenTime;
}

var nCurTime = this.getCurrentTime();
return ( nCurTime - this.nStartTime );
};


/*****
* @libreofficeend
*
* Several parts of the above code are the result of the porting,
* started on August 2011, of the C++ code included in the source files
* placed under the folder '/slideshow/source' and subfolders.
* @source https://cgit.freedesktop.org/libreoffice/core/tree/slideshow/source
*
*/

]]>{
nLag = Math.max( nLag,this.aCurrentActivityWaitingSet[i].calcTimeLag()  );
}

if( nLag > 0.0 )
this.aTimer.adjustTimer( -nLag, true );


while( this.aCurrentActivityWaitingSet.length != 0 )
{
var aActivity = this.aCurrentActivityWaitingSet.shift();
var bReinsert = false;

bReinsert = aActivity.perform();

if( bReinsert )
{
this.aCurrentActivityReinsertSet.push( aActivity );
}
else
{
this.aDequeuedActivitySet.push( aActivity );
}
}

if( this.aCurrentActivityReinsertSet.length != 0 )
{
this.aCurrentActivityWaitingSet = this.aCurrentActivityReinsertSet;
this.aCurrentActivityReinsertSet = [];
}
};

ActivityQueue.prototype.processDequeued = function()
{
var nSize = this.aDequeuedActivitySet.length;
for( var i = 0; i < nSize; ++i )
this.aDequeuedActivitySet[i].dequeued();

this.aDequeuedActivitySet = [];
};

ActivityQueue.prototype.isEmpty = function()
{
return ( ( this.aCurrentActivityWaitingSet.length == 0 ) &&
( this.aCurrentActivityReinsertSet.length == 0 ) );
};

ActivityQueue.prototype.clear = function()
{
aActivityQueueDebugPrinter.print( 'ActivityQueue.clear invoked' );
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].dequeued();
this.aCurrentActivityWaitingSet = [];

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].dequeued();
this.aCurrentActivityReinsertSet = [];
};

ActivityQueue.prototype.endAll = function()
{
aActivityQueueDebugPrinter.print( 'ActivityQueue.endAll invoked' );
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].end();
this.aCurrentActivityWaitingSet = [];

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].end();
this.aCurrentActivityReinsertSet = [];
};

ActivityQueue.prototype.getTimer = function()
{
return this.aTimer;
};

ActivityQueue.prototype.size = function()
{
return ( this.aCurrentActivityWaitingSet.length +
this.aCurrentActivityReinsertSet.length +
this.aDequeuedActivitySet.length );
};


function ElapsedTime( aTimeBase )
{
this.aTimeBase = aTimeBase;
this.nLastQueriedTime = 0.0;
this.nStartTime = this.getCurrentTime();
this.nFrozenTime = 0.0;
this.bInPauseMode = false;
this.bInHoldMode = false;
}


ElapsedTime.prototype.getTimeBase = function()
{
return this.aTimeBase;
};

ElapsedTime.prototype.reset = function()
{
this.nLastQueriedTime = 0.0;
this.nStartTime = this.getCurrentTime();
this.nFrozenTime = 0.0;
this.bInPauseMode = false;
this.bInHoldMode = false;
};

ElapsedTime.prototype.getElapsedTime = function()
{
this.nLastQueriedTime = this.getElapsedTimeImpl();
return this.nLastQueriedTime;
};

ElapsedTime.prototype.pauseTimer = function()
{
this.nFrozenTime = this.getElapsedTimeImpl();
this.bInPauseMode = true;
};

ElapsedTime.prototype.continueTimer = function()
{
this.bInPauseMode = false;

var nPauseDuration = this.getElapsedTimeImpl() - this.nFrozenTime;

this.nStartTime += nPauseDuration;
};

ElapsedTime.prototype.adjustTimer = function( nOffset, bLimitToLastQueriedTime )
{
if( bLimitToLastQueriedTime == undefined )
bLimitToLastQueriedTime = true;

this.nStartTime -= nOffset;

if( this.bInHoldMode || this.bInPauseMode )
this.nFrozenTime += nOffset;
};

ElapsedTime.prototype.holdTimer = function()
{
this.nFrozenTime = this.getElapsedTimeImpl();
{
this.DBG( 'TimerEventQueue.addEvent event(' + aEvent.getId() + ') appended.' );
if( !aEvent )
{
log( 'TimerEventQueue.addEvent: null event' );
return false;
}

var nTime = aEvent.getActivationTime( this.aTimer.getElapsedTime() );
var aEventEntry = new EventEntry( aEvent, nTime );
this.aEventSet.push( aEventEntry );

return true;
};

TimerEventQueue.prototype.forceEmpty = function()
{
this.process_(true);
};


TimerEventQueue.prototype.process = function()
{
this.process_(false);
};

TimerEventQueue.prototype.process_ = function( bFireAllEvents )
{
var nCurrentTime = this.aTimer.getElapsedTime();

while( !this.isEmpty() && ( bFireAllEvents || ( this.aEventSet.top().nActivationTime <= nCurrentTime ) ) )
{
var aEventEntry = this.aEventSet.top();
this.aEventSet.pop();

var aEvent = aEventEntry.aEvent;
if( aEvent.isCharged() )
aEvent.fire();
}
};

TimerEventQueue.prototype.isEmpty = function()
{
return this.aEventSet.isEmpty();
};

TimerEventQueue.prototype.nextTimeout = function()
{
var nTimeout = Number.MAX_VALUE;
var nCurrentTime = this.aTimer.getElapsedTime();
if( !this.isEmpty() )
nTimeout = this.aEventSet.top().nActivationTime - nCurrentTime;
return nTimeout;
};

TimerEventQueue.prototype.clear = function()
{
this.DBG( 'TimerEventQueue.clear invoked' );
this.aEventSet.clear();
};

TimerEventQueue.prototype.getTimer = function()
{
return this.aTimer;
};

TimerEventQueue.prototype.DBG = function( sMessage, nTime )
{
aTimerEventQueueDebugPrinter.print( sMessage, nTime );
};


TimerEventQueue.prototype.insert = function( aEventEntry )
{
var nHoleIndex = this.aEventSet.length;
var nParent = Math.floor( ( nHoleIndex - 1 ) / 2 );

while( ( nHoleIndex > 0 ) && this.aEventSet[ nParent ].compare( aEventEntry ) )
{
this.aEventSet[ nHoleIndex ] = this.aEventSet[ nParent ];
nHoleIndex = nParent;
nParent = Math.floor( ( nHoleIndex - 1 ) / 2 );
}
this.aEventSet[ nHoleIndex ] = aEventEntry;
};


function EventEntry( aEvent, nTime )
{
this.aEvent = aEvent;
this.nActivationTime = nTime;
}


EventEntry.compare = function( aLhsEventEntry, aRhsEventEntry )
{
if ( aLhsEventEntry.nActivationTime > aRhsEventEntry.nActivationTime )
{
return -1;
}
else if ( aLhsEventEntry.nActivationTime < aRhsEventEntry.nActivationTime )
{
return 1;
}
else
{
return 0;
}
};


function ActivityQueue( aTimer )
{
this.aTimer = aTimer;
this.aCurrentActivityWaitingSet = [];
this.aCurrentActivityReinsertSet = [];
this.aDequeuedActivitySet = [];
}


ActivityQueue.prototype.dispose = function()
{
var nSize = this.aCurrentActivityWaitingSet.length;
var i;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityWaitingSet[i].dispose();

nSize = this.aCurrentActivityReinsertSet.length;
for( i = 0; i < nSize; ++i )
this.aCurrentActivityReinsertSet[i].dispose();
};

ActivityQueue.prototype.addActivity = function( aActivity )
{
if( !aActivity )
{
log( 'ActivityQueue.addActivity: activity is not valid' );
return false;
}

this.aCurrentActivityWaitingSet.push( aActivity );
aActivityQueueDebugPrinter.print( 'ActivityQueue.addActivity: activity appended' );
return true;
};

ActivityQueue.prototype.process = function()
{
var nSize = this.aCurrentActivityWaitingSet.length;
var nLag = 0.0;
for( var i = 0; i < nSize; ++i )
this.aFrameSynchronization.synchronize();

this.aActivityQueue.processDequeued();

this.aTimer.releaseTimer();

var bActivitiesLeft = ( ! this.aActivityQueue.isEmpty() );
var bTimerEventsLeft = ( ! this.aTimerEventQueue.isEmpty() );
var bEventsLeft = ( bActivitiesLeft || bTimerEventsLeft );


if( bEventsLeft )
{
var nNextTimeout;
if( bActivitiesLeft )
{
nNextTimeout = MINIMUM_TIMEOUT;
this.aFrameSynchronization.activate();
}
else
{
nNextTimeout = this.aTimerEventQueue.nextTimeout();
if( nNextTimeout < MINIMUM_TIMEOUT )
nNextTimeout = MINIMUM_TIMEOUT;
else if( nNextTimeout > MAXIMUM_TIMEOUT )
nNextTimeout = MAXIMUM_TIMEOUT;
this.aFrameSynchronization.deactivate();
}

this.bIsIdle = false;
window.setTimeout( 'aSlideShow.update()', nNextTimeout * 1000 );
}
else
{
this.bIsIdle = true;
}
};

SlideShow.prototype.dispose = function()
{
this.aTimerEventQueue.clear();
this.aActivityQueue.clear();
this.aNextEffectEventArray = null;
this.aEventMultiplexer = null;
};

SlideShow.prototype.getContext = function()
{
return this.aContext;
};

var aSlideShow = null;


function SlideShowContext( aTimerEventQueue, aEventMultiplexer, aNextEffectEventArray, aInteractiveAnimationSequenceMap, aActivityQueue)
{
this.aTimerEventQueue = aTimerEventQueue;
this.aEventMultiplexer = aEventMultiplexer;
this.aNextEffectEventArray = aNextEffectEventArray;
this.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aActivityQueue = aActivityQueue;
this.bIsSkipping = false;
}


function FrameSynchronization( nFrameDuration )
{
this.nFrameDuration = nFrameDuration;
this.aTimer = new ElapsedTime();
this.nNextFrameTargetTime = 0.0;
this.bIsActive = false;

this.markCurrentFrame();
}


FrameSynchronization.prototype.markCurrentFrame = function()
{
this.nNextFrameTargetTime = this.aTimer.getElapsedTime() + this.nFrameDuration;
};

FrameSynchronization.prototype.synchronize = function()
{
if( this.bIsActive )
{
while( this.aTimer.getElapsedTime() < this.nNextFrameTargetTime )
;
}

this.markCurrentFrame();

};

FrameSynchronization.prototype.activate = function()
{
this.bIsActive = true;
};

FrameSynchronization.prototype.deactivate = function()
{
this.bIsActive = false;
};


function NextEffectEventArray()
{
this.aEventArray = [];
}


NextEffectEventArray.prototype.size = function()
{
return this.aEventArray.length;
};

NextEffectEventArray.prototype.at = function( nIndex )
{
return this.aEventArray[ nIndex ];
};

NextEffectEventArray.prototype.appendEvent = function( aEvent )
{
var nSize = this.size();
for( var i = 0; i < nSize; ++i )
{
if( this.aEventArray[i].getId() == aEvent.getId() )
{
aNextEffectEventArrayDebugPrinter.print( 'NextEffectEventArray.appendEvent: event(' + aEvent.getId() + ') already present' );
return false;
}
}
this.aEventArray.push( aEvent );
aNextEffectEventArrayDebugPrinter.print( 'NextEffectEventArray.appendEvent: event(' + aEvent.getId() + ') appended' );
return true;
};

NextEffectEventArray.prototype.clear = function( )
{
this.aEventArray = [];
};


function TimerEventQueue( aTimer )
{
this.aTimer = aTimer;
this.aEventSet = new PriorityQueue( EventEntry.compare );
}


TimerEventQueue.prototype.addEvent = function( aEvent )
return;
var nNewSlide = nCurSlide - 1;
this.displaySlide( nNewSlide, true );
this.skipAllEffects();
};

SlideShow.prototype.rewindAllEffects = function()
{
if( !this.hasAnyEffectStarted() )
{
this.rewindToPreviousSlide();
return;
}

while( this.hasAnyEffectStarted() )
{
this.rewindEffect();
}
};

SlideShow.prototype.exitSlideShowInApp = function()
{
if (window.webkit !== undefined &&
window.webkit.messageHandlers !== undefined &&
window.webkit.messageHandlers.lool !== undefined)
window.webkit.messageHandlers.lool.postMessage('EXITSLIDESHOW', '*');
}

SlideShow.prototype.displaySlide = function( nNewSlide, bSkipSlideTransition )
{
var aMetaDoc = theMetaDoc;
var nSlides = aMetaDoc.nNumberOfSlides;
if( nNewSlide < 0 && nSlides > 0 )
nNewSlide = nSlides - 1;
else if( nNewSlide >= nSlides ) {
nNewSlide = 0;
this.exitSlideShowInApp();
}

if( ( currentMode === INDEX_MODE ) && ( nNewSlide === nCurSlide ) )
{
aMetaDoc.getCurrentSlide().show();
return;
}

if( this.isTransitionPlaying() )
{
this.skipTransition();
}

var nOldSlide = nCurSlide;
if( nOldSlide !== undefined )
{
var oldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
if( this.isEnabled() )
{
if( oldMetaSlide.aSlideAnimationsHandler.isAnimated() )
{
oldMetaSlide.aSlideAnimationsHandler.end( bSkipSlideTransition );

this.dispose();
}
}

if( this.automaticAdvanceTimeout !== null )
{
window.clearTimeout( this.automaticAdvanceTimeout );
this.automaticAdvanceTimeout = null;
}
}

this.notifySlideStart( nNewSlide, nOldSlide );

if( this.isEnabled() && !bSkipSlideTransition  )
{
if ( ( ( nOldSlide !== undefined ) &&
( ( nNewSlide > nOldSlide ) ||
( ( nNewSlide == 0) && ( nOldSlide == (aMetaDoc.nNumberOfSlides - 1) ) ) ) ) ||
(  ( nOldSlide === undefined ) &&  ( nNewSlide == 0) )  // for transition on first slide
)
{

var aOldMetaSlide = null;
if( nOldSlide === undefined ) // for transition on first slide
{
aOldMetaSlide = aMetaDoc.theMetaDummySlide;
}
else
{
aOldMetaSlide = aMetaDoc.aMetaSlideSet[nOldSlide];
}
var aNewMetaSlide = aMetaDoc.aMetaSlideSet[nNewSlide];

var aSlideTransitionHandler = aNewMetaSlide.aTransitionHandler;
if( aSlideTransitionHandler && aSlideTransitionHandler.isValid() )
{
var sRef = 'url(#' + aPresentationClipPathShrinkId + ')';
aOldMetaSlide.slideElement.setAttribute( 'clip-path', sRef );

if( nOldSlide > nNewSlide )
{
this.aSlideViewElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', this.aSlideViewElement, 'href', '#' + aOldMetaSlide.slideContainerId );
aNewMetaSlide.aVisibilityStatusElement.parentNode.insertBefore( this.aSlideViewElement, aNewMetaSlide.aVisibilityStatusElement );
aOldMetaSlide.hide();
}

var aLeavingSlide = aOldMetaSlide;
var aEnteringSlide = aNewMetaSlide;
var aTransitionEndEvent = makeEvent( bind2( this.notifyTransitionEnd, this, nNewSlide ) );

var aTransitionActivity =
this.createSlideTransition( aSlideTransitionHandler, aLeavingSlide,
aEnteringSlide, aTransitionEndEvent );

if( aTransitionActivity )
{
this.bIsTransitionRunning = true;
this.aActivityQueue.addActivity( aTransitionActivity );
this.update();
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}
}
else
{
this.notifyTransitionEnd( nNewSlide );
}

};

SlideShow.prototype.update = function()
{
this.aTimer.holdTimer();

this.aTimerEventQueue.process();
this.aActivityQueue.process();


SlideShow.prototype.skipAllEffects = function()
{
if( this.bIsSkippingAll )
return true;

this.bIsSkippingAll = true;

if( this.isTransitionPlaying() )
{
this.skipTransition();
}

if( this.isAnyEffectPlaying() )
{
this.skipAllPlayingEffects();
}
else if( !this.aNextEffectEventArray
|| ( this.nCurrentEffect >= this.aNextEffectEventArray.size() ) )
{
this.bIsSkippingAll = false;
return false;
}

while( this.nCurrentEffect < this.aNextEffectEventArray.size() )
{
this.skipNextEffect();
}
this.bIsSkippingAll = false;
return true;
};

SlideShow.prototype.rewindTransition = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

this.bIsRewinding = true;
this.aActivityQueue.endAll();
this.update();
this.bIsRewinding = false;
};

SlideShow.prototype.rewindEffect = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

if( this.automaticAdvanceTimeout !== null && !this.automaticAdvanceTimeout['rewindedEffect'] )
{
window.clearTimeout( this.automaticAdvanceTimeout );
this.automaticAdvanceTimeout = { 'rewindedEffect': this.nCurrentEffect };
}

if( !this.hasAnyEffectStarted() )
{
this.rewindToPreviousSlide();
return;
}

this.bIsRewinding = true;

var nFirstPlayingEffectIndex = undefined;

var i = 0;
for( ; i < this.aStartedEffectList.length; ++i )
{
var aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
nFirstPlayingEffectIndex = i;
break;
}
}

if( nFirstPlayingEffectIndex !== undefined )
{
i = this.aStartedEffectList.length - 1;
for( ; i >= nFirstPlayingEffectIndex; --i )
{
aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindCurrentEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindRunningInteractiveEffectEvent( aEffect.getId() );
}
}
else if( aEffect.isEnded() )
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindLastEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( aEffect.getId() );
}
}
}
this.update();

i = this.aStartedEffectList.length - 1;
for( ; i >= nFirstPlayingEffectIndex; --i )
{
aEffect = this.aStartedEffectList.pop();
if( !aEffect.isMainEffect() )
delete this.aStartedEffectIndexMap[ aEffect.getId() ];
}
}
else  // there is no playing effect
{
aEffect = this.aStartedEffectList.pop();
if( !aEffect.isMainEffect() )
delete this.aStartedEffectIndexMap[ aEffect.getId() ];
if( aEffect.isEnded() )  // Well that is almost an assertion.
{
if( aEffect.isMainEffect() )
{
this.aEventMultiplexer.notifyRewindLastEffectEvent();
if( this.nCurrentEffect > 0 )
--this.nCurrentEffect;
}
else
{
this.aEventMultiplexer.notifyRewindEndedInteractiveEffectEvent( aEffect.getId() );
}
}
this.update();
}

this.bIsRewinding = false;
};

SlideShow.prototype.rewindToPreviousSlide = function()
{
if( this.isTransitionPlaying() )
{
this.rewindTransition();
return;
}
if( this.isAnyEffectPlaying() )
theMetaDoc.setCurrentSlide(nSlideIndex);

if( this.aSlideViewElement )
{
theMetaDoc.getCurrentSlide().aVisibilityStatusElement.parentNode.removeChild( this.aSlideViewElement );
this.aSlideViewElement = null;
}
if( this.isEnabled() )
{
this.dispose();

var aCurrentSlide = theMetaDoc.getCurrentSlide();
if( aCurrentSlide.aSlideAnimationsHandler.elementsParsed() )
{
aCurrentSlide.aSlideAnimationsHandler.start();
this.aEventMultiplexer.registerAnimationsEndHandler( bind2( SlideShow.prototype.notifyAnimationsEnd, this ) );
}
else
this.notifyAnimationsEnd();

this.update();
}
else
this.notifyAnimationsEnd();
};

SlideShow.prototype.notifyInteractiveAnimationSequenceStart = function( nNodeId )
{
++this.nTotalInteractivePlayingEffects;
var aEffect = new Effect( nNodeId );
aEffect.start();
this.aStartedEffectIndexMap[ nNodeId ] = this.aStartedEffectList.length;
this.aStartedEffectList.push( aEffect );
};

SlideShow.prototype.notifyInteractiveAnimationSequenceEnd = function( nNodeId )
{
assert( this.isInteractiveEffectPlaying(),
'SlideShow.notifyInteractiveAnimationSequenceEnd: no interactive effect playing.' );

this.aStartedEffectList[ this.aStartedEffectIndexMap[ nNodeId ] ].end();
--this.nTotalInteractivePlayingEffects;
};

SlideShow.prototype.nextEffect = function()
{
if( !this.isEnabled() )
return false;

if( this.isTransitionPlaying() )
{
this.skipTransition();
return true;
}

if( this.isAnyEffectPlaying() )
{
this.skipAllPlayingEffects();
return true;
}

if( !this.aNextEffectEventArray )
return false;

if( this.nCurrentEffect >= this.aNextEffectEventArray.size() )
return false;

this.notifyNextEffectStart();

this.aNextEffectEventArray.at( this.nCurrentEffect ).fire();
++this.nCurrentEffect;
this.update();
return true;
};

SlideShow.prototype.skipTransition  = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return;

this.bIsSkipping = true;

this.aActivityQueue.endAll();
this.aTimerEventQueue.forceEmpty();
this.aActivityQueue.endAll();
this.update();
this.bIsSkipping = false;
};

SlideShow.prototype.skipAllPlayingEffects  = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return true;

this.bIsSkipping = true;
for( var i = 0; i < this.aStartedEffectList.length; ++i )
{
var aEffect = this.aStartedEffectList[i];
if( aEffect.isPlaying() )
{
if( aEffect.isMainEffect() )
this.aEventMultiplexer.notifySkipEffectEvent();
else
this.aEventMultiplexer.notifySkipInteractiveEffectEvent( aEffect.getId() );
}
}
this.update();
this.bIsSkipping = false;
return true;
};

SlideShow.prototype.skipNextEffect = function()
{
if( this.bIsSkipping || this.bIsRewinding )
return true;

assert( !this.isAnyEffectPlaying(),
'SlideShow.skipNextEffect' );

if( !this.aNextEffectEventArray )
return false;

if( this.nCurrentEffect >= this.aNextEffectEventArray.size() )
return false;

this.notifyNextEffectStart();

this.bIsSkipping = true;
this.aNextEffectEventArray.at( this.nCurrentEffect ).fire();
this.aEventMultiplexer.notifySkipEffectEvent();
++this.nCurrentEffect;
this.update();
this.bIsSkipping = false;
return true;
};

SlideShow.prototype.skipPlayingOrNextEffect = function()
{
if( this.isTransitionPlaying() )
{
this.skipTransition();
return true;
}

if( this.isAnyEffectPlaying() )
return this.skipAllPlayingEffects();
else
return this.skipNextEffect();
};

var nDuration = 0.001;
if( aSlideTransitionHandler.getDuration().isValue() )
{
nDuration = aSlideTransitionHandler.getDuration().getValue();
}
else
{
log( 'SlideShow.createSlideTransition: duration is not a number' );
}

var aCommonParameterSet = new ActivityParamSet();
aCommonParameterSet.aEndEvent = aTransitionEndEvent;
aCommonParameterSet.aTimerEventQueue = this.aTimerEventQueue;
aCommonParameterSet.aActivityQueue = this.aActivityQueue;
aCommonParameterSet.nMinDuration = nDuration;
aCommonParameterSet.nMinNumberOfFrames = aSlideTransitionHandler.getMinFrameCount();
aCommonParameterSet.nSlideWidth = WIDTH;
aCommonParameterSet.nSlideHeight = HEIGHT;

return new SimpleActivity( aCommonParameterSet, aSlideTransition, FORWARD );

};

SlideShow.prototype.isEnabled = function()
{
return this.bIsEnabled;
};

SlideShow.prototype.isRunning = function()
{
return !this.bIsIdle;
};

SlideShow.prototype.isTransitionPlaying = function()
{
return this.bIsTransitionRunning;
};

SlideShow.prototype.isMainEffectPlaying = function()
{
return this.bIsNextEffectRunning;
};

SlideShow.prototype.isInteractiveEffectPlaying = function()
{
return ( this.nTotalInteractivePlayingEffects > 0 );
};

SlideShow.prototype.isAnyEffectPlaying = function()
{
return ( this.isMainEffectPlaying() || this.isInteractiveEffectPlaying() );
};

SlideShow.prototype.hasAnyEffectStarted = function()
{
return ( this.aStartedEffectList.length > 0 );
};

SlideShow.prototype.notifyNextEffectStart = function()
{
assert( !this.bIsNextEffectRunning,
'SlideShow.notifyNextEffectStart: an effect is already started.' );
this.bIsNextEffectRunning = true;
this.aEventMultiplexer.registerNextEffectEndHandler( bind2( SlideShow.prototype.notifyNextEffectEnd, this ) );
var aEffect = new Effect();
aEffect.start();
this.aStartedEffectIndexMap[ -1 ] = this.aStartedEffectList.length;
this.aStartedEffectList.push( aEffect );

var aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nCurSlide].aSlideAnimationsHandler.aAnimatedElementMap;
for( var sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifyNextEffectStart( this.nCurrentEffect );
};

SlideShow.prototype.notifyNextEffectEnd = function()
{
assert( this.bIsNextEffectRunning,
'SlideShow.notifyNextEffectEnd: effect already ended.' );
this.bIsNextEffectRunning = false;

this.aStartedEffectList[ this.aStartedEffectIndexMap[ -1 ] ].end();
if( this.automaticAdvanceTimeout !== null )
{
if( this.automaticAdvanceTimeout['rewindedEffect'] === this.nCurrentEffect )
{
this.automaticAdvanceTimeout = null;
this.notifyAnimationsEnd();
}
}
};

SlideShow.prototype.notifyAnimationsEnd = function()
{
if( nCurSlide + 1 === theMetaDoc.nNumberOfSlides )
return;

assert (this.automaticAdvanceTimeout === null,
'SlideShow.notifyAnimationsEnd: Timeout already set.')

var nTimeout = Math.ceil(theMetaDoc.aMetaSlideSet[nCurSlide].fDuration * 1000);
if( nTimeout < 0 )
return;

this.automaticAdvanceTimeout = window.setTimeout('switchSlide(1, false)', nTimeout);
};

SlideShow.prototype.notifySlideStart = function( nNewSlideIndex, nOldSlideIndex )
{
this.nCurrentEffect = 0;
this.bIsRewinding = false;
this.bIsSkipping = false;
this.bIsSkippingAll = false;
this.nTotalInteractivePlayingEffects = 0;
this.aStartedEffectList = [];
this.aStartedEffectIndexMap = {};
this.aStartedEffectIndexMap[ -1 ] = undefined;

var aAnimatedElementMap;
var sId;
if( nOldSlideIndex !== undefined )
{
aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nOldSlideIndex].aSlideAnimationsHandler.aAnimatedElementMap;
for( sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifySlideEnd();
}

aAnimatedElementMap = theMetaDoc.aMetaSlideSet[nNewSlideIndex].aSlideAnimationsHandler.aAnimatedElementMap;
for( sId in aAnimatedElementMap )
aAnimatedElementMap[ sId ].notifySlideStart( this.aContext );
};

SlideShow.prototype.notifyTransitionEnd = function( nSlideIndex )
{
if( theMetaDoc.getCurrentSlide() )
{
var sRef = 'url(#' + aPresentationClipPathId + ')';
theMetaDoc.getCurrentSlide().slideElement.setAttribute('clip-path', sRef);
}

this.bIsTransitionRunning = false;
if( this.bIsRewinding )
{
theMetaDoc.aMetaSlideSet[nSlideIndex].hide();
var nIndex = nCurSlide !== undefined ? nCurSlide : -1;
this.displaySlide( nIndex, true );
this.skipAllEffects();
this.bIsRewinding = false;
return;
}


}


function evalValuesAttribute( aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight )
{
var width = aBBox.width / nSlideWidth;
var height = aBBox.height / nSlideHeight;
var x = ( aBBox.x + aBBox.width / 2 ) / nSlideWidth;
var y = ( aBBox.y + aBBox.height / 2 ) / nSlideHeight;

var reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g;

for( var i = 0; i < aValueSet.length; ++i )
{
var sValue = aValueSet[i];
sValue = sValue.replace(reMath, 'Math.$&');
sValue = sValue.replace(/pi(?!\w)/g, 'Math.PI');
sValue = sValue.replace(/e(?!\w)/g, 'Math.E');
var aValue =  eval( sValue );
aValueList.push( aValue );
}
}


var BACKWARD    = 0;
var FORWARD     = 1;

var MAXIMUM_FRAME_COUNT                 = 60;
var MINIMUM_TIMEOUT                     = 1.0 / MAXIMUM_FRAME_COUNT;
var MAXIMUM_TIMEOUT                     = 4.0;
var MINIMUM_FRAMES_PER_SECONDS          = 10;
var PREFERRED_FRAMES_PER_SECONDS        = 50;
var PREFERRED_FRAME_RATE                = 1.0 / PREFERRED_FRAMES_PER_SECONDS;


function Effect( nId )
{
this.nId = ( typeof( nId ) === typeof( 1 ) ) ? nId : -1;
this.eState = Effect.NOT_STARTED;
}
Effect.NOT_STARTED = 0;
Effect.PLAYING = 1;
Effect.ENDED = 2;

Effect.prototype.getId = function()
{
return this.nId;
};

Effect.prototype.isMainEffect = function()
{
return ( this.nId === -1 );
};

Effect.prototype.isPlaying = function()
{
return ( this.eState === Effect.PLAYING );
};

Effect.prototype.isEnded = function()
{
return ( this.eState === Effect.ENDED );
};

Effect.prototype.start = function()
{
assert( this.eState === Effect.NOT_STARTED, 'Effect.start: wrong state.' );
this.eState = Effect.PLAYING;
};

Effect.prototype.end = function()
{
assert( this.eState === Effect.PLAYING, 'Effect.end: wrong state.' );
this.eState = Effect.ENDED;
};


function SlideShow()
{
this.aTimer = new ElapsedTime();
this.aFrameSynchronization = new FrameSynchronization( PREFERRED_FRAME_RATE );
this.aTimerEventQueue = new TimerEventQueue( this.aTimer );
this.aActivityQueue = new ActivityQueue( this.aTimer );
this.aNextEffectEventArray = null;
this.aInteractiveAnimationSequenceMap = null;
this.aEventMultiplexer = null;

this.aContext = new SlideShowContext( this.aTimerEventQueue,
this.aEventMultiplexer,
this.aNextEffectEventArray,
this.aInteractiveAnimationSequenceMap,
this.aActivityQueue );
this.bIsIdle = true;
this.bIsEnabled = true;
this.bNoSlideTransition = false;
this.bIsTransitionRunning = false;

this.nCurrentEffect = 0;
this.bIsNextEffectRunning = false;
this.bIsRewinding = false;
this.bIsSkipping = false;
this.bIsSkippingAll = false;
this.nTotalInteractivePlayingEffects = 0;
this.aStartedEffectList = [];
this.aStartedEffectIndexMap = {};
this.aStartedEffectIndexMap[ -1 ] = undefined;
this.automaticAdvanceTimeout = null;
}

SlideShow.prototype.setSlideEvents = function( aNextEffectEventArray,
aInteractiveAnimationSequenceMap,
aEventMultiplexer )
{
if( !aNextEffectEventArray )
log( 'SlideShow.setSlideEvents: aNextEffectEventArray is not valid' );

if( !aInteractiveAnimationSequenceMap )
log( 'SlideShow.setSlideEvents:aInteractiveAnimationSequenceMap  is not valid' );

if( !aEventMultiplexer )
log( 'SlideShow.setSlideEvents: aEventMultiplexer is not valid' );

this.aContext.aNextEffectEventArray = aNextEffectEventArray;
this.aNextEffectEventArray = aNextEffectEventArray;
this.aContext.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aInteractiveAnimationSequenceMap = aInteractiveAnimationSequenceMap;
this.aContext.aEventMultiplexer = aEventMultiplexer;
this.aEventMultiplexer = aEventMultiplexer;
this.nCurrentEffect = 0;
};

SlideShow.prototype.createSlideTransition = function( aSlideTransitionHandler, aLeavingSlide, aEnteringSlide, aTransitionEndEvent )
{
if( !aEnteringSlide )
{
log( 'SlideShow.createSlideTransition: entering slide element is not valid.' );
return null;
}

if( this.bNoSlideTransition ) return null;

var aAnimatedLeavingSlide = null;
if( aLeavingSlide )
aAnimatedLeavingSlide = new AnimatedSlide( aLeavingSlide );
var aAnimatedEnteringSlide = new AnimatedSlide( aEnteringSlide );

var aSlideTransition = aSlideTransitionHandler.createSlideTransition( aAnimatedLeavingSlide, aAnimatedEnteringSlide );
if( !aSlideTransition ) return null;

log( 'createActivity: unexpected calculation mode: ' + eCalcMode );
case CALC_MODE_PACED :
case CALC_MODE_SPLINE :
case CALC_MODE_LINEAR:
return createValueListActivity( aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
LinearValueListActivity,
bAccumulate,
eValueType );
}
}
else
{
switch( eCalcMode )
{
case CALC_MODE_DISCRETE:
log( 'createActivity: discrete calculation case not yet implemented' );
aActivityParamSet.aWakeupEvent =
new WakeupEvent( aActivityParamSet.aTimerEventQueue.getTimer(),
aActivityParamSet.aActivityQueue );
return createFromToByActivity(  aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
DiscreteFromToByActivity,
bAccumulate,
eValueType );

default:
log( 'createActivity: unexpected calculation mode: ' + eCalcMode );
case CALC_MODE_PACED :
case CALC_MODE_SPLINE :
case CALC_MODE_LINEAR:
return createFromToByActivity(  aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
LinearFromToByActivity,
bAccumulate,
eValueType );
}
}
}


function createValueListActivity( aActivityParamSet, aAnimationNode, aAnimation,
aInterpolator, ClassTemplateInstance, bAccumulate, eValueType )
{
var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aOperatorSet = aOperatorSetMap[ eValueType ];
assert( aOperatorSet, 'createValueListActivity: no operator set found' );

var aValueSet = aAnimationNode.getValues();

var aValueList = [];

extractAttributeValues( eValueType,
aValueList,
aValueSet,
aAnimatedElement.getBaseBBox(),
aActivityParamSet.nSlideWidth,
aActivityParamSet.nSlideHeight );

for( var i = 0; i < aValueList.length; ++i )
{
ANIMDBG.print( 'createValueListActivity: value[' + i + '] = ' + aValueList[i] );
}

return new ClassTemplateInstance( aValueList, aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate );
}


function createFromToByActivity( aActivityParamSet, aAnimationNode, aAnimation,
aInterpolator, ClassTemplateInstance, bAccumulate, eValueType )
{

var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aOperatorSet = aOperatorSetMap[ eValueType ];
assert( aOperatorSet, 'createFromToByActivity: no operator set found' );

var aValueSet = [];
aValueSet[0] = aAnimationNode.getFromValue();
aValueSet[1] = aAnimationNode.getToValue();
aValueSet[2] = aAnimationNode.getByValue();

ANIMDBG.print( 'createFromToByActivity: value type: ' + aValueTypeOutMap[eValueType] +
', aFrom = ' + aValueSet[0] +
', aTo = ' + aValueSet[1] +
', aBy = ' + aValueSet[2] );

var aValueList = [];

extractAttributeValues( eValueType,
aValueList,
aValueSet,
aAnimatedElement.getBaseBBox(),
aActivityParamSet.nSlideWidth,
aActivityParamSet.nSlideHeight );

ANIMDBG.print( 'createFromToByActivity: ' +
', aFrom = ' + aValueList[0] +
', aTo = ' + aValueList[1] +
', aBy = ' + aValueList[2] );

return new ClassTemplateInstance( aValueList[0], aValueList[1], aValueList[2],
aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate );
}


function extractAttributeValues( eValueType, aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight )
{
var i;
switch( eValueType )
{
case NUMBER_PROPERTY :
evalValuesAttribute( aValueList, aValueSet, aBBox, nSlideWidth, nSlideHeight );
break;
case BOOL_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
var aValue = booleanParser( aValueSet[i] );
aValueList.push( aValue );
}
break;
case STRING_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValueList.push( aValueSet[i] );
}
break;
case ENUM_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValueList.push( aValueSet[i] );
}
break;
case COLOR_PROPERTY :
for( i = 0; i < aValueSet.length; ++i )
{
aValue = colorParser( aValueSet[i] );
aValueList.push( aValue );
}
break;
default:
log( 'createValueListActivity: unexpected value type: ' + eValueType );
}
{
if( this.aAnimation )
this.aAnimation.end();
};

ValueListActivity.prototype.performContinuousHook = function( nIndex, nFractionalIndex, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.performContinuousHook: activity disposed or not valid animation' );
return;
}

assert( ( nIndex + 1 ) < this.aValueList.length,
'ValueListActivity.performContinuousHook: assertion (nIndex + 1 < this.aValueList.length) failed' );


var aValue = this.aInterpolator( this.aValueList[ nIndex ],
this.aValueList[ nIndex+1 ],
nFractionalIndex );

if( this.bCumulative )
{
aValue = this.add( aValue, this.scale( nRepeatCount, this.aLastValue ) );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
};

ValueListActivity.prototype.performDiscreteHook = function( nFrame, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.performDiscreteHook: activity disposed or not valid animation' );
return;
}

assert( nFrame < this.aValueList.length,
'ValueListActivity.performDiscreteHook: assertion ( nFrame < this.aValueList.length) failed' );

var aValue = this.aValueList[nFrame];

if( this.bCumulative )
{
aValue = this.add( aValue, this.scale( nRepeatCount, this.aLastValue ) );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
};

ValueListActivity.prototype.performEnd = function()
{
if( this.aAnimation )
{
var aValue = this.aFormula ? this.aFormula( this.aLastValue ) : this.aLastValue;
this.aAnimation.perform( aValue );
}
};

ValueListActivity.prototype.dispose = function()
{
ValueListActivity.superclass.dispose.call( this );
};


return ValueListActivity;
}


var LinearValueListActivity = instantiate( ValueListActivityTemplate, ContinuousKeyTimeActivityBase );
var DiscreteValueListActivity = instantiate( ValueListActivityTemplate, DiscreteActivityBase );


function createActivity( aActivityParamSet, aAnimationNode, aAnimation, aInterpolator )
{
var eCalcMode = aAnimationNode.getCalcMode();

var sAttributeName = aAnimationNode.getAttributeName();
var aAttributeProp = aAttributeMap[ sAttributeName ];

var eValueType = aAttributeProp[ 'type' ];
var eValueSubtype = aAttributeProp[ 'subtype' ];

if( ! aInterpolator )
{
aInterpolator = aInterpolatorHandler.getInterpolator( eCalcMode,
eValueType,
eValueSubtype );
}

var bAccumulate = ( aAnimationNode.getAccumulate() === ACCUMULATE_MODE_SUM )
&& !( eValueType === BOOL_PROPERTY ||
eValueType === STRING_PROPERTY ||
eValueType === ENUM_PROPERTY );

if( aAnimationNode.getFormula() )
{
var sFormula =  aAnimationNode.getFormula();
var reMath = /abs|sqrt|asin|acos|atan|sin|cos|tan|exp|log|min|max/g;
sFormula = sFormula.replace(reMath, 'Math.$&');
sFormula = sFormula.replace(/pi(?!\w)/g, 'Math.PI');
sFormula = sFormula.replace(/e(?!\w)/g, 'Math.E');
sFormula = sFormula.replace(/\$/g, '__PARAM0__');

var aAnimatedElement = aAnimationNode.getAnimatedElement();
var aBBox = aAnimatedElement.getBaseBBox();

var width = aBBox.width / aActivityParamSet.nSlideWidth;
var height = aBBox.height / aActivityParamSet.nSlideHeight;
var x = ( aBBox.x + aBBox.width / 2 ) / aActivityParamSet.nSlideWidth;
var y = ( aBBox.y + aBBox.height / 2 ) / aActivityParamSet.nSlideHeight;

aActivityParamSet.aFormula = function( __PARAM0__ ) {

return eval(sFormula);
};
}

aActivityParamSet.aDiscreteTimes = aAnimationNode.getKeyTimes();

var aValueSet = aAnimationNode.getValues();
var nValueSetSize = aValueSet.length;

if( nValueSetSize != 0 )
{

if( aActivityParamSet.aDiscreteTimes.length == 0 )
{
for( var i = 0; i < nValueSetSize; ++i )
aActivityParamSet.aDiscreteTimes[i].push( i / nValueSetSize );
}

switch( eCalcMode )
{
case CALC_MODE_DISCRETE:
aActivityParamSet.aWakeupEvent =
new WakeupEvent( aActivityParamSet.aTimerEventQueue.getTimer(),
aActivityParamSet.aActivityQueue );

return createValueListActivity( aActivityParamSet,
aAnimationNode,
aAnimation,
aInterpolator,
DiscreteValueListActivity,
bAccumulate,
eValueType );

default:
this.aPreviousValue = this.aStartValue;
this.aEndValue = this.aTo;
}
else if( this.aBy )
{
this.aStartValue = aAnimationStartValue;

this.aEndValue = this.add( this.aStartValue, this.aBy );
}
}

ANIMDBG.print( 'FromToByActivity.startAnimation: aStartValue = ' + this.aStartValue + ', aEndValue = ' + this.aEndValue );
};

FromToByActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();
};

FromToByActivity.prototype.performContinuousHook = function( nModifiedTime, nRepeatCount )
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'FromToByActivity.performContinuousHook: activity disposed or not valid animation' );
return;
}


if( this.bDynamicStartValue )
{
if( this.nIteration != nRepeatCount )
{
this.nIteration = nRepeatCount;
this.aStartInterpolationValue =  this.aStartValue;
}
else
{
var aActualValue = this.aAnimation.getUnderlyingValue();
if( !this.equal( aActualValue, this.aPreviousValue ) )
this.aStartInterpolationValue = aActualValue;
}
}

var aValue = this.aInterpolator( this.aStartInterpolationValue,
this.aEndValue, nModifiedTime );

if( this.bCumulative && !this.bDynamicStartValue )
{
aValue = this.add( this.scale( nRepeatCount, this.aEndValue ), aValue );
}

aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );

if( this.bDynamicStartValue )
{
this.aPreviousValue = this.aAnimation.getUnderlyingValue();
}

};

FromToByActivity.prototype.performDiscreteHook = function( /*nFrame, nRepeatCount*/ )
{
if (this.isDisposed() || !this.aAnimation) {
log('FromToByActivity.performDiscreteHook: activity disposed or not valid animation');
return;
}
};

FromToByActivity.prototype.performEnd = function()
{
if( this.aAnimation )
{
var aValue = this.isAutoReverse() ? this.aStartValue : this.aEndValue;
aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform( aValue );
}
};

FromToByActivity.prototype.dispose = function()
{
FromToByActivity.superclass.dispose.call( this );
};


return FromToByActivity;
}


var LinearFromToByActivity = instantiate( FromToByActivityTemplate, ContinuousActivityBase );
var DiscreteFromToByActivity = instantiate( FromToByActivityTemplate, DiscreteActivityBase );


function  ValueListActivityTemplate( BaseType ) // template parameter
{

function ValueListActivity( aValueList, aActivityParamSet,
aAnimation, aInterpolator,
aOperatorSet, bAccumulate )
{
assert( aAnimation, 'ValueListActivity constructor: invalid animation object' );
assert( aValueList.length != 0, 'ValueListActivity: value list is empty' );

ValueListActivity.superclass.constructor.call( this, aActivityParamSet );

this.aValueList = aValueList;
this.aAnimation = aAnimation;
this.aInterpolator = aInterpolator;
this.add = aOperatorSet.add;
this.scale = aOperatorSet.scale;
this.bCumulative = bAccumulate;
this.aLastValue = this.aValueList[ this.aValueList.length - 1 ];
this.aFormula = aActivityParamSet.aFormula;
}
extend( ValueListActivity, BaseType );

ValueListActivity.prototype.activate = function( aEndEvent )
{
ValueListActivity.superclass.activate.call( this, aEndEvent );
for( var i = 0; i < this.aValueList.length; ++i )
{
ANIMDBG.print( 'createValueListActivity: value[' + i + '] = ' + this.aValueList[i] );
}
};

ValueListActivity.prototype.initAnimatedElement = function()
{
if( this.aAnimation )
{
var aValue = this.aValueList[0];
aValue = this.aFormula ? this.aFormula( aValue ) : aValue;
this.aAnimation.perform(aValue);
}
};

ValueListActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'ValueListActivity.startAnimation: activity disposed or not valid animation' );
return;
}

ValueListActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );
};

ValueListActivity.prototype.endAnimation = function()


function ContinuousActivityBase( aCommonParamSet )
{
ContinuousActivityBase.superclass.constructor.call( this, aCommonParamSet );

}
extend( ContinuousActivityBase, SimpleContinuousActivityBase );


ContinuousActivityBase.prototype.performContinuousHook = function( /*nModifiedTime, nRepeatCount*/ )
{
throw ( 'ContinuousActivityBase.performContinuousHook: abstract method invoked' );
};

ContinuousActivityBase.prototype.simplePerform = function( nSimpleTime, nRepeatCount )
{
this.performContinuousHook( this.calcAcceleratedTime( nSimpleTime ), nRepeatCount );
};


function SimpleActivity( aCommonParamSet, aNumberAnimation, eDirection )
{
assert( ( eDirection == BACKWARD ) || ( eDirection == FORWARD ),
'SimpleActivity constructor: animation direction is not valid' );

assert( aNumberAnimation, 'SimpleActivity constructor: animation object is not valid' );

SimpleActivity.superclass.constructor.call( this, aCommonParamSet );

this.aAnimation = aNumberAnimation;
this.nDirection = ( eDirection == FORWARD ) ? 1.0 : 0.0;
}
extend( SimpleActivity, ContinuousActivityBase );


SimpleActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation )
return;

ANIMDBG.print( 'SimpleActivity.startAnimation invoked' );
SimpleActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );
};

SimpleActivity.prototype.endAnimation = function()
{
if( this.aAnimation )
this.aAnimation.end();

};

SimpleActivity.prototype.performContinuousHook = function( nModifiedTime /*, nRepeatCount*/ )
{

if( this.isDisposed() || !this.aAnimation )
return;

var nT = 1.0 - this.nDirection + nModifiedTime * ( 2.0*this.nDirection - 1.0 );
this.aAnimation.perform( nT );
};

SimpleActivity.prototype.performEnd = function()
{
if( this.aAnimation )
this.aAnimation.perform( this.nDirection );
};


function FromToByActivityTemplate( BaseType ) // template parameter
{

function FromToByActivity( aFromValue, aToValue, aByValue,
aActivityParamSet, aAnimation,
aInterpolator, aOperatorSet, bAccumulate )
{
assert( aAnimation, 'FromToByActivity constructor: invalid animation object' );
assert( ( aToValue != undefined ) || ( aByValue != undefined ),
'FromToByActivity constructor: one of aToValue or aByValue must be valid' );

FromToByActivity.superclass.constructor.call( this, aActivityParamSet );

this.aFrom = aFromValue;
this.aTo = aToValue;
this.aBy = aByValue;
this.aStartValue = null;
this.aEndValue = null;
this.aPreviousValue = null;
this.aStartInterpolationValue = null;
this.aAnimation = aAnimation;
this.aInterpolator = aInterpolator;
this.equal = aOperatorSet.equal;
this.add = aOperatorSet.add;
this.scale = aOperatorSet.scale;
this.bDynamicStartValue = false;
this.nIteration = 0;
this.bCumulative = bAccumulate;
this.aFormula = aActivityParamSet.aFormula;
}
extend( FromToByActivity, BaseType );

FromToByActivity.prototype.initAnimatedElement = function()
{
if( this.aAnimation && this.aFrom )
{
var aValue = this.aFormula ? this.aFormula( this.aFrom ) : this.aFrom;
this.aAnimation.perform(aValue);
}
};

FromToByActivity.prototype.startAnimation = function()
{
if( this.isDisposed() || !this.aAnimation  )
{
log( 'FromToByActivity.startAnimation: activity disposed or not valid animation' );
return;
}

FromToByActivity.superclass.startAnimation.call( this );

this.aAnimation.start( this.getTargetElement() );


var aAnimationStartValue = this.aAnimation.getUnderlyingValue();

if( this.aFrom )
{
if( this.aTo )
{
this.aStartValue = this.aFrom;
this.aEndValue = this.aTo;
}
else if( this.aBy )
{
this.aStartValue = this.aFrom;

this.aEndValue = this.add( this.aStartValue, this.aBy );
}
}
else
{
this.aStartValue = aAnimationStartValue;
this.aStartInterpolationValue = this.aStartValue;

if( this.aTo )
{

this.bDynamicStartValue = true;
this.nCurrPerformCalls = 0;

}
extend( SimpleContinuousActivityBase, ActivityBase );


SimpleContinuousActivityBase.prototype.startAnimation = function()
{
this.aTimer.reset();
};

SimpleContinuousActivityBase.prototype.calcTimeLag = function()
{
SimpleContinuousActivityBase.superclass.calcTimeLag.call( this );

if( !this.isActive() )
return 0.0;

var nCurrElapsedTime = this.aTimer.getElapsedTime();


var nFractionElapsedTime = nCurrElapsedTime / this.nMinSimpleDuration;

var nFractionRequiredCalls = this.nCurrPerformCalls / this.nMinNumberOfFrames;


if( nFractionElapsedTime < nFractionRequiredCalls )
{
return 0.0;
}
else
{
return ( ( nFractionElapsedTime - nFractionRequiredCalls ) * this.nMinSimpleDuration );
}
};

SimpleContinuousActivityBase.prototype.perform = function()
{
if( !SimpleContinuousActivityBase.superclass.perform.call( this ) )
return false; // done, we're ended

var nCurrElapsedTime = this.aTimer.getElapsedTime();
var nT = nCurrElapsedTime / this.nMinSimpleDuration;


var bActivityEnding = false;

if( this.isRepeatCountValid() )
{

var nRepeatCount = this.getRepeatCount();
var nEffectiveRepeat = this.isAutoReverse() ? 2.0 * nRepeatCount : nRepeatCount;

if( nEffectiveRepeat <= nT )
{
bActivityEnding = true;

nT = nEffectiveRepeat;
}
}


var nRepeats;
var nRelativeSimpleTime;
if( this.isAutoReverse() )
{
nRepeats = Math.floor( nT );
var nFractionalActiveDuration =  nT - nRepeats;

if( nRepeats % 2 )
{
nRelativeSimpleTime = 1.0 - nFractionalActiveDuration;
}
else
{
nRelativeSimpleTime = nFractionalActiveDuration;
}

nRepeats /= 2;
}
else
{

nRepeats = Math.floor( nT );
nRelativeSimpleTime = nT - nRepeats;

if( this.isRepeatCountValid() && ( nRepeats >= this.getRepeatCount() ) )
{

nRelativeSimpleTime = 1.0;
nRepeats -= 1.0;
}
}


this.simplePerform( nRelativeSimpleTime, nRepeats );

if( bActivityEnding )
this.endActivity();

++this.nCurrPerformCalls;

return this.isActive();
};

SimpleContinuousActivityBase.prototype.simplePerform = function( /*nSimpleTime, nRepeatCount*/ )
{
throw ( 'SimpleContinuousActivityBase.simplePerform: abstract method invoked' );
};


function ContinuousKeyTimeActivityBase( aCommonParamSet )
{
var nSize = aCommonParamSet.aDiscreteTimes.length;
assert( nSize > 1,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.length > 1) failed' );

assert( aCommonParamSet.aDiscreteTimes[0] == 0.0,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.front() == 0.0) failed' );

assert( aCommonParamSet.aDiscreteTimes[ nSize - 1 ] <= 1.0,
'ContinuousKeyTimeActivityBase constructor: assertion (aDiscreteTimes.back() <= 1.0) failed' );

ContinuousKeyTimeActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aLerper = new KeyStopLerp( aCommonParamSet.aDiscreteTimes );
}
extend( ContinuousKeyTimeActivityBase, SimpleContinuousActivityBase );


ContinuousKeyTimeActivityBase.prototype.activate = function( aEndElement )
{
ContinuousKeyTimeActivityBase.superclass.activate.call( this, aEndElement );

this.aLerper.reset();
};

ContinuousKeyTimeActivityBase.prototype.performContinuousHook = function( /*nIndex, nFractionalIndex, nRepeatCount*/ )
{
throw ( 'ContinuousKeyTimeActivityBase.performContinuousHook: abstract method invoked' );
};

ContinuousKeyTimeActivityBase.prototype.simplePerform = function( nSimpleTime, nRepeatCount )
{
var nAlpha = this.calcAcceleratedTime( nSimpleTime );

var aLerpResult = this.aLerper.lerp( nAlpha );

this.performContinuousHook( aLerpResult.nIndex, aLerpResult.nLerp, nRepeatCount );
};
};

ActivityBase.prototype.isAutoReverse = function()
{
return this.bAutoReverse;
};

ActivityBase.prototype.end = function()
{
if( !this.isActive() || this.isDisposed() )
return;

if( this.bFirstPerformCall )
{
this.bFirstPerformCall = false;
this.startAnimation();
}

this.performEnd();
this.endAnimation();
this.endActivity();
};

ActivityBase.prototype.performEnd = function()
{
throw ( 'ActivityBase.performEnd: abstract method invoked' );
};


function DiscreteActivityBase( aCommonParamSet )
{
DiscreteActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aOriginalWakeupEvent = aCommonParamSet.aWakeupEvent;
this.aOriginalWakeupEvent.setActivity( this );
this.aWakeupEvent = this.aOriginalWakeupEvent;
this.aWakeupEvent = aCommonParamSet.aWakeupEvent;
this.aDiscreteTimes = aCommonParamSet.aDiscreteTimes;
this.nMinSimpleDuration = aCommonParamSet.nMinDuration;
this.nCurrPerformCalls = 0;
}
extend( DiscreteActivityBase, ActivityBase );


DiscreteActivityBase.prototype.activate = function( aEndElement )
{
DiscreteActivityBase.superclass.activate.call( this, aEndElement );

this.aWakeupEvent = this.aOriginalWakeupEvent;
this.aWakeupEvent.setNextTimeout( 0 );
this.nCurrPerformCalls = 0;
};

DiscreteActivityBase.prototype.startAnimation = function()
{
this.aWakeupEvent.start();
};

DiscreteActivityBase.prototype.calcFrameIndex = function( nCurrCalls, nVectorSize )
{
if( this.isAutoReverse() )
{
var nFrameIndex = nCurrCalls % (2 * nVectorSize);

if( nFrameIndex >= nVectorSize )
nFrameIndex = 2*nVectorSize - nFrameIndex; // invert sweep

return nFrameIndex;
}
else
{
return nCurrCalls % nVectorSize;
}
};

DiscreteActivityBase.prototype.calcRepeatCount = function( nCurrCalls, nVectorSize )
{
if( this.isAutoReverse() )
{
return Math.floor( nCurrCalls / (2*nVectorSize) ); // we've got 2 cycles per repeat
}
else
{
return Math.floor( nCurrCalls / nVectorSize );
}
};

DiscreteActivityBase.prototype.performDiscreteHook = function( /*nFrame, nRepeatCount*/ )
{
throw ( 'DiscreteActivityBase.performDiscreteHook: abstract method invoked' );
};

DiscreteActivityBase.prototype.perform = function()
{
if( !SimpleContinuousActivityBase.superclass.perform.call( this ) )
return false; // done, we're ended

var nVectorSize = this.aDiscreteTimes.length;

var nFrameIndex = this.calcFrameIndex(this.nCurrPerformCalls, nVectorSize);
var nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize );
this.performDiscreteHook( nFrameIndex, nRepeatCount );

++this.nCurrPerformCalls;

var nCurrRepeat = this.nCurrPerformCalls / nVectorSize;

if( this.isAutoReverse() )
nCurrRepeat /= 2;

if( !this.isRepeatCountValid() || nCurrRepeat < this.getRepeatCount() )
{


nFrameIndex = this.calcFrameIndex(this.nCurrPerformCalls, nVectorSize);
var nCurrentRepeatTime = this.aDiscreteTimes[nFrameIndex];
nRepeatCount = this.calcRepeatCount( this.nCurrPerformCalls, nVectorSize );
var nNextTimeout = this.nMinSimpleDuration * ( nRepeatCount + this.calcAcceleratedTime( nCurrentRepeatTime ) );
this.aWakeupEvent.setNextTimeout( nNextTimeout );

this.getEventQueue().addEvent( this.aWakeupEvent );
}
else
{
this.aWakeupEvent = null;

this.endActivity();
}

return false; // remove from queue, will be added back by the wakeup event.
};

DiscreteActivityBase.prototype.dispose = function()
{
if( this.aWakeupEvent )
this.aWakeupEvent.dispose();

this.aWakeupEvent = null;

DiscreteActivityBase.superclass.dispose.call(this);
};


function SimpleContinuousActivityBase( aCommonParamSet )
{
SimpleContinuousActivityBase.superclass.constructor.call( this, aCommonParamSet );

this.aTimer = new ElapsedTime( aCommonParamSet.aActivityQueue.getTimer() );
this.nMinSimpleDuration = aCommonParamSet.nMinDuration;
this.nMinNumberOfFrames = aCommonParamSet.nMinNumberOfFrames;
this.bAutoReverse = aCommonParamSet.bAutoReverse;

this.bFirstPerformCall = true;
this.bIsActive = true;

}
extend( ActivityBase, AnimationActivity );


ActivityBase.prototype.activate = function( aEndEvent )
{
this.aEndEvent = aEndEvent;
this.bFirstPerformCall = true;
this.bIsActive = true;
};

ActivityBase.prototype.dispose = function()
{
this.bIsActive = false;

if( this.aEndEvent )
this.aEndEvent.dispose();

this.aEndEvent = null;
};

ActivityBase.prototype.perform = function()
{
if( !this.isActive() )
return false; // no, early exit.

assert( !this.bFirstPerformCall, 'ActivityBase.perform: assertion (!this.FirstPerformCall) failed' );

return true;
};

ActivityBase.prototype.calcTimeLag = function()
{
if( this.isActive() && this.bFirstPerformCall )
{
this.bFirstPerformCall = false;

this.startAnimation();
}
return 0.0;
};

ActivityBase.prototype.isActive = function()
{
return this.bIsActive;
};

ActivityBase.prototype.isDisposed = function()
{
return ( !this.bIsActive && !this.aEndEvent );
};

ActivityBase.prototype.dequeued = function()
{
if( !this.isActive() )
this.endAnimation();
};

ActivityBase.prototype.setTargets = function( aTargetElement )
{
assert( aTargetElement, 'ActivityBase.setTargets: target element is not valid' );

this.aTargetElement = aTargetElement;
};

ActivityBase.prototype.startAnimation = function()
{
throw ( 'ActivityBase.startAnimation: abstract method invoked' );
};

ActivityBase.prototype.endAnimation = function()
{
throw ( 'ActivityBase.endAnimation: abstract method invoked' );
};

ActivityBase.prototype.endActivity = function()
{
this.bIsActive = false;

if( this.aEndEvent )
this.aTimerEventQueue.addEvent( this.aEndEvent );

this.aEndEvent = null;

};

ActivityBase.prototype.calcAcceleratedTime = function( nT )
{


nT = clamp( nT, 0.0, 1.0 );

if( ( this.nAccelerationFraction > 0.0 || this.nDecelerationFraction > 0.0 ) &&
( this.nAccelerationFraction + this.nDecelerationFraction <= 1.0 ) )
{
var nC = 1.0 - 0.5*this.nAccelerationFraction - 0.5*this.nDecelerationFraction;

var nTPrime = 0.0;

if( nT < this.nAccelerationFraction )
{
nTPrime += 0.5 * nT * nT / this.nAccelerationFraction; // partial first interval
}
else
{
nTPrime += 0.5 * this.nAccelerationFraction; // full first interval

if( nT <= ( 1.0 - this.nDecelerationFraction ) )
{
nTPrime += nT - this.nAccelerationFraction; // partial second interval
}
else
{
nTPrime += 1.0 - this.nAccelerationFraction - this.nDecelerationFraction; // full second interval

var nTRelative = nT - 1.0 + this.nDecelerationFraction;

nTPrime += nTRelative - 0.5*nTRelative*nTRelative / this.nDecelerationFraction;
}
}

nT = nTPrime / nC;

}
return nT;
};

ActivityBase.prototype.getEventQueue = function()
{
return this.aTimerEventQueue;
};

ActivityBase.prototype.getTargetElement = function()
{
return this.aTargetElement;
};

ActivityBase.prototype.isRepeatCountValid = function()
{
return !!this.nRepeats; // first ! convert to bool
};

ActivityBase.prototype.getRepeatCount = function()
{
return this.nRepeats;
aOperatorSetMap[ COLOR_PROPERTY ].scale = function( k, v )
{
var r = v.clone();
r.scale( k );
return r;
};

aOperatorSetMap[ ENUM_PROPERTY ] = {};

aOperatorSetMap[ ENUM_PROPERTY ].equal = function( a, b )
{
return ( a === b );
};

aOperatorSetMap[ ENUM_PROPERTY ].add = function( a )
{
return a;
};

aOperatorSetMap[ ENUM_PROPERTY ].scale = function( k, v )
{
return v;
};

aOperatorSetMap[ STRING_PROPERTY ] = aOperatorSetMap[ ENUM_PROPERTY ];

aOperatorSetMap[ BOOL_PROPERTY ] = aOperatorSetMap[ ENUM_PROPERTY ];


function ActivityParamSet()
{
this.aEndEvent = null;
this.aWakeupEvent = null;
this.aTimerEventQueue = null;
this.aActivityQueue = null;
this.nMinDuration = undefined;
this.nMinNumberOfFrames = MINIMUM_FRAMES_PER_SECONDS;
this.bAutoReverse = false;
this.nRepeatCount = 1.0;
this.nAccelerationFraction = 0.0;
this.nDecelerationFraction = 0.0;
this.nSlideWidth = undefined;
this.nSlideHeight = undefined;
this.aFormula = null;
this.aDiscreteTimes = [];
}


function AnimationActivity()
{
this.nId = AnimationActivity.getUniqueId();
}


AnimationActivity.CURR_UNIQUE_ID = 0;

AnimationActivity.getUniqueId = function()
{
++AnimationActivity.CURR_UNIQUE_ID;
return AnimationActivity.CURR_UNIQUE_ID;
};

AnimationActivity.prototype.getId = function()
{
return this.nId;
};


function SetActivity( aCommonParamSet, aAnimation, aToAttr  )
{
SetActivity.superclass.constructor.call( this );

this.aAnimation = aAnimation;
this.aTargetElement = null;
this.aEndEvent = aCommonParamSet.aEndEvent;
this.aTimerEventQueue = aCommonParamSet.aTimerEventQueue;
this.aToAttr = aToAttr;
this.bIsActive = true;
}
extend( SetActivity, AnimationActivity );


SetActivity.prototype.activate = function( aEndEvent )
{
this.aEndEvent = aEndEvent;
this.bIsActive = true;
};

SetActivity.prototype.dispose = function()
{
this.bIsActive = false;
if( this.aEndEvent && this.aEndEvent.isCharged() )
this.aEndEvent.dispose();
};

SetActivity.prototype.calcTimeLag = function()
{
return 0.0;
};

SetActivity.prototype.perform = function()
{
if( !this.isActive() )
return false;

this.bIsActive = false;

if( this.aAnimation && this.aTargetElement )
{
this.aAnimation.start( this.aTargetElement );
this.aAnimation.perform( this.aToAttr );
this.aAnimation.end();
}

if( this.aEndEvent )
this.aTimerEventQueue.addEvent( this.aEndEvent );

};

SetActivity.prototype.isActive = function()
{
return this.bIsActive;
};

SetActivity.prototype.dequeued = function()
{
};

SetActivity.prototype.end = function()
{
this.perform();
};

SetActivity.prototype.setTargets = function( aTargetElement )
{
assert( aTargetElement, 'SetActivity.setTargets: target element is not valid' );
this.aTargetElement = aTargetElement;
};


function ActivityBase( aCommonParamSet )
{
ActivityBase.superclass.constructor.call( this );

this.aTargetElement = null;
this.aEndEvent = aCommonParamSet.aEndEvent;
this.aTimerEventQueue = aCommonParamSet.aTimerEventQueue;
this.nRepeats = aCommonParamSet.nRepeatCount;
this.nAccelerationFraction = aCommonParamSet.nAccelerationFraction;
this.nDecelerationFraction = aCommonParamSet.nDecelerationFraction;
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ NUMBER_PROPERTY ] =
function ( nFrom, nTo, nT )
{
return ( ( 1.0 - nT )* nFrom + nT * nTo );
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ] = [];

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ][ COLOR_SPACE_RGB ] =
function ( nFrom, nTo, nT )
{
return RGBColor.interpolate( nFrom, nTo, nT );
};

aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ][ COLOR_PROPERTY ][ COLOR_SPACE_HSL ] =
function ( bCCW  )
{
return  function ( nFrom, nTo, nT )
{
return HSLColor.interpolate( nFrom, nTo, nT, bCCW );
};
};


function KeyStopLerp( aValueList )
{
KeyStopLerp.validateInput( aValueList );

this.aKeyStopList = [];
this.nLastIndex = 0;
this.nKeyStopDistance = aValueList[1] - aValueList[0];
if( this.nKeyStopDistance <= 0 )
this.nKeyStopDistance = 0.001;

for( var i = 0; i < aValueList.length; ++i )
this.aKeyStopList.push( aValueList[i] );

this.nUpperBoundIndex = this.aKeyStopList.length - 2;
}


KeyStopLerp.validateInput = function( aValueList )
{
var nSize = aValueList.length;
assert( nSize > 1, 'KeyStopLerp.validateInput: key stop vector must have two entries or more' );

for( var i = 1; i < nSize; ++i )
{
if( aValueList[i-1] > aValueList[i] )
log( 'KeyStopLerp.validateInput: time vector is not sorted in ascending order!' );
}
};

KeyStopLerp.prototype.reset = function()
{
KeyStopLerp.validateInput( this.aKeyStopList );
this.nLastIndex = 0;
this.nKeyStopDistance = this.aKeyStopList[1] - this.aKeyStopList[0];
if( this.nKeyStopDistance <= 0 )
this.nKeyStopDistance = 0.001;

};

KeyStopLerp.prototype.lerp = function( nAlpha )
{
if( nAlpha > this.aKeyStopList[ this.nLastIndex + 1 ] )
{
do
{
var nIndex = this.nLastIndex + 1;
this.nLastIndex = clamp( nIndex, 0, this.nUpperBoundIndex );
this.nKeyStopDistance = this.aKeyStopList[ this.nLastIndex + 1 ] - this.aKeyStopList[ this.nLastIndex ];
}
while( ( this.nKeyStopDistance <= 0 ) && ( this.nLastIndex < this.nUpperBoundIndex ) );
}

var nRawLerp = ( nAlpha - this.aKeyStopList[ this.nLastIndex ] ) / this.nKeyStopDistance;

nRawLerp = clamp( nRawLerp, 0.0, 1.0 );

var aResult = {};
aResult.nIndex = this.nLastIndex;
aResult.nLerp = nRawLerp;

return aResult;
};

KeyStopLerp.prototype.lerp_ported = function( nAlpha )
{
if( ( this.aKeyStopList[ this.nLastIndex ] < nAlpha ) ||
( this.aKeyStopList[ this.nLastIndex + 1 ] >= nAlpha ) )
{
var i = 0;
for( ; i < this.aKeyStopList.length; ++i )
{
if( this.aKeyStopList[i] >= nAlpha )
break;
}
if( this.aKeyStopList[i] > nAlpha )
--i;
var nIndex = i - 1;
this.nLastIndex = clamp( nIndex, 0, this.aKeyStopList.length - 2 );
}

var nRawLerp = ( nAlpha - this.aKeyStopList[ this.nLastIndex ] ) /
( this.aKeyStopList[ this.nLastIndex+1 ] - this.aKeyStopList[ this.nLastIndex ] );

nRawLerp = clamp( nRawLerp, 0.0, 1.0 );

var aResult = {};
aResult.nIndex = this.nLastIndex;
aResult.nLerp = nRawLerp;

return aResult;
};


var aOperatorSetMap = [];

aOperatorSetMap[ NUMBER_PROPERTY ] = {};

aOperatorSetMap[ NUMBER_PROPERTY ].equal = function( a, b )
{
return ( a === b );
};

aOperatorSetMap[ NUMBER_PROPERTY ].add = function( a, b )
{
return ( a + b );
};

aOperatorSetMap[ NUMBER_PROPERTY ].scale = function( k, v )
{
return ( k * v );
};

aOperatorSetMap[ COLOR_PROPERTY ] = {};

aOperatorSetMap[ COLOR_PROPERTY ].equal = function( a, b )
{
return a.equal( b );
};

aOperatorSetMap[ COLOR_PROPERTY ].add = function( a, b )
{
var c = a.clone();
c.add( b );
return c;
};

};

EventMultiplexer.prototype.registerSkipEffectEvent = function( aEvent )
{
this.aSkipEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifySkipEffectEvent = function()
{
if( this.aSkipEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aSkipEffectEvent );
this.aSkipEffectEvent = null;
}
};

EventMultiplexer.prototype.registerRewindCurrentEffectEvent = function( aEvent )
{
this.aRewindCurrentEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifyRewindCurrentEffectEvent = function()
{
if( this.aRewindCurrentEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aRewindCurrentEffectEvent );
this.aRewindCurrentEffectEvent = null;
}
};

EventMultiplexer.prototype.registerRewindLastEffectEvent = function( aEvent )
{
this.aRewindLastEffectEvent = aEvent;
};

EventMultiplexer.prototype.notifyRewindLastEffectEvent = function()
{
if( this.aRewindLastEffectEvent )
{
this.aTimerEventQueue.addEvent( this.aRewindLastEffectEvent );
this.aRewindLastEffectEvent = null;
}
};

EventMultiplexer.prototype.registerSkipInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aSkipInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifySkipInteractiveEffectEvent = function( nNotifierId )
{
if( this.aSkipInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aSkipInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindRunningInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifyRewindRunningInteractiveEffectEvent = function( nNotifierId )
{
if( this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aRewindRunningInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindEndedInteractiveEffectEvent = function( nNotifierId, aEvent )
{
this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] = aEvent;
};

EventMultiplexer.prototype.notifyRewindEndedInteractiveEffectEvent = function( nNotifierId )
{
if( this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] )
{
this.aTimerEventQueue.addEvent( this.aRewindEndedInteractiveEffectEventSet[ nNotifierId ] );
}
};

EventMultiplexer.prototype.registerRewindedEffectHandler = function( aNotifierId, aHandler )
{
this.aRewindedEffectHandlerSet[ aNotifierId ] = aHandler;
};

EventMultiplexer.prototype.notifyRewindedEffectEvent = function( aNotifierId )
{
if( this.aRewindedEffectHandlerSet[ aNotifierId ] )
{
(this.aRewindedEffectHandlerSet[ aNotifierId ])();
}
};

EventMultiplexer.prototype.registerElementChangedHandler = function( aNotifierId, aHandler )
{
this.aElementChangedHandlerSet[ aNotifierId ] = aHandler;
};

EventMultiplexer.prototype.notifyElementChangedEvent = function( aNotifierId, aElement )
{
if( this.aElementChangedHandlerSet[ aNotifierId ] )
{
(this.aElementChangedHandlerSet[ aNotifierId ])( aElement );
}
};

EventMultiplexer.DEBUG = aEventMultiplexerDebugPrinter.isEnabled();

EventMultiplexer.prototype.DBG = function( sMethodName, eEventType, aNotifierId, nTime )
{
if( EventMultiplexer.DEBUG )
{
var sInfo = 'EventMultiplexer.' + sMethodName;
sInfo += '( type: ' + aEventTriggerOutMap[ eEventType ];
sInfo += ', notifier: ' + aNotifierId + ' )';
aEventMultiplexerDebugPrinter.print( sInfo, nTime );
}
};


var aInterpolatorHandler = {};

aInterpolatorHandler.getInterpolator = function( eCalcMode, eValueType, eValueSubtype )
{
var bHasSubtype = ( typeof( eValueSubtype ) === typeof( 0 ) );

if( !bHasSubtype && aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ] )
{
return aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ];
}
else if( bHasSubtype && aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ][ eValueSubtype ] )
{
return aInterpolatorHandler.aLerpFunctorMap[ eCalcMode ][ eValueType ][ eValueSubtype ];
}
else
{
log( 'aInterpolatorHandler.getInterpolator: not found any valid interpolator for calc mode '
+ aCalcModeOutMap[eCalcMode]  + ' and value type ' + aValueTypeOutMap[eValueType]  );
return null;
}
};

aInterpolatorHandler.aLerpFunctorMap = [];
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_DISCRETE ] = [];
aInterpolatorHandler.aLerpFunctorMap[ CALC_MODE_LINEAR ] = [];


{
return this.bIsRunning;
};

InteractiveAnimationSequence.prototype.start = function()
{
aSlideShow.notifyInteractiveAnimationSequenceStart( this.getId() );
this.bIsRunning = true;
};

InteractiveAnimationSequence.prototype.end = function()
{
aSlideShow.notifyInteractiveAnimationSequenceEnd( this.getId() );
this.bIsRunning = false;
};


function PriorityEntry( aValue, nPriority )
{
this.aValue = aValue;
this.nPriority = nPriority;
}

PriorityEntry.compare = function( aLhsEntry, aRhsEntry )
{
if ( aLhsEntry.nPriority < aRhsEntry.nPriority )
{
return -1;
}
else if (aLhsEntry.nPriority > aRhsEntry.nPriority)
{
return 1;
}
else
{
return 0;
}
};


function EventMultiplexer( aTimerEventQueue )
{
this.nId = EventMultiplexer.getUniqueId();
this.aTimerEventQueue = aTimerEventQueue;
this.aEventMap = {};
this.aAnimationsEndHandler = null;
this.aSkipEffectEndHandlerSet = [];
this.aMouseClickHandlerSet = new PriorityQueue( PriorityEntry.compare );
this.aSkipEffectEvent = null;
this.aRewindCurrentEffectEvent = null;
this.aRewindLastEffectEvent = null;
this.aSkipInteractiveEffectEventSet = {};
this.aRewindRunningInteractiveEffectEventSet = {};
this.aRewindEndedInteractiveEffectEventSet = {};
this.aRewindedEffectHandlerSet = {};
this.aElementChangedHandlerSet = {};
}

EventMultiplexer.CURR_UNIQUE_ID = 0;

EventMultiplexer.getUniqueId = function()
{
++EventMultiplexer.CURR_UNIQUE_ID;
return EventMultiplexer.CURR_UNIQUE_ID;
};

EventMultiplexer.prototype.getId = function()
{
return this.nId;
};

EventMultiplexer.prototype.hasRegisteredMouseClickHandlers = function()
{
return !this.aMouseClickHandlerSet.isEmpty();
};

EventMultiplexer.prototype.registerMouseClickHandler = function( aHandler, nPriority )
{
var aHandlerEntry = new PriorityEntry( aHandler, nPriority );
this.aMouseClickHandlerSet.push( aHandlerEntry );
};

EventMultiplexer.prototype.notifyMouseClick = function( aMouseEvent )
{
var aMouseClickHandlerSet = this.aMouseClickHandlerSet.clone();
while( !aMouseClickHandlerSet.isEmpty() )
{
var aHandlerEntry = aMouseClickHandlerSet.top();
aMouseClickHandlerSet.pop();
if( aHandlerEntry.aValue.handleClick( aMouseEvent ) )
break;
}
};

EventMultiplexer.prototype.registerEvent = function( eEventType, aNotifierId, aEvent )
{
this.DBG( 'registerEvent', eEventType, aNotifierId );
if( !this.aEventMap[ eEventType ] )
{
this.aEventMap[ eEventType ] = {};
}
if( !this.aEventMap[ eEventType ][ aNotifierId ] )
{
this.aEventMap[ eEventType ][ aNotifierId ] = [];
}
this.aEventMap[ eEventType ][ aNotifierId ].push( aEvent );
};


EventMultiplexer.prototype.notifyEvent = function( eEventType, aNotifierId )
{
this.DBG( 'notifyEvent', eEventType, aNotifierId );
if( this.aEventMap[ eEventType ] )
{
if( this.aEventMap[ eEventType ][ aNotifierId ] )
{
var aEventArray = this.aEventMap[ eEventType ][ aNotifierId ];
var nSize = aEventArray.length;
for( var i = 0; i < nSize; ++i )
{
this.aTimerEventQueue.addEvent( aEventArray[i] );
}
}
}
};

EventMultiplexer.prototype.registerAnimationsEndHandler = function( aHandler )
{
this.aAnimationsEndHandler = aHandler;
};

EventMultiplexer.prototype.notifyAnimationsEndEvent = function()
{
if( this.aAnimationsEndHandler )
this.aAnimationsEndHandler();
};

EventMultiplexer.prototype.registerNextEffectEndHandler = function( aHandler )
{
this.aSkipEffectEndHandlerSet.push( aHandler );
};

EventMultiplexer.prototype.notifyNextEffectEndEvent = function()
{
var nSize = this.aSkipEffectEndHandlerSet.length;
for( var i = 0; i < nSize; ++i )
{
(this.aSkipEffectEndHandlerSet[i])();
}
this.aSkipEffectEndHandlerSet = [];
if( !aElement )
{
log( 'error: HyperlinkElement: no element with id: <' + sId + '> found' );
return;
}
if( !aEventMultiplexer )
{
log( 'AnimatedElement constructor: event multiplexer is not valid' );
}

this.sId = sId;
this.aElement = aElement;
this.aEventMultiplexer = aEventMultiplexer;
this.nTargetSlideIndex = undefined;

this.sURL = getNSAttribute( 'xlink', this.aElement, 'href' );
if( this.sURL )
{
if( this.sURL[0] === '#' )
{
if( this.sURL.substr(1, 5) === 'Slide' )
{
var sSlideIndex = this.sURL.split( ' ' )[1];
this.nTargetSlideIndex = parseInt( sSlideIndex ) - 1;
}
}

this.aEventMultiplexer.registerElementChangedHandler( this.sId, bind2( HyperlinkElement.prototype.onElementChanged, this) );
this.aEventMultiplexer.registerMouseClickHandler( this, 1100 );

this.bIsPointerOver = false;
this.mouseEnterHandler = bind2( HyperlinkElement.prototype.onMouseEnter, this);
this.mouseLeaveHandler = bind2( HyperlinkElement.prototype.onMouseLeave, this);
this.aElement.addEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.addEventListener( 'mouseout', this.mouseLeaveHandler, false );
}
else
{
log( 'warning: HyperlinkElement(' + this.sId + '): url is empty' );
}
}

HyperlinkElement.prototype.onElementChanged = function( aElement )
{
if( !aElement )
{
log( 'error: HyperlinkElement: passed element is not valid' );
return;
}

if( this.sURL )
{
this.aElement.removeEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.removeEventListener( 'mouseout', this.mouseLeaveHandler, false );
this.aElement = aElement;
this.aElement.addEventListener( 'mouseover', this.mouseEnterHandler, false );
this.aElement.addEventListener( 'mouseout', this.mouseLeaveHandler, false );
}
};

HyperlinkElement.prototype.onMouseEnter = function()
{
this.bIsPointerOver = true;
this.setPointerCursor();
};

HyperlinkElement.prototype.onMouseLeave = function()
{
this.bIsPointerOver = false;
this.setDefaultCursor();
};

HyperlinkElement.prototype.handleClick = function( )
{
if( !this.bIsPointerOver ) return false;

if( this.nTargetSlideIndex !== undefined )
{
aSlideShow.displaySlide( this.nTargetSlideIndex, true );
}
else
{
var aWindowObject = document.defaultView;
if( aWindowObject )
{
aWindowObject.open( this.sURL, this.sId );
}
else
{
log( 'error: HyperlinkElement.handleClick: invalid window object.' );
}
}

return true;
};

HyperlinkElement.prototype.setPointerCursor = function()
{
if( this.bClickHandled )
return;

this.aElement.setAttribute( 'style', 'cursor: pointer' );
};

HyperlinkElement.prototype.setDefaultCursor = function()
{
this.aElement.setAttribute( 'style', 'cursor: default' );
};


function InteractiveAnimationSequence( nId )
{
this.nId = nId;
this.bIsRunning = false;
this.aStartEvent = null;
this.aEndEvent = null;
}

InteractiveAnimationSequence.prototype.getId = function()
{
return this.nId;
};

InteractiveAnimationSequence.prototype.getStartEvent = function()
{
if( !this.aStartEvent )
{
this.aStartEvent =
makeEvent( bind2( InteractiveAnimationSequence.prototype.start, this ) );
}
return this.aStartEvent;
};

InteractiveAnimationSequence.prototype.getEndEvent = function()
{
if( !this.aEndEvent )
{
this.aEndEvent =
makeEvent( bind2( InteractiveAnimationSequence.prototype.end, this ) );
}
return this.aEndEvent;
};

InteractiveAnimationSequence.prototype.chargeEvents = function()
{
if( this.aStartEvent )      this.aStartEvent.charge();
if( this.aEndEvent )        this.aEndEvent.charge();
};

InteractiveAnimationSequence.prototype.isRunning = function()
log( 'generateEvent: EVENT_TIMING: event base element not found: ' + sEventBaseElemId );
return;
}
var aSourceEventElement = aNodeContext.makeSourceEventElement( sEventBaseElemId, aEventBaseElem );

if( !aInteractiveAnimationSequenceMap[ nNodeId ] )
{
aInteractiveAnimationSequenceMap[ nNodeId ] = new InteractiveAnimationSequence(nNodeId);
}

var bEventRegistered = false;
switch( eEventType )
{
case EVENT_TRIGGER_ON_CLICK:
aEventMultiplexer.registerEvent( eEventType, aSourceEventElement.getId(), aEvent );
aEventMultiplexer.registerRewindedEffectHandler( aSourceEventElement.getId(),
bind2( aSourceEventElement.charge, aSourceEventElement ) );
bEventRegistered = true;
break;
default:
log( 'generateEvent: not handled event type: ' + eEventType );
}
if( bEventRegistered )
{
var aStartEvent = aInteractiveAnimationSequenceMap[ nNodeId ].getStartEvent();
var aEndEvent = aInteractiveAnimationSequenceMap[ nNodeId ].getEndEvent();
aEventMultiplexer.registerEvent( eEventType, aSourceEventElement.getId(), aStartEvent );
aEventMultiplexer.registerEvent( EVENT_TRIGGER_END_EVENT, nNodeId, aEndEvent );
aEventMultiplexer.registerRewindedEffectHandler(
nNodeId,
bind2( InteractiveAnimationSequence.prototype.chargeEvents,
aInteractiveAnimationSequenceMap[ nNodeId ] )
);
}
}
else  // no base event element present
{
switch( eEventType )
{
case EVENT_TRIGGER_ON_NEXT_EFFECT:
aNextEffectEventArray.appendEvent( aEvent );
break;
default:
log( 'generateEvent: not handled event type: ' + eEventType );
}
}
break;
case SYNCBASE_TIMING:
eEventType = aTiming.getEventType();
sEventBaseElemId = aTiming.getEventBaseElementId();
if( sEventBaseElemId )
{
var aAnimationNode = aNodeContext.aAnimationNodeMap[ sEventBaseElemId ];
if( !aAnimationNode )
{
log( 'generateEvent: SYNCBASE_TIMING: event base element not found: ' + sEventBaseElemId );
return;
}
aEventMultiplexer.registerEvent( eEventType, aAnimationNode.getId(), aEvent );
}
else
{
log( 'generateEvent: SYNCBASE_TIMING: event base element not specified' );
}
break;
default:
log( 'generateEvent: not handled timing type: ' + eTimingType );
}
}
}

registerEvent.DEBUG = aRegisterEventDebugPrinter.isEnabled();

registerEvent.DBG = function( aTiming, nTime )
{
if( registerEvent.DEBUG )
{
aRegisterEventDebugPrinter.print( 'registerEvent( timing: ' + aTiming.info() + ' )', nTime );
}
};


function SourceEventElement( sId, aElement, aEventMultiplexer )
{
this.sId = sId;
this.aElement = aElement;
this.aEventMultiplexer = aEventMultiplexer;

this.aEventMultiplexer.registerMouseClickHandler( this, 1000 );

this.bClickHandled = false;
this.bIsPointerOver = false;
this.aElement.addEventListener( 'mouseover', bind2( SourceEventElement.prototype.onMouseEnter, this), false );
this.aElement.addEventListener( 'mouseout', bind2( SourceEventElement.prototype.onMouseLeave, this), false );
}

SourceEventElement.prototype.getId = function()
{
return this.sId;
};

SourceEventElement.prototype.onMouseEnter = function()
{
this.bIsPointerOver = true;
this.setPointerCursor();
};

SourceEventElement.prototype.onMouseLeave = function()
{
this.bIsPointerOver = false;
this.setDefaultCursor();
};

SourceEventElement.prototype.charge = function()
{
this.bClickHandled = false;
this.setPointerCursor();
};

SourceEventElement.prototype.handleClick = function( /*aMouseEvent*/ )
{
if( !this.bIsPointerOver ) return false;

if( this.bClickHandled )
return false;

this.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_ON_CLICK, this.getId() );
aSlideShow.update();
this.bClickHandled = true;
this.setDefaultCursor();
return true;
};

SourceEventElement.prototype.setPointerCursor = function()
{
if( this.bClickHandled )
return;

this.aElement.setAttribute( 'style', 'cursor: pointer' );
};

SourceEventElement.prototype.setDefaultCursor = function()
{
this.aElement.setAttribute( 'style', 'cursor: default' );
};


function HyperlinkElement( sId, aEventMultiplexer )
{
var aElement = document.getElementById( sId );


DelayEvent.prototype.fire = function()
{
assert( this.isCharged(), 'DelayEvent.fire: assertion isCharged failed' );

this.bWasFired = true;
this.aFunctor();
return true;
};

DelayEvent.prototype.isCharged = function()
{
return !this.bWasFired;
};

DelayEvent.prototype.getActivationTime = function( nCurrentTime )
{
return ( this.nTimeout + nCurrentTime );
};

DelayEvent.prototype.dispose = function()
{
if( this.isCharged() )
this.bWasFired = true;
};

DelayEvent.prototype.charge = function()
{
if( !this.isCharged() )
this.bWasFired = false;
};


function WakeupEvent( aTimer, aActivityQueue )
{
WakeupEvent.superclass.constructor.call( this );

this.aTimer = new ElapsedTime( aTimer );
this.nNextTime = 0.0;
this.aActivity = null;
this.aActivityQueue = aActivityQueue;
}
extend( WakeupEvent, Event );


WakeupEvent.prototype.clone = function()
{
var aWakeupEvent = new WakeupEvent( this.aTimer.getTimeBase(), this.aActivityQueue );
aWakeupEvent.nNextTime = this.nNextTime;
aWakeupEvent.aActivity = this.aActivity;
return aWakeupEvent;
};

WakeupEvent.prototype.dispose = function()
{
this.aActivity = null;
};

WakeupEvent.prototype.fire = function()
{
if( !this.aActivity )
return false;

return this.aActivityQueue.addActivity( this.aActivity );
};

WakeupEvent.prototype.isCharged = function()
{
return true;
};

WakeupEvent.prototype.getActivationTime = function( nCurrentTime )
{
var nElapsedTime = this.aTimer.getElapsedTime();

return Math.max( nCurrentTime, nCurrentTime - nElapsedTime + this.nNextTime );
};

WakeupEvent.prototype.start = function()
{
this.aTimer.reset();
};

WakeupEvent.prototype.setNextTimeout = function( nNextTime )
{
this.nNextTime = nNextTime;
};

WakeupEvent.prototype.setActivity = function( aActivity )
{
this.aActivity = aActivity;
};


function makeEvent( aFunctor )
{
return new DelayEvent( aFunctor, 0.0 );
}


function makeDelay( aFunctor, nTimeout )
{
return new DelayEvent( aFunctor, nTimeout );
}


function registerEvent( nNodeId, aTiming, aEvent, aNodeContext )
{
var aSlideShowContext = aNodeContext.aContext;
var eTimingType = aTiming.getType();

registerEvent.DBG( aTiming );

if( eTimingType == OFFSET_TIMING )
{
aSlideShowContext.aTimerEventQueue.addEvent( aEvent );
}
else if ( aNodeContext.bFirstRun )
{
var aEventMultiplexer = aSlideShowContext.aEventMultiplexer;
if( !aEventMultiplexer )
{
log( 'registerEvent: event multiplexer not initialized' );
return;
}
var aNextEffectEventArray = aSlideShowContext.aNextEffectEventArray;
if( !aNextEffectEventArray )
{
log( 'registerEvent: next effect event array not initialized' );
return;
}
var aInteractiveAnimationSequenceMap =
aSlideShowContext.aInteractiveAnimationSequenceMap;
if( !aInteractiveAnimationSequenceMap )
{
log( 'registerEvent: interactive animation sequence map not initialized' );
return;
}

switch( eTimingType )
{
case EVENT_TIMING:
var eEventType = aTiming.getEventType();
var sEventBaseElemId = aTiming.getEventBaseElementId();
if( sEventBaseElemId )
{
var aEventBaseElem = document.getElementById( sEventBaseElemId );
if( !aEventBaseElem )
{
this.aContext.aSourceEventElementMap = this.aSourceEventElementMap;

this.aEventMultiplexer.registerMouseClickHandler( document, 100 );
}


SlideAnimations.prototype.importAnimations = function( aAnimationRootElement )
{
if( !aAnimationRootElement )
return false;

this.aRootNode = createAnimationTree( aAnimationRootElement, this.aContext );

return ( this.aRootNode ? true : false );
};

SlideAnimations.prototype.parseElements = function()
{
if( !this.aRootNode )
return false;

if( !this.aRootNode.parseElement() )
return false;
else
this.bElementsParsed = true;
};

SlideAnimations.prototype.elementsParsed = function()
{
return this.bElementsParsed;
};

SlideAnimations.prototype.isFirstRun = function()
{
return this.aContext.bFirstRun;
};

SlideAnimations.prototype.isAnimated = function()
{
if( !this.bElementsParsed )
return false;

return this.aRootNode.hasPendingAnimation();
};

SlideAnimations.prototype.start = function()
{
if( !this.bElementsParsed )
return false;

this.chargeSourceEvents();
this.chargeInterAnimEvents();

aSlideShow.setSlideEvents( this.aNextEffectEventArray,
this.aInteractiveAnimationSequenceMap,
this.aEventMultiplexer );

if( this.aContext.bFirstRun == undefined )
this.aContext.bFirstRun = true;
else if( this.aContext.bFirstRun )
this.aContext.bFirstRun = false;

this.aContext.bIsInvalid = !this.aRootNode.init();
if( this.aContext.bIsInvalid )
return false;

return this.aRootNode.resolve();
};

SlideAnimations.prototype.end = function( bLeftEffectsSkipped )
{
if( !this.bElementsParsed )
return; // no animations there

this.aRootNode.deactivate();
this.aRootNode.end();

if( bLeftEffectsSkipped && this.isFirstRun() )
{
this.aContext.bFirstRun = undefined;
}
else if( this.isFirstRun() )
{
this.aContext.bFirstRun = false;
}

this.aContext.bIsInvalid = false;
};

SlideAnimations.prototype.dispose = function()
{
if( this.aRootNode )
{
this.aRootNode.dispose();
}
};

SlideAnimations.prototype.clearNextEffectEvents = function()
{
ANIMDBG.print( 'SlideAnimations.clearNextEffectEvents: current slide: ' + nCurSlide );
this.aNextEffectEventArray.clear();
this.aContext.bFirstRun = undefined;
};

SlideAnimations.prototype.chargeSourceEvents = function()
{
for( var id in this.aSourceEventElementMap )
{
this.aSourceEventElementMap[id].charge();
}
};

SlideAnimations.prototype.chargeInterAnimEvents = function()
{
for( var id in this.aInteractiveAnimationSequenceMap )
{
this.aInteractiveAnimationSequenceMap[id].chargeEvents();
}
};


function Event()
{
this.nId = Event.getUniqueId();
}


Event.CURR_UNIQUE_ID = 0;

Event.getUniqueId = function()
{
++Event.CURR_UNIQUE_ID;
return Event.CURR_UNIQUE_ID;
};

Event.prototype.getId = function()
{
return this.nId;
};


function DelayEvent( aFunctor, nTimeout )
{
DelayEvent.superclass.constructor.call( this );

this.aFunctor = aFunctor;
this.nTimeout = nTimeout;
this.bWasFired = false;
}
extend( DelayEvent, Event );
};

SlideTransition.prototype.parseElement = function()
{
this.bIsValid = true;
var aAnimElem = this.aElement;

this.eTransitionType = undefined;
var sTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'type' );
if( sTypeAttr && aTransitionTypeInMap[ sTypeAttr ] )
{
this.eTransitionType = aTransitionTypeInMap[ sTypeAttr ];
}
else
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition type not valid: ' + sTypeAttr );
}

this.eTransitionSubType = undefined;
var sSubTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'subtype' );
if( sSubTypeAttr === null )
sSubTypeAttr = 'default';
if( sSubTypeAttr && ( aTransitionSubtypeInMap[ sSubTypeAttr ] !== undefined ) )
{
this.eTransitionSubType = aTransitionSubtypeInMap[ sSubTypeAttr ];
}
else
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition subtype not valid: ' + sSubTypeAttr );
}

if( this.bIsValid && aTransitionInfoTable[this.eTransitionType][this.eTransitionSubType] === undefined )
{
this.bIsValid = false;
log( 'SlideTransition.parseElement: transition not valid: type: ' + sTypeAttr + ' subtype: ' + sSubTypeAttr );
}

this.bReverseDirection = false;
var sDirectionAttr = aAnimElem.getAttributeNS( NSS['smil'], 'direction' );
if( sDirectionAttr == 'reverse' )
this.bReverseDirection = true;

this.sFadeColor = null;
if( this.eTransitionType == FADE_TRANSITION &&
( this.eTransitionSubType == FADEFROMCOLOR_TRANS_SUBTYPE ||
this.eTransitionSubType == FADEOVERCOLOR_TRANS_SUBTYPE ||
this.eTransitionSubType == FADETOCOLOR_TRANS_SUBTYPE ) )
{
var sColorAttr = aAnimElem.getAttributeNS( NSS['smil'], 'fadeColor' );
if( sColorAttr )
this.sFadeColor = sColorAttr;
else
this.sFadeColor='#000000';
}


this.aDuration = null;
var sDurAttr = aAnimElem.getAttributeNS( NSS['smil'], 'dur' );
this.aDuration = new Duration( sDurAttr );
if( !this.aDuration.isSet() )
{
this.aDuration = new Duration( null ); // duration == 0.0
}

this.nMinFrameCount = ( this.getDuration().isValue() )
? ( this.getDuration().getValue() * MINIMUM_FRAMES_PER_SECONDS )
: MINIMUM_FRAMES_PER_SECONDS;
if( this.nMinFrameCount < 1.0 )
this.nMinFrameCount = 1;
else if( this.nMinFrameCount > MINIMUM_FRAMES_PER_SECONDS )
this.nMinFrameCount = MINIMUM_FRAMES_PER_SECONDS;

};

SlideTransition.prototype.isValid = function()
{
return this.bIsValid;
};

SlideTransition.prototype.getTransitionType = function()
{
return this.eTransitionType;
};

SlideTransition.prototype.getTransitionSubType = function()
{
return this.eTransitionSubType;
};

SlideTransition.prototype.getTransitionMode = function()
{
return this.eTransitionMode;
};

SlideTransition.prototype.getFadeColor = function()
{
return this.sFadeColor;
};

SlideTransition.prototype.isDirectionForward = function()
{
return !this.bReverseDirection;
};

SlideTransition.prototype.getDuration = function()
{
return this.aDuration;
};

SlideTransition.prototype.getMinFrameCount = function()
{
return this.nMinFrameCount;
};

SlideTransition.prototype.info = function()
{

var sInfo ='slide transition <' + this.sSlideId + '>: ';
sInfo += ';  type: ' + getKeyByValue(aTransitionTypeInMap, this.getTransitionType());

sInfo += ';  subtype: ' + getKeyByValue(aTransitionSubtypeInMap, this.getTransitionSubType());

if( !this.isDirectionForward() )
sInfo += ';  direction: reverse';

sInfo += '; mode: ' + aTransitionModeOutMap[ this.getTransitionMode() ];

if( this.getDuration() )
sInfo += '; duration: ' + this.getDuration().info();

return sInfo;
};


function SlideAnimations( aSlideShowContext )
{
this.aContext = new NodeContext( aSlideShowContext );
this.aAnimationNodeMap = {};
this.aAnimatedElementMap = {};
this.aSourceEventElementMap = {};
this.aNextEffectEventArray = new NextEffectEventArray();
this.aInteractiveAnimationSequenceMap = {};
this.aEventMultiplexer = new EventMultiplexer( aSlideShowContext.aTimerEventQueue );
this.aRootNode = null;
this.bElementsParsed = false;

this.aContext.aAnimationNodeMap = this.aAnimationNodeMap;
this.aContext.aAnimatedElementMap = this.aAnimatedElementMap;
AnimatedTextElement.prototype.restoreState = function( nAnimationNodeId )
{
var bRet = AnimatedTextElement.superclass.restoreState.call( this, nAnimationNodeId );
if( bRet )
this.restoreBaseTextParagraph();
return bRet;
};


function SlideTransition( aAnimationsRootElement, aSlideId )
{
this.sSlideId = aSlideId;
this.bIsValid = false;
this.eTransitionType = undefined;
this.eTransitionSubType = undefined;
this.bReverseDirection = false;
this.eTransitionMode = TRANSITION_MODE_IN;
this.sFadeColor = null;
this.aDuration = null;
this.nMinFrameCount = undefined;

if( aAnimationsRootElement )
{
if( aAnimationsRootElement.firstElementChild &&
( aAnimationsRootElement.firstElementChild.getAttributeNS( NSS['smil'], 'begin' ) === (this.sSlideId + '.begin') ) )
{
var aTransitionFilterElement = aAnimationsRootElement.firstElementChild.firstElementChild;
if( aTransitionFilterElement && ( aTransitionFilterElement.localName === 'transitionFilter' ) )
{
this.aElement = aTransitionFilterElement;
this.parseElement();
}
aAnimationsRootElement.removeChild( aAnimationsRootElement.firstElementChild );
}
}
}

SlideTransition.prototype.createSlideTransition = function( aLeavingSlide, aEnteringSlide )
{
if( !this.isValid() )
return null;
if( this.eTransitionType == 0 )
return null;

if( !aEnteringSlide )
{
log( 'SlideTransition.createSlideTransition: invalid entering slide.' );
return null;
}

var aTransitionInfo = aTransitionInfoTable[this.eTransitionType][this.eTransitionSubType];
var eTransitionClass = aTransitionInfo['class'];

switch( eTransitionClass )
{
default:
case TRANSITION_INVALID:
log( 'SlideTransition.createSlideTransition: transition class: TRANSITION_INVALID' );
return null;

case TRANSITION_CLIP_POLYPOLYGON:
var aParametricPolyPolygon
= createClipPolyPolygon( this.eTransitionType, this.eTransitionSubType );
return new ClippedSlideChange( aLeavingSlide, aEnteringSlide, aParametricPolyPolygon,
aTransitionInfo, this.isDirectionForward() );

case TRANSITION_SPECIAL:
switch( this.eTransitionType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition class: TRANSITION_SPECIAL, ' +
'unknown transition type: ' + this.eTransitionType );
return null;

case PUSHWIPE_TRANSITION:
{
var aDirection = null;
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: PUSHWIPE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case FROMTOP_TRANS_SUBTYPE:
aDirection = { x: 0.0, y: 1.0 };
break;
case FROMBOTTOM_TRANS_SUBTYPE:
aDirection = { x: 0.0, y: -1.0 };
break;
case FROMLEFT_TRANS_SUBTYPE:
aDirection = { x: 1.0, y: 0.0 };
break;
case FROMRIGHT_TRANS_SUBTYPE:
aDirection = { x: -1.0, y: 0.0 };
break;
}
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aDirection, aDirection );
}

case SLIDEWIPE_TRANSITION:
{
var aInDirection = null;
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: SLIDEWIPE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case FROMTOP_TRANS_SUBTYPE:
aInDirection = { x: 0.0, y: 1.0 };
break;
case FROMBOTTOM_TRANS_SUBTYPE:
aInDirection = { x: 0.0, y: -1.0 };
break;
case FROMLEFT_TRANS_SUBTYPE:
aInDirection = { x: 1.0, y: 0.0 };
break;
case FROMRIGHT_TRANS_SUBTYPE:
aInDirection = { x: -1.0, y: 0.0 };
break;
}
var aNoDirection = { x: 0.0, y: 0.0 };
if( !this.bReverseDirection )
{
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aNoDirection, aInDirection );
}
else
{
return new MovingSlideChange( aLeavingSlide, aEnteringSlide, aInDirection, aNoDirection );
}
}

case FADE_TRANSITION:
switch( this.eTransitionSubType )
{
default:
log( 'SlideTransition.createSlideTransition: ' +
'transition type: FADE_TRANSITION, ' +
'unknown transition subtype: ' + this.eTransitionSubType );
return null;
case CROSSFADE_TRANS_SUBTYPE:
return new FadingSlideChange( aLeavingSlide, aEnteringSlide );
case FADEOVERCOLOR_TRANS_SUBTYPE:
return new FadingOverColorSlideChange( aLeavingSlide, aEnteringSlide, this.getFadeColor() );
}
}
}
aBulletCharClone.removeAttribute( 'id' );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapCloneSet[i] )
aBitmapCloneSet[i].removeAttribute( 'id' );
}

var sVisibilityAttr = aElement.getAttribute( 'visibility' );
if( !sVisibilityAttr )
sVisibilityAttr = 'inherit';
aAnimatableElement.setAttribute( 'visibility', sVisibilityAttr );
aParagraphElement.setAttribute( 'visibility', 'inherit' );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
if( aBulletCharElem )
aBulletCharElem.setAttribute( 'visibility', 'hidden' );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapElemSet[i] )
aBitmapElemSet[i].setAttribute( 'visibility', 'hidden' );
}


aTextElement.appendChild( aParagraphElement );
aAnimatableElement.appendChild( aTextElement );

if( aBulletCharClone )
this.aGraphicGroupElement.appendChild( aBulletCharClone );
for( i = 0; i < aBitmapCloneSet.length; ++i )
{
if( aBitmapCloneSet[i] )
this.aGraphicGroupElement.appendChild( aBitmapCloneSet[i] );
}
aAnimatableElement.appendChild( this.aGraphicGroupElement );
aAnimatedElementGroup.appendChild( aAnimatableElement );

this.aParentTextElement = aElement.parentNode;
this.aParagraphElement = aElement;
this.aAnimatedElementGroup = aAnimatedElementGroup;
this.nRunningAnimations = 0;

this.aHyperlinkIdSet = [];
var aHyperlinkElementSet = getElementsByClassName( this.aParagraphElement, 'UrlField' );
var sHyperlinkId;
for( i = 0; i < aHyperlinkElementSet.length; ++i )
{
sHyperlinkId = aHyperlinkElementSet[i].getAttribute( 'id' );
if( sHyperlinkId )
this.aHyperlinkIdSet.push( sHyperlinkId );
else
log( 'error: AnimatedTextElement constructor: hyperlink element has no id' );
}

AnimatedTextElement.superclass.constructor.call( this, aAnimatableElement, aEventMultiplexer );

}
extend( AnimatedTextElement, AnimatedElement );


AnimatedTextElement.prototype.setToElement = function( aElement )
{
var bRet = AnimatedTextElement.superclass.setToElement.call( this, aElement );
if( bRet )
{
this.aGraphicGroupElement = getElementByClassName( this.aActiveElement, 'GraphicGroup' );
}
return ( bRet && this.aGraphicGroupElement );
};

AnimatedTextElement.prototype.notifySlideStart = function( aSlideShowContext )
{
DBGLOG( 'AnimatedTextElement.notifySlideStart' );
AnimatedTextElement.superclass.notifySlideStart.call( this, aSlideShowContext );
this.aGraphicGroupElement = getElementByClassName( this.aActiveElement, 'GraphicGroup' );
this.restoreBaseTextParagraph();
};

AnimatedTextElement.prototype.notifySlideEnd = function()
{
DBGLOG( 'AnimatedTextElement.notifySlideEnd' );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
};

AnimatedTextElement.prototype.restoreBaseTextParagraph = function()
{
var aActiveParagraphElement = this.aActiveElement.firstElementChild.firstElementChild;
if( aActiveParagraphElement )
{
var sVisibilityAttr = this.aActiveElement.getAttribute( 'visibility' );
if( !sVisibilityAttr || ( sVisibilityAttr === 'visible' ) )
sVisibilityAttr = 'inherit';
if( sVisibilityAttr === 'inherit' )
this.aGraphicGroupElement.setAttribute( 'visibility', 'visible' );
else
this.aGraphicGroupElement.setAttribute( 'visibility', 'hidden' );

var aParagraphClone = aActiveParagraphElement.cloneNode( true );
aParagraphClone.setAttribute( 'id', this.sParagraphId );
aParagraphClone.setAttribute( 'visibility', sVisibilityAttr );
this.aParentTextElement.replaceChild( aParagraphClone, this.aParagraphElement );
this.aParagraphElement = aParagraphClone;


var aEventMultiplexer = this.aSlideShowContext.aEventMultiplexer;
var aHyperlinkIdSet = this.aHyperlinkIdSet;
var aHyperlinkElementSet = getElementsByClassName( this.aParagraphElement, 'UrlField' );
var i = 0;
for( ; i < aHyperlinkIdSet.length; ++i )
{
aEventMultiplexer.notifyElementChangedEvent( aHyperlinkIdSet[i], aHyperlinkElementSet[i] );
}
}
this.aActiveElement.setAttribute( 'visibility', 'hidden' );
};

AnimatedTextElement.prototype.notifyAnimationStart = function()
{
DBGLOG( 'AnimatedTextElement.notifyAnimationStart' );
if( this.nRunningAnimations === 0 )
{
var sVisibilityAttr = this.aParagraphElement.getAttribute( 'visibility' );
if( !sVisibilityAttr )
sVisibilityAttr = 'inherit';
this.aActiveElement.setAttribute( 'visibility', sVisibilityAttr );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
this.aParagraphElement.setAttribute( 'visibility', 'hidden' );
}
++this.nRunningAnimations;
};

AnimatedTextElement.prototype.notifyAnimationEnd = function()
{
DBGLOG( 'AnimatedTextElement.notifyAnimationEnd' );
--this.nRunningAnimations;
if( this.nRunningAnimations === 0 )
{
this.restoreBaseTextParagraph();
}
};

AnimatedTextElement.prototype.saveState = function( nAnimationNodeId )
{
if( this.nRunningAnimations === 0 )
{
var sVisibilityAttr = this.aParagraphElement.getAttribute( 'visibility' );
this.aActiveElement.setAttribute( 'visibility', sVisibilityAttr );
this.aGraphicGroupElement.setAttribute( 'visibility', 'inherit' );
}
AnimatedTextElement.superclass.saveState.call( this, nAnimationNodeId );
};

}
}
};

AnimatedElement.prototype.getStrokeColor = function()
{
var aChildSet = getElementChildren( this.aActiveElement );
var sStrokeColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sStrokeColorValue = aChildSet[i].getAttribute( 'stroke' );
if( sStrokeColorValue && ( sStrokeColorValue !== 'none' ) )
break;
}

return colorParser( sStrokeColorValue );
};

AnimatedElement.prototype.setStrokeColor = function( aRGBValue )
{
assert( aRGBValue instanceof RGBColor,
'AnimatedElement.setFillColor: value argument is not an instance of RGBColor' );

var sValue = aRGBValue.toString( true /* clamped values */ );
var aChildSet = getElementChildren( this.aActiveElement );

var sStrokeColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sStrokeColorValue = aChildSet[i].getAttribute( 'stroke' );
if( sStrokeColorValue && ( sStrokeColorValue !== 'none' ) )
{
aChildSet[i].setAttribute( 'stroke', sValue );
}
}
};

AnimatedElement.prototype.getFontColor = function()
{
return new RGBColor( 0, 0, 0 );
};

AnimatedElement.prototype.setFontColor = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setFontColor(' + sValue + ')' );
};

AnimatedElement.prototype.DBG = function( sMessage, nTime )
{
aAnimatedElementDebugPrinter.print( 'AnimatedElement(' + this.getId() + ')' + sMessage, nTime );
};


function AnimatedTextElement( aElement, aEventMultiplexer )
{
var theDocument = document;

var sTextType = aElement.getAttribute( 'class' );
var bIsListItem = ( sTextType === 'ListItem' );
if( ( sTextType !== 'TextParagraph' ) && !bIsListItem )
{
log( 'AnimatedTextElement: passed element is not a paragraph.' );
return;
}
var aTextShapeElement = aElement.parentNode;
sTextType = aTextShapeElement.getAttribute( 'class' );
if( sTextType !== 'SVGTextShape' )
{
log( 'AnimatedTextElement: element parent is not a text shape.' );
return;
}
var aTextShapeGroup = aTextShapeElement.parentNode;
var aAnimatedElementGroup = getElementByClassName( aTextShapeGroup, 'AnimatedElements' );
if( !aAnimatedElementGroup )
{
aAnimatedElementGroup = theDocument.createElementNS( NSS['svg'], 'g' );
aAnimatedElementGroup.setAttribute( 'class', 'AnimatedElements' );
aTextShapeGroup.appendChild( aAnimatedElementGroup );
}

var aAnimatableElement = theDocument.createElementNS( NSS['svg'], 'g' );
var aTextElement = theDocument.createElementNS( NSS['svg'], 'text' );
var aParagraphElement = aElement.cloneNode( true );

this.aGraphicGroupElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aGraphicGroupElement.setAttribute( 'class', 'GraphicGroup' );

var aBulletCharClone = null;
var aBulletCharElem = null;
var bIsBulletCharStyle =
( aElement.getAttributeNS( NSS['ooo'], aOOOAttrListItemNumberingType ) === 'bullet-style' );
if( bIsBulletCharStyle )
{
var aBulletCharGroupElem = getElementByClassName( aTextShapeGroup, 'BulletChars' );
if( aBulletCharGroupElem )
{
var aBulletPlaceholderElem = getElementByClassName( aElement, 'BulletPlaceholder' );
if( aBulletPlaceholderElem )
{
var sId = aBulletPlaceholderElem.getAttribute( 'id' );
sId = 'bullet-char(' + sId + ')';
aBulletCharElem = theDocument.getElementById( sId );
if( aBulletCharElem )
{
aBulletCharClone = aBulletCharElem.cloneNode( true );
}
else
{
log( 'AnimatedTextElement: ' + sId + ' not found.' );
}
}
else
{
log( 'AnimatedTextElement: no bullet placeholder found' );
}
}
else
{
log( 'AnimatedTextElement: no bullet char group found' );
}
}

var aBitmapElemSet = [];
var aBitmapCloneSet = [];
var aBitmapPlaceholderSet = getElementsByClassName( aElement, 'BitmapPlaceholder' );
var i;
if( aBitmapPlaceholderSet )
{
for( i = 0; i < aBitmapPlaceholderSet.length; ++i )
{
sId = aBitmapPlaceholderSet[i].getAttribute( 'id' );
var sBitmapChecksum = sId.substring( 'bitmap-placeholder'.length + 1, sId.length - 1 );
sId = 'embedded-bitmap(' + sBitmapChecksum + ')';
aBitmapElemSet[i] = theDocument.getElementById( sId );
if( aBitmapElemSet[i] )
{
aBitmapCloneSet[i] = aBitmapElemSet[i].cloneNode( true );
}
else
{
log( 'AnimatedTextElement: ' + sId + ' not found.' );
}
}
}


this.sParagraphId = sId = aParagraphElement.getAttribute( 'id' );
aParagraphElement.removeAttribute( 'id' );
aAnimatableElement.setAttribute( 'id', sId +'.a' );
if( aBulletCharClone )
this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( 0, nNewCenterY - this.nCenterY );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterY = nNewCenterY;
};

AnimatedElement.prototype.setWidth = function( nNewWidth )
{
ANIMDBG.print( 'AnimatedElement.setWidth: nNewWidth = ' + nNewWidth );
if( nNewWidth < 0 )
{
log('AnimatedElement(' + this.getId() + ').setWidth: negative height!');
nNewWidth = 0;
}

var nBaseWidth = this.getBaseBBox().width;
var nScaleFactorX = nNewWidth / nBaseWidth;

if( nScaleFactorX < 1e-5 ) nScaleFactorX = 1e-5;
if( nScaleFactorX == this.nScaleFactorX ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( nScaleFactorX, this.nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorX = nScaleFactorX;
};

AnimatedElement.prototype.setHeight = function( nNewHeight )
{
ANIMDBG.print( 'AnimatedElement.setWidth: nNewHeight = ' + nNewHeight );
if( nNewHeight < 0 )
{
log('AnimatedElement(' + this.getId() + ').setWidth: negative height!');
nNewHeight = 0;
}

var nBaseHeight = this.getBaseBBox().height;
var nScaleFactorY = nNewHeight / nBaseHeight;

if( nScaleFactorY < 1e-5 ) nScaleFactorY = 1e-5;
if( nScaleFactorY == this.nScaleFactorY ) return;

this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(this.nRotationAngle)
.scaleNonUniform( this.nScaleFactorX, nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nScaleFactorY = nScaleFactorY;
};

AnimatedElement.prototype.getOpacity = function()
{
return this.aActiveElement.getAttribute( 'opacity' );
};

AnimatedElement.prototype.setOpacity = function( nValue )
{
this.aActiveElement.setAttribute( 'opacity', nValue );
};

AnimatedElement.prototype.getRotationAngle = function()
{
return this.nRotationAngle;
};

AnimatedElement.prototype.setRotationAngle = function( nNewRotAngle )
{
this.aTMatrix = document.documentElement.createSVGMatrix()
.translate( this.nCenterX, this.nCenterY )
.rotate(nNewRotAngle)
.scaleNonUniform( this.nScaleFactorX, this.nScaleFactorY )
.translate( -this.nBaseCenterX, -this.nBaseCenterY );
this.updateTransformAttribute();

this.nRotationAngle = nNewRotAngle;
};

AnimatedElement.prototype.getVisibility = function()
{

var sVisibilityValue = this.aActiveElement.getAttribute( 'visibility' );
if( !sVisibilityValue || ( sVisibilityValue === 'inherit' ) )
return 'visible'; // TODO: look for parent visibility!
else
return sVisibilityValue;
};

AnimatedElement.prototype.setVisibility = function( sValue )
{
if( sValue == 'visible' )
sValue = 'inherit';
this.aActiveElement.setAttribute( 'visibility', sValue );
};

AnimatedElement.prototype.getStrokeStyle = function()
{
return 'solid';
};

AnimatedElement.prototype.setStrokeStyle = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setStrokeStyle(' + sValue + ')' );
};

AnimatedElement.prototype.getFillStyle = function()
{
return 'solid';
};

AnimatedElement.prototype.setFillStyle = function( sValue )
{
ANIMDBG.print( 'AnimatedElement.setFillStyle(' + sValue + ')' );
};

AnimatedElement.prototype.getFillColor = function()
{
var aChildSet = getElementChildren( this.aActiveElement );
var sFillColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sFillColorValue = aChildSet[i].getAttribute( 'fill' );
if( sFillColorValue && ( sFillColorValue !== 'none' ) )
break;
}

return colorParser( sFillColorValue );
};

AnimatedElement.prototype.setFillColor = function( aRGBValue )
{
assert( aRGBValue instanceof RGBColor,
'AnimatedElement.setFillColor: value argument is not an instance of RGBColor' );

var sValue = aRGBValue.toString( true /* clamped values */ );
var aChildSet = getElementChildren( this.aActiveElement );

var sFillColorValue = '';
for( var i = 0; i <  aChildSet.length; ++i )
{
sFillColorValue = aChildSet[i].getAttribute( 'fill' );
if( sFillColorValue && ( sFillColorValue !== 'none' ) )
{
aChildSet[i].setAttribute( 'fill', sValue );
aState.nCenterY = this.nCenterY;
aState.nScaleFactorX = this.nScaleFactorX;
aState.nScaleFactorY = this.nScaleFactorY;
aState.nRotationAngle = this.nRotationAngle;

};

AnimatedElement.prototype.restoreState = function( nAnimationNodeId )
{
if( !this.aStateSet[ nAnimationNodeId ] )
{
log( 'AnimatedElement(' + this.getId() + ').restoreState: state '
+nAnimationNodeId  + ' is not valid' );
return false;
}

ANIMDBG.print( 'AnimatedElement(' + this.getId() + ').restoreState(' + nAnimationNodeId +')' );
var aState = this.aStateSet[ nAnimationNodeId ];
var bRet = this.setToElement( aState.aElement );
if( bRet )
{
this.nCenterX = aState.nCenterX;
this.nCenterY = aState.nCenterY;
this.nScaleFactorX = aState.nScaleFactorX;
this.nScaleFactorY = aState.nScaleFactorY;
this.nRotationAngle = aState.nRotationAngle;
}
return bRet;
};

AnimatedElement.prototype.getBaseBBox = function()
{
return this.aBaseBBox;
};

AnimatedElement.prototype.getBaseCenterX = function()
{
return this.nBaseCenterX;
};

AnimatedElement.prototype.getBaseCenterY = function()
{
return this.nBaseCenterY;
};

AnimatedElement.prototype.getBBox = function()
{
return this.aActiveElement.parentNode.getBBox();
};

AnimatedElement.prototype.getBBoxWithStroke = function()
{
var aBBox = this.aActiveElement.parentNode.getBBox();

var aChildrenSet = this.aActiveElement.childNodes;

var sStroke, sStrokeWidth;
var nStrokeWidth = 0;
var i;
for( i = 0; i < aChildrenSet.length; ++i )
{
if( ! aChildrenSet[i].getAttribute  )
continue;

sStroke = aChildrenSet[i].getAttribute( 'stroke' );
if( sStroke && sStroke != 'none' )
{
sStrokeWidth = aChildrenSet[i].getAttribute( 'stroke-width' );
var nSW = parseFloat( sStrokeWidth );
if( nSW > nStrokeWidth )
nStrokeWidth = nSW;
}
}

if( nStrokeWidth == 0 )
{
sStrokeWidth = ROOT_NODE.getAttribute( 'stroke-width' );
nStrokeWidth = parseFloat( sStrokeWidth );
}
if( nStrokeWidth != 0 )
{
nStrokeWidth *= 1.1;
var nHalfStrokeWidth = nStrokeWidth / 2;
var nDoubleStrokeWidth = nStrokeWidth * 2;

var aEBBox = document.documentElement.createSVGRect();
aEBBox.x = aBBox.x - nHalfStrokeWidth;
aEBBox.y = aBBox.y - nHalfStrokeWidth;
aEBBox.width = aBBox.width + nDoubleStrokeWidth;
aEBBox.height = aBBox.height + nDoubleStrokeWidth;
aBBox = aEBBox;
}
return aBBox;
};

AnimatedElement.prototype.setClipPath = function( aClipPathContent )
{
if( this.aClipPathContent )
{
var aTranslation = SVGIdentityMatrix.translate( this.aClippingBBox.x,
this.aClippingBBox.y);
aClipPathContent.matrixTransform( aTranslation );
var sPathData = aClipPathContent.getAttribute( 'd' );
this.aClipPathContent.setAttribute( 'd', sPathData );
}
};


AnimatedElement.prototype.getX = function()
{
return this.nCenterX;
};

AnimatedElement.prototype.getY = function()
{
return this.nCenterY;
};

AnimatedElement.prototype.getWidth = function()
{
return this.nScaleFactorX * this.getBaseBBox().width;
};

AnimatedElement.prototype.getHeight = function()
{
return this.nScaleFactorY * this.getBaseBBox().height;
};

AnimatedElement.prototype.updateTransformAttribute = function()
{
this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTransformAttr.setMatrix( this.aTMatrix );
};

AnimatedElement.prototype.setX = function( nNewCenterX )
{
if( nNewCenterX === this.nCenterX ) return;

this.aTransformAttrList = this.aActiveElement.transform.baseVal;
this.aTransformAttr = this.aTransformAttrList.getItem( 0 );
this.aTMatrix = this.aTransformAttr.matrix.translate( nNewCenterX - this.nCenterX, 0 );
this.aTransformAttr.setMatrix( this.aTMatrix );
this.nCenterX = nNewCenterX;
};

AnimatedElement.prototype.setY = function( nNewCenterY )
{
if( nNewCenterY === this.nCenterY ) return;

log( 'AnimatedElement constructor: element is not valid' );
}

this.aSlideShowContext = null;

this.aBaseElement = aElement.cloneNode( true );
this.aActiveElement = aElement;
this.sElementId = this.aActiveElement.getAttribute( 'id' );

this.aBaseBBox = this.aActiveElement.getBBox();
this.nBaseCenterX = this.aBaseBBox.x + this.aBaseBBox.width / 2;
this.nBaseCenterY = this.aBaseBBox.y + this.aBaseBBox.height / 2;


this.aClipPathElement = null;
this.aClipPathContent = null;

this.aPreviousElement = null;
this.aStateSet = {};

this.eAdditiveMode = ADDITIVE_MODE_REPLACE;
this.bIsUpdated = true;

this.aTMatrix = document.documentElement.createSVGMatrix();
this.aCTM = document.documentElement.createSVGMatrix();
this.aICTM = document.documentElement.createSVGMatrix();

this.initElement();
}

AnimatedElement.prototype.initElement = function()
{
this.nCenterX = this.nBaseCenterX;
this.nCenterY = this.nBaseCenterY;
this.nScaleFactorX = 1.0;
this.nScaleFactorY = 1.0;
this.nRotationAngle = 0.0;

this.aActiveElement.setAttribute( 'transform', makeMatrixString( 1, 0, 0, 1, 0, 0 ) );
};

AnimatedElement.prototype.initClipPath = function()
{
this.aClipPathElement = document.createElementNS( NSS['svg'], 'clipPath' );

var sId = 'clip-path-' + this.sElementId;
this.aClipPathElement.setAttribute( 'id', sId );
this.aClipPathElement.setAttribute( 'clipPathUnits', 'userSpaceOnUse' );

this.aClipPathContent = document.createElementNS( NSS['svg'], 'path' );
this.aClippingBBox = this.getBBoxWithStroke();
var nWidth = this.aClippingBBox.width;
var nHeight = this.aClippingBBox.height;
var sPathData = 'M ' + this.aClippingBBox.x + ' ' + this.aClippingBBox.y +
' h ' + nWidth + ' v ' + nHeight + ' h -' + nWidth + ' z';
this.aClipPathContent.setAttribute( 'd', sPathData );
this.aClipPathElement.appendChild( this.aClipPathContent );

var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.appendChild( this.aClipPathElement );

var sRef = 'url(#' + sId + ')';
this.aActiveElement.setAttribute( 'clip-path', sRef );
};

AnimatedElement.prototype.cleanClipPath = function()
{
this.aActiveElement.removeAttribute( 'clip-path' );

if( this.aClipPathElement )
{
var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.removeChild( this.aClipPathElement );
this.aClipPathElement = null;
this.aClipPathContent = null;
}
};

AnimatedElement.prototype.getId = function()
{
return this.aActiveElement.getAttribute( 'id' );
};

AnimatedElement.prototype.getAdditiveMode = function()
{
return this.eAdditiveMode;
};

AnimatedElement.prototype.setAdditiveMode = function( eAdditiveMode )
{
this.eAdditiveMode = eAdditiveMode;
};

AnimatedElement.prototype.setToElement = function( aElement )
{
if( !aElement )
{
log( 'AnimatedElement(' + this.getId() + ').setToElement: element is not valid' );
return false;
}

var aClone = aElement.cloneNode( true );
this.aPreviousElement = this.aActiveElement.parentNode.replaceChild( aClone, this.aActiveElement );
this.aActiveElement = aClone;

return true;
};

AnimatedElement.prototype.notifySlideStart = function( aSlideShowContext )
{
if( !aSlideShowContext )
{
log( 'AnimatedElement.notifySlideStart: slideshow context is not valid' );
}
this.aSlideShowContext = aSlideShowContext;

var aClone = this.aBaseElement.cloneNode( true );
this.aActiveElement.parentNode.replaceChild( aClone, this.aActiveElement );
this.aActiveElement = aClone;

this.initElement();
this.DBG( '.notifySlideStart invoked' );
};

AnimatedElement.prototype.notifySlideEnd = function()
{
};

AnimatedElement.prototype.notifyAnimationStart = function()
{
};

AnimatedElement.prototype.notifyAnimationEnd = function()
{
};

AnimatedElement.prototype.notifyNextEffectStart = function( /*nEffectIndex*/ )
{
};

AnimatedElement.prototype.saveState = function( nAnimationNodeId )
{
ANIMDBG.print( 'AnimatedElement(' + this.getId() + ').saveState(' + nAnimationNodeId +')' );
if( !this.aStateSet[ nAnimationNodeId ] )
{
this.aStateSet[ nAnimationNodeId ] = {};
}
var aState = this.aStateSet[ nAnimationNodeId ];
aState.aElement = this.aActiveElement.cloneNode( true );
aState.nCenterX = this.nCenterX;
function AnimatedSlide( aMetaSlide )
{
if( !aMetaSlide )
{
log( 'AnimatedSlide constructor: meta slide is not valid' );
}

this.aMetaSlide = aMetaSlide;
this.aSlideElement = this.aMetaSlide.slideElement;
this.sSlideId = this.aMetaSlide.slideId;

this.aUsedAttributeSet = [];

this.aClipPathElement = null;
this.aClipPathContent = null;
this.bIsClipped = false;
}

AnimatedSlide.prototype.show = function()
{
this.aMetaSlide.show();
};

AnimatedSlide.prototype.hide = function()
{
this.aMetaSlide.hide();
};

AnimatedSlide.prototype.notifyUsedAttribute = function( sName )
{
if( sName == 'clip-path' )
{
this.initClipPath();
this.bIsClipped = true;
}
else
{
this.aUsedAttributeSet.push( sName );
}
};

AnimatedSlide.prototype.reset = function()
{
if( this.bIsClipped )
{
this.cleanClipPath();
this.bIsClipped = false;
}

var i;
for( i = 0; i < this.aUsedAttributeSet.length; ++i )
{
var sAttrName = this.aUsedAttributeSet[i];
this.aSlideElement.removeAttribute( sAttrName );
}
this.aUsedAttributeSet = [];
};

AnimatedSlide.prototype.initClipPath = function()
{
this.aClipPathElement = document.createElementNS( NSS['svg'], 'clipPath' );

var sId = 'clip-path-' + this.sSlideId;
this.aClipPathElement.setAttribute( 'id', sId );
this.aClipPathElement.setAttribute( 'clipPathUnits', 'userSpaceOnUse' );

this.aClipPathContent = document.createElementNS( NSS['svg'], 'path' );
var sPathData = 'M 0 0 h ' + WIDTH + ' v ' + HEIGHT + ' h -' + WIDTH + ' z';
this.aClipPathContent.setAttribute( 'd', sPathData );
this.aClipPathElement.appendChild( this.aClipPathContent );

var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.appendChild( this.aClipPathElement );

var sRef = 'url(#' + sId + ')';
this.aSlideElement.parentNode.setAttribute( 'clip-path', sRef );
};

AnimatedSlide.prototype.cleanClipPath = function()
{
this.aSlideElement.parentNode.removeAttribute( 'clip-path' );

if( this.aClipPathElement )
{
var aClipPathGroup = theMetaDoc.aClipPathGroup;
aClipPathGroup.removeChild( this.aClipPathElement );
this.aClipPathElement = null;
this.aClipPathContent = null;
}
};

AnimatedSlide.prototype.insertBefore = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.insertBefore( aElement, this.aSlideElement );
}
};

AnimatedSlide.prototype.appendElement = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.appendChild( aElement );
}
};

AnimatedSlide.prototype.removeElement = function( aElement )
{
if( aElement )
{
this.aSlideElement.parentNode.removeChild( aElement );
}
};

AnimatedSlide.prototype.getWidth = function()
{
return WIDTH;
};

AnimatedSlide.prototype.getHeight = function()
{
return HEIGHT;
};

AnimatedSlide.prototype.setOpacity = function( nValue )
{
this.aSlideElement.setAttribute( 'opacity', nValue );
};

AnimatedSlide.prototype.translate = function( nDx, nDy )
{
var sTransformAttr = 'translate(' + nDx + ',' + nDy + ')';
this.aSlideElement.setAttribute( 'transform', sTransformAttr );
};

AnimatedSlide.prototype.setClipPath = function( aClipPathContent )
{
if( this.aClipPathContent )
{
var sPathData = aClipPathContent.getAttribute( 'd' );
this.aClipPathContent.setAttribute( 'd', sPathData );
}
};


function AnimatedElement( aElement )
{
if( !aElement )
{
else
res.appendPath(this.calcHalfDiagonalSnake(2.0*nT, true));
}
else
res = this.calcSnake(nT);

return this.flipOnYAxis ? flipOnYAxis(res) : res;
}

function ParallelSnakesWipePath(nElements, bDiagonal, bFlipOnYAxis, bOpposite) {
SnakeWipePath.call(this, nElements, bDiagonal, bFlipOnYAxis);
this.bOpposite = bOpposite;
}

ParallelSnakesWipePath.prototype = Object.create(SnakeWipePath);

ParallelSnakesWipePath.prototype.perform = function( nT ) {
var res = createEmptyPath(), half, aTransform;
if(this.diagonal) {
assert(this.bOpposite);
half = SnakeWipePath.prototype.calcHalfDiagonalSnake.call(this, nT, false);
aTransform = SVGIdentityMatrix.scale(1, -1);
aTransform.translate(-0.5, 0.5);
aTransform.rotate(Math.PI/2);
aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
half.changeOrientation();
res.appendPath(half);

aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform.rotate(Math.PI);
aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
res.appendPath(half);
}
else {
half = SnakeWipePath.prototype.calcSnake.call(this, nT / 2.0 );
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.rotate(Math.PI/2);
aTransform = aTransform.translate(0.5, 0.5);
half.matrixTransform(aTransform);
res.appendPath(flipOnYAxis(half));
res.appendPath(this.bOpposite ? flipOnXAxis(half) : half);
}

return this.flipOnYAxis ? flipOnYAxis(res) : res;
}

function SpiralWipePath(nElements, bFlipOnYAxis) {
this.nElements    = nElements;
this.sqrtElements = Math.floor(Math.sqrt(nElements));
this.bFlipOnYAxis = bFlipOnYAxis;
}

SpiralWipePath.prototype.calcNegSpiral = function( nT ) {
var area  = nT * this.nElements;
var e     = (Math.sqrt(area) / 2.0);
var edge  = Math.floor(e) * 2;

var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
var edge_ = pruneScaleValue(edge / this.sqrtElements);

aTransform = aTransform.scale(edge_, edge_);
aTransform = aTransform.translate(0.5, 0.5);
var poly = createUnitSquarePath();
poly.matrixTransform(aTransform);
var res = poly.cloneNode(true);

if(1.0 - nT != 0) {
var edge1 = edge + 1;
var len   = Math.floor( (e - edge/2) * edge1 * 4);
var w     = Math.PI / 2;

while(len > 0) {
var alen = Math.min(len, edge1);
len -= alen;
poly = createUnitSquarePath();
aTransform = SVGIdentityMatrix.scale(
pruneScaleValue( alen / this.sqrtElements ),
pruneScaleValue( 1.0 / this.sqrtElements ));
aTransform = aTransform.translate(
- pruneScaleValue( (edge / 2) / this.sqrtElements ),
pruneScaleValue( (edge / 2) / this.sqrtElements ));
aTransform = aTransform.rotate( w );
w -= Math.PI / 2;
aTransform = aTransform.translate(0.5, 0.5);
poly.matrixTransform(aTransform);
res.appendPath(poly);
}
}

return res;
}

SpiralWipePath.prototype.perform = function( nT ) {
var res         = createUnitSquarePath();
var innerSpiral = this.calcNegSpiral( 1.0 - nT );
innerSpiral.changeOrientation();
res.appendPath(innerSpiral);

return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function BoxSnakesWipePath(nElements, bFourBox) {
SpiralWipePath.call(this, nElements);
this.bFourBox = bFourBox;
}

BoxSnakesWipePath.prototype = Object.create(SpiralWipePath);

BoxSnakesWipePath.prototype.perform = function( nT ) {
var res = createUnitSquarePath(), aTransform;
var innerSpiral = SpiralWipePath.prototype.calcNegSpiral.call(this, 1.0 - nT);
innerSpiral.changeOrientation();

if(this.bFourBox) {
aTransform = SVGIdentityMatrix.scale(0.5, 0.5);
innerSpiral.matrixTransform(aTransform);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
innerSpiral = flipOnYAxis(innerSpiral);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
}
else {
aTransform = SVGIdentityMatrix.scale(1.0, 0.5);
innerSpiral.matrixTransform(aTransform);
res.appendPath(innerSpiral);
res.appendPath(flipOnXAxis(innerSpiral));
}
return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function VeeWipePath() { }

VeeWipePath.prototype.perform = function( nT ) {
const d = pruneScaleValue(2.0 * nT);
var polyPath = 'M ' + 0.0 + ' ' + -1.0 + ' ';
polyPath += 'L ' + 0.0 + ' ' + (d - 1.0) + ' ';
polyPath += 'L ' + 0.5 + ' ' + d + ' ';
polyPath += 'L ' + 1.0 + ' ' + (d - 1.0) + ' ';
polyPath += 'L ' + 1.0 + ' ' + -1.0 + ' ';
polyPath += 'L ' + 0.0 + ' ' + -1.0 + ' ';

var aPolyPolyPath = document.createElementNS( NSS['svg'], 'path');
aPolyPolyPath.setAttribute('d', polyPath);
return aPolyPolyPath;
}


this.aBasePath    = createUnitSquarePath();
}

SnakeWipePath.prototype.calcSnake = function(t)
{
var aPolyPath = createEmptyPath();
const area   = (t * this.sqrtElements * this.sqrtElements);
const line_  = Math.floor(area) / this.sqrtElements;
const line   = pruneScaleValue(line_ / this.sqrtElements);
const col    = pruneScaleValue((area - (line_ * this.sqrtElements)) / this.sqrtElements);

if(line != 0) {
let aPath = 'M '+ 0.0 + ' ' + 0.0 + ' ';
aPath += 'L ' + 0.0 + ' ' + line + ' ';
aPath += 'L ' + 1.0 + ' ' + line + ' ';
aPath += 'L ' + 1.0 + ' ' + 0.0 + ' ';
aPath += 'L 0 0 ';
let poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
aPolyPath.appendPath(poly);
}
if(col != 0) {
var offset = 0.0;
if((line_ & 1) == 1) {
offset = (1.0 - col);
}
let aPath = 'M ' + offset + ' ' + line + ' ';
aPath += 'L '+ offset + ' ' + (line + this.elementEdge) + ' ';
aPath += 'L ' + (offset+col) + ' ' + (line + this.elementEdge) + ' ';
aPath += 'L ' + (offset+col) + ' ' + line + ' ';
aPath += 'L ' + offset + ' ' + line + ' ';
let poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
aPolyPath.appendPath(poly);
}

return aPolyPath;
}

SnakeWipePath.prototype.calcHalfDiagonalSnake = function(nT, bIn) {
var res = createEmptyPath();

if(bIn) {
const sqrtArea2 = Math.sqrt(nT * this.sqrtElements * this.sqrtElements);
const edge = pruneScaleValue(sqrtArea2 / this.sqrtElements);

var aPath, aPoint = document.documentElement.createSVGPoint();
if(edge) {
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = edge;
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);
}
const a = (Math.SQRT1_2 / this.sqrtElements);
const d = (sqrtArea2 - Math.floor(sqrtArea2));
const len = (nT * Math.SQRT1_2 * d);
const height = pruneScaleValue(Math.SQRT1_2 / this.sqrtElements);
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = height;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = len + a;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
let aTransform;

if((Math.floor(sqrtArea2) & 1) == 1) {
aTransform = SVGIdentityMatrix.rotate((Math.PI)/2 + (Math.PI)/4);
aTransform.translate(edge + this.elementEdge, 0.0);
}
else {
aTransform = SVGIdentityMatrix.translate(-a, 0.0);
aTransform.rotate(-(Math.PI/4));
aTransform.translate(0.0, edge);
}

poly.matrixTransform(aTransform);
res.appendPath(poly);
}
else { //out
const sqrtArea2 = Math.sqrt(nT * this.sqrtElements * this.sqrtElements);
const edge = pruneScaleValue(Math.floor(sqrtArea2)/this.sqrtElements);

let aPath, aPoint = document.documentElement.createSVGPoint();
if(edge != 0) {
aPoint.y = 1.0;
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 1.0;
aPoint.y = edge;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);
}
const a = (Math.SQRT1_2 / this.sqrtElements);
const d = (sqrtArea2 - Math.floor(sqrtArea2));
const len = ((1.0 - nT) * Math.SQRT2 * d);
const height = pruneScaleValue(Math.SQRT1_2 / this.sqrtElements);
aPath = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = height;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = len + a;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.y = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
aPoint.x = 0.0;
aPath += 'L ' + aPoint.x + ' ' + aPoint.y + ' ';
const poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
let aTransform;

if((Math.floor(sqrtArea2) & 1) == 1) {
aTransform = SVGIdentityMatrix.translate(0.0, -height);
aTransform.rotate(Math.PI/2 + Math.PI/4);
aTransform.translate(1.0, edge);
}
else {
aTransform = SVGIdentityMatrix.rotate(-(Math.PI/4));
aTransform = aTransform.translate(edge, 1.0);
}
poly.matrixTransform(aTransform);
res.appendPath(poly);
}
return res;
}

SnakeWipePath.prototype.perform = function(nT) {
var res = createEmptyPath();
if(this.diagonal) {
if(nT >= 0.5) {
res.appendPath(this.calcHalfDiagonalSnake(1.0, true));
res.appendPath(this.calcHalfDiagonalSnake(2.0*(nT-0.5), false));
}

function BarnZigZagWipePath( nZigs ) { ZigZagWipePath.call(this, nZigs); }

BarnZigZagWipePath.prototype = Object.create(ZigZagWipePath);

BarnZigZagWipePath.prototype.perform = function( nT ) {
var res = createEmptyPath();
var poly = document.createElementNS( NSS['svg'], 'path');
var aTransform = SVGIdentityMatrix.translate(
((1.0 + this.zigEdge) * (1.0 - nT)) / 2.0, 0.0);
poly.setAttribute('d', this.aBasePath);
poly.changeOrientation();
poly.matrixTransform(aTransform);
res.appendPath(poly);

aTransform = SVGIdentityMatrix.scale(-1.0, 1.0);
aTransform.translate(1.0, this.zigEdge / 2.0);
poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', this.aBasePath);
poly.matrixTransform(aTransform);
res.appendPath(poly);

return res;
}

function CheckerBoardWipePath( unitsPerEdge )
{
this.unitsPerEdge = unitsPerEdge;
if( this.unitsPerEdge === undefined || this.unitsPerEdge < 1 )
this.unitsPerEdge = 10;
this.aBasePath = createUnitSquarePath();
}

CheckerBoardWipePath.prototype.perform = function( nT )
{
var d = pruneScaleValue(1.0 / this.unitsPerEdge);
var aMatrix = SVGIdentityMatrix.scaleNonUniform(pruneScaleValue( d*2.0*nT ),
pruneScaleValue( d ) );

var aPolyPath = null;
var i, j;
var aTransform;
var aPath;
for ( i = this.unitsPerEdge; i--; )
{
aTransform = SVGIdentityMatrix;

if ((i % 2) == 1) // odd line
aTransform = aTransform.translate( -d, 0.0 );

aTransform = aTransform.multiply( aMatrix );

for ( j = (this.unitsPerEdge / 2) + 1; j--;)
{
aPath = this.aBasePath.cloneNode( true );
aPath.matrixTransform( aTransform );
if (aPolyPath == null) aPolyPath = aPath;
else aPolyPath.appendPath( aPath );
aTransform = SVGIdentityMatrix.translate( d*2.0, 0.0 ).multiply( aTransform );
}

aMatrix = SVGIdentityMatrix.translate( 0.0, d ).multiply( aMatrix ); // next line
}

return aPolyPath;
};


function RandomWipePath( nElements, bRandomBars )
{
this.nElements = nElements;
this.aBasePath = createUnitSquarePath();
this.aPositionArray = new Array( nElements );
this.aClipPath = createEmptyPath();
this.nAlreadyAppendedElements = 0;

var fEdgeLength, nPos, aTransform;

if( bRandomBars ) // random bar wipe
{
fEdgeLength = 1.0 / nElements;
for( nPos = 0; nPos < nElements; ++nPos )
{
this.aPositionArray[nPos] = { x: 0.0, y: pruneScaleValue( nPos * fEdgeLength ) }
}
aTransform = SVGIdentityMatrix.scaleNonUniform( 1.0, pruneScaleValue( fEdgeLength ) );
}
else // dissolve wipe
{
var nSqrtElements = Math.round( Math.sqrt( nElements ) );
fEdgeLength = 1.0 / nSqrtElements;
for( nPos = 0; nPos < nElements; ++nPos )
{
this.aPositionArray[nPos] = {
x: pruneScaleValue( ( nPos % nSqrtElements ) * fEdgeLength ),
y: pruneScaleValue( ( nPos / nSqrtElements ) * fEdgeLength ) }
}
aTransform = SVGIdentityMatrix.scale( pruneScaleValue( fEdgeLength ) );
}
this.aBasePath.matrixTransform( aTransform );

var nPos1, nPos2;
var tmp;
for( nPos1 = nElements - 1; nPos1 > 0; --nPos1 )
{
nPos2 = getRandomInt( nPos1 + 1 );
tmp = this.aPositionArray[nPos1];
this.aPositionArray[nPos1] = this.aPositionArray[nPos2];
this.aPositionArray[nPos2] = tmp;
}
}

RandomWipePath.prototype.perform = function( nT )
{
var aPolyPath = createEmptyPath();
var aPoint;
var aPath;
var aTransform;
var nElements = Math.round( nT * this.nElements );
if( nElements === 0 )
{
return aPolyPath;
}
if( this.nAlreadyAppendedElements >= nElements )
{
this.nAlreadyAppendedElements = 0;
this.aClipPath = createEmptyPath();
}
var nPos;
for( nPos = this.nAlreadyAppendedElements; nPos < nElements; ++nPos )
{
aPoint = this.aPositionArray[nPos];
aPath = this.aBasePath.cloneNode( true );
aTransform = SVGIdentityMatrix.translate( aPoint.x, aPoint.y );
aPath.matrixTransform( aTransform );
aPolyPath.appendPath( aPath );
}

this.nAlreadyAppendedElements = nElements;
this.aClipPath.appendPath( aPolyPath );

return this.aClipPath.cloneNode( true );
};

function SnakeWipePath(nElements, bDiagonal, bflipOnYAxis)
{
this.sqrtElements = Math.floor(Math.sqrt(nElements));
this.elementEdge  = (1.0 / this.sqrtElements);
this.diagonal     = bDiagonal;
this.flipOnYAxis  = bflipOnYAxis;
aPath.setAttribute( 'd', sPathData );
return aPath;
};

PinWheelWipePath.prototype.perform = function( nT )
{
var aBasePath = PinWheelWipePath.calcCenteredClock( nT / this.nBlades,
2.0 /* max edge when rotating */  );

var aPolyPath = aBasePath.cloneNode( true );
var aPath;
var aRotation;
var i;
for( i = this.nBlades - 1; i > 0; --i )
{
aRotation = SVGIdentityMatrix.rotate( (i * 360) / this.nBlades );
aPath = aBasePath.cloneNode( true );
aPath.matrixTransform( aRotation );
aPolyPath.appendPath( aPath );
}

var aTransform = SVGIdentityMatrix.translate( 0.5, 0.5 ).scale( 0.5 );
aPolyPath.matrixTransform( aTransform );

return aPolyPath;
};

function BarnDoorWipePath(doubled) {
this.aBasePath = createUnitSquarePath();
this.doubled   = doubled;
}

BarnDoorWipePath.prototype.perform = function( nT ) {
if(this.doubled)
nT /= 2.0;
var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.scaleNonUniform(pruneScaleValue(nT), 1.0).translate(0.5, 0.5);
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
var res = aPath;

if(this.doubled) {
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.rotate(Math.PI / 2).translate(0.5, 0.5);
aPath.matrixTransform(aTransform);
res.appendPath(aPath);
}
return res;
}

function WaterfallWipePath(nElements, bFlipOnYAxis) {
this.bFlipOnYAxis = bFlipOnYAxis;

var sqrtElements = Math.floor(Math.sqrt(nElements));
var elementEdge = 1.0/sqrtElements;

var aPath = 'M '+ 0.0 + ' ' + -1.0 + ' ';
for(var pos = sqrtElements; pos--; ) {
var xPos = sqrtElements - pos - 1;
var yPos = pruneScaleValue( ((pos+1) * elementEdge) - 1.0);

aPath += 'L ' + pruneScaleValue(xPos * elementEdge) + ' ' + yPos + ' ';
aPath += 'L ' + pruneScaleValue((xPos+1)*elementEdge) + ' ' + yPos + ' ';
}
aPath += 'L ' + 1.0 + ' ' + -1.0 + ' ';
aPath += 'L ' + 0.0 + ' ' + -1.0 + ' ';
this.aBasePath = document.createElementNS( NSS['svg'], 'path');
this.aBasePath.setAttribute('d', aPath);
}

WaterfallWipePath.prototype.perform = function( nT ) {
var poly = this.aBasePath.cloneNode(true);
var aTransform = SVGIdentityMatrix.translate(0.0, pruneScaleValue(2.0 * nT));
poly.matrixTransform(aTransform);
var aHead = 'M ' + 0.0 + ' ' + -1.0 + ' ';
var aHeadPath= document.createElementNS( NSS['svg'], 'path');
aHeadPath.setAttribute('d', aHead);

var aTail = 'M ' + 1.0 + ' ' + -1.0 + ' ';
var aTailPath = document.createElementNS( NSS['svg'], 'path');
aTailPath.setAttribute('d', aTail);

poly.prependPath(aHeadPath);
poly.appendPath(aTailPath);

return this.bFlipOnYAxis ? flipOnYAxis(poly) : poly;
}

function DoubleDiamondWipePath() { }

DoubleDiamondWipePath.prototype.perform = function( nT ) {
var a = pruneScaleValue(0.25 + (nT * 0.75));
var aPath = 'M ' + (0.5 + a) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 - a) + ' ';
aPath += 'L ' + (0.5 - a) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 + a) + ' ';
aPath += 'L ' + (0.5 + a) + ' ' + 0.5 + ' ';
var poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
var res = poly.cloneNode(true);

var b = pruneScaleValue( (1.0 - nT) * 0.25);
aPath = 'M ' + (0.5 + b) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 + b) + ' ';
aPath += 'L ' + (0.5 - b) + ' ' + 0.5 + ' ';
aPath += 'L ' + 0.5 + ' ' + (0.5 - b) + ' ';
aPath += 'L ' + (0.5 + b) + ' ' + 0.5 + ' ';
poly = document.createElementNS( NSS['svg'], 'path');
poly.setAttribute('d', aPath);
res.appendPath(poly);

return res;
}

function IrisWipePath(unitRect) {
this.unitRect = unitRect;
this.aBasePath = createUnitSquarePath();
}


IrisWipePath.prototype.perform = function( nT ) {
var d = pruneScaleValue(nT);
var aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform = aTransform.multiply(SVGIdentityMatrix.scaleNonUniform(d, d).translate(0.5, 0.5));
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
return aPath;
}

function ZigZagWipePath(nZigs) {
this.zigEdge = 1.0/nZigs;
const d = this.zigEdge;
const d2 = (d / 2.0);
this.aBasePath = 'M ' + (-1.0 - d) + ' ' + -d + ' ';
this.aBasePath += 'L ' + (-1.0 - d) + ' ' + (1.0 + d) + ' ';
this.aBasePath += 'L ' + -d + ' ' + (1.0 + d) + ' ';

for(var pos = (nZigs + 2); pos--; ) {
this.aBasePath += 'L ' + 0.0 + ' ' + ((pos - 1) * d + d2) + ' ';
this.aBasePath += 'L ' + -d + ' ' + (pos - 1) * d + ' ';
}
this.aBasePath += 'L ' + (-1.0 - d) + ' ' + -d + ' ';
}

ZigZagWipePath.prototype.perform = function( nT ) {
var res = document.createElementNS( NSS['svg'], 'path');
res.setAttribute('d', this.aBasePath);
res.matrixTransform(SVGIdentityMatrix.translate((1.0 + this.zigEdge) * nT, 0.0));
return res;
}
this.bCornersOut = bCornersOut;
this.aBasePath = createUnitSquarePath();
}

FourBoxWipePath.prototype.perform = function( nT )
{
var aMatrix;
var d = pruneScaleValue( nT / 2.0 );

if( this.bCornersOut )
{
aMatrix = SVGIdentityMatrix.translate( -0.25, -0.25 ).scale( d ).translate( -0.5, -0.5 );
}
else
{
aMatrix = SVGIdentityMatrix.translate( -0.5, -0.5 ).scale( d );
}


var aTransform = aMatrix;
var aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
var aPolyPath = aSquare;
aMatrix = SVGIdentityMatrix.flipY();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aSquare.changeOrientation();
aPolyPath.appendPath( aSquare );
aMatrix = SVGIdentityMatrix.flipX();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aPolyPath.appendPath( aSquare );
aMatrix = SVGIdentityMatrix.flipY();
aTransform = aMatrix.multiply( aTransform );
aSquare = this.aBasePath.cloneNode( true );
aSquare.matrixTransform( aTransform );
aSquare.changeOrientation();
aPolyPath.appendPath( aSquare );

aMatrix = SVGIdentityMatrix.translate( 0.5, 0.5 );
aMatrix = aMatrix.scale( 1.1 );
aPolyPath.matrixTransform( aMatrix );

return aPolyPath;
};


function EllipseWipePath( eSubtype )
{
this.eSubtype = eSubtype;

var sPathData = 'M 0.5 -0.207107 ' +
'C 0.687536 -0.207107 0.867392 -0.132608 1 0 ' +
'C 1.13261 0.132608 1.20711 0.312464 1.20711 0.5 ' +
'C 1.20711 0.687536 1.13261 0.867392 1 1 ' +
'C 0.867392 1.13261 0.687536 1.20711 0.5 1.20711 ' +
'C 0.312464 1.20711 0.132608 1.13261 0 1 ' +
'C -0.132608 0.867392 -0.207107 0.687536 -0.207107 0.5 ' +
'C -0.207107 0.312464 -0.132608 0.132608 0 0 ' +
'C 0.132608 -0.132608 0.312464 -0.207107 0.5 -0.207107';

this.aBasePath = document.createElementNS( NSS['svg'], 'path' );
this.aBasePath.setAttribute( 'd', sPathData );
}

EllipseWipePath.prototype.perform = function( nT )
{

var aTransform = SVGIdentityMatrix.translate( 0.5, 0.5 ).scale( nT ).translate( -0.5, -0.5 );
var aEllipse = this.aBasePath.cloneNode( true );
aEllipse.matrixTransform( aTransform );

return aEllipse;
};

function FanWipePath(bIsCenter, bIsSingle, bIsFanIn) {
this.bCenter = bIsCenter;
this.bSingle = bIsSingle;
this.bFanIn  = bIsFanIn;
this.aBasePath = createUnitSquarePath();
}

FanWipePath.prototype.perform = function( nT ) {
var res = this.aBasePath.cloneNode(true);
var poly = PinWheelWipePath.calcCenteredClock(
nT / ((this.bCenter && this.bSingle) ? 2.0 : 4.0), 1.0);
res.appendPath(poly);
var aTransform = SVGIdentityMatrix.flipY();
aTransform = aTransform.scaleNonUniform(-1.0, 1.0);
poly.matrixTransform(aTransform);
res.appendPath(poly);

if(this.bCenter) {
aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 0.5).translate(0.5, 0.5);
res.matrixTransform(aTransform);

if(!this.bSingle)
res.appendPath(flipOnXAxis(res));
}
else {
aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 1.0).translate(0.5, 1.0);
res.matrixTransform(aTransform);
}
return res;
}

function ClockWipePath() { }

ClockWipePath.prototype.perform = function( nT ) {
const aTransform = SVGIdentityMatrix.scaleNonUniform(0.5, 0.5).translate(0.5, 0.5);
var aPolyPath = PinWheelWipePath.calcCenteredClock(nT, 1.0);
aPolyPath.matrixTransform( aTransform );

return aPolyPath;
}

function PinWheelWipePath( nBlades )
{
this.nBlades = nBlades;
if( !this.nBlades || this.nBlades < 1 )
this.nBlades = 1;
}

PinWheelWipePath.calcCenteredClock = function( nT, nE )
{
var nMAX_EDGE = 2;

var aTransform = SVGIdentityMatrix.rotate( nT * 360 );

var aPoint = document.documentElement.createSVGPoint();
aPoint.y = -nMAX_EDGE;
aPoint = aPoint.matrixTransform( aTransform );

var sPathData = 'M ' + aPoint.x + ' ' + aPoint.y + ' ';
if( nT >= 0.875 )
sPathData += 'L ' + '-' + nE + ' -' + nE + ' ';
if( nT >= 0.625 )
sPathData += 'L ' + '-' + nE + ' ' + nE + ' ';
if( nT >= 0.375 )
sPathData += 'L ' + nE + ' ' + nE + ' ';
if( nT >= 0.125 )
sPathData += 'L ' + nE + ' -' + nE + ' ';

sPathData += 'L 0 -' + nE + ' ';
sPathData += 'L 0 0 ';
sPathData += 'L '  + aPoint.x + ' ' + aPoint.y;

var aPath = document.createElementNS( NSS['svg'], 'path' );
nSubtype == VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE  ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
nSubtype == VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE    ||
nSubtype == VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE  ||
nSubtype == HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE
);

case SPIRALWIPE_TRANSITION:
return new SpiralWipePath(
8 * 8, // elements
nSubtype == TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE    ||
nSubtype == BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE ||
nSubtype == BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE );

case BOXSNAKESWIPE_TRANSITION:
return new BoxSnakesWipePath(
8 * 8,
nSubtype == FOURBOXVERTICAL_TRANS_SUBTYPE ||
nSubtype == FOURBOXHORIZONTAL_TRANS_SUBTYPE );
}
}


function createUnitSquarePath()
{
var aPath = document.createElementNS( NSS['svg'], 'path' );
var sD = 'M 0 0 L 1 0 L 1 1 L 0 1 L 0 0';
aPath.setAttribute( 'd', sD );
return aPath;
}

function createEmptyPath()
{
var aPath = document.createElementNS( NSS['svg'], 'path' );
var sD = 'M 0 0 L 0 0';
aPath.setAttribute( 'd', sD );
return aPath;
}

function pruneScaleValue( nVal )
{
if( nVal < 0.0 )
return (nVal < -0.00001 ? nVal : -0.00001);
else
return (nVal > 0.00001 ? nVal : 0.00001);
}


function BarWipePath( nBars /* nBars > 1: blinds effect */ )
{
this.nBars = nBars;
if( this.nBars === undefined || this.nBars < 1 )
this.nBars = 1;
this.aBasePath = createUnitSquarePath();
}

BarWipePath.prototype.perform = function( nT )
{

var aMatrix = SVGIdentityMatrix.scaleNonUniform( pruneScaleValue( nT / this.nBars ), 1.0 );

var aPolyPath = this.aBasePath.cloneNode( true );
aPolyPath.matrixTransform( aMatrix );

if( this.nBars > 1 )
{
var i;
var aTransform;
var aPath;
for( i = this.nBars - 1; i > 0; --i )
{
aTransform = SVGIdentityMatrix.translate( i / this.nBars, 0.0 );
aTransform = aTransform.multiply( aMatrix );
aPath = this.aBasePath.cloneNode( true );
aPath.matrixTransform( aTransform );
aPolyPath.appendPath( aPath );
}
}
return aPolyPath;
};


function BoxWipePath(bIsTopCentered) {
this.bIsTopCentered = bIsTopCentered;
this.aBasePath = createUnitSquarePath();
}

BoxWipePath.prototype.perform = function( nT ) {
var d = pruneScaleValue(nT);
var aTransform = SVGIdentityMatrix;
if(this.bIsTopCentered) {
aTransform = aTransform.translate(-0.5, 0.0).scale(d, d).translate(0.5, 0.0);
}
else {
aTransform = aTransform.scale(d, d);
}
var aPath = this.aBasePath.cloneNode(true);
aPath.matrixTransform(aTransform);
return aPath;
}

function SweepWipePath(bCenter, bSingle, bOppositeVertical, bFlipOnYAxis) {
this.bCenter = bCenter;
this.bSingle = bSingle;
this.bOppositeVertical = bOppositeVertical;
this.bFlipOnYAxis = bFlipOnYAxis;
this.aBasePath = createUnitSquarePath();
}

SweepWipePath.prototype.perform = function( nT ) {
nT /= 2.0;
if(!this.bCenter)
nT /= 2.0;
if(!this.bSingle && !this.bOppositeVertical)
nT /= 2.0;

var poly = PinWheelWipePath.calcCenteredClock( nT + 0.25, 1.0 );
var aTransform;

if(this.bCenter) {
aTransform = SVGIdentityMatrix.translate(0.5, 0.0);
poly.matrixTransform(aTransform);
}
var res = poly;

if(!this.bSingle) {
if(this.bOppositeVertical) {
aTransform = SVGIdentityMatrix.scale(1.0, -1.0);
aTransform.translate(0.0, 1.0);
poly.matrixTransform(aTransform);
poly.changeOrientation();
}
else {
aTransform = SVGIdentityMatrix.translate(-0.5, -0.5);
aTransform.rotate(Math.PI);
aTransform.translate(0.5, 0.5);
poly.matrixTransform(aTransform);
}
res.appendPath(poly);
}
return this.bFlipOnYAxis ? flipOnYAxis(res) : res;
}

function FourBoxWipePath( bCornersOut )
{
ClippingFunctor.aBoundingPath = document.createElementNS( NSS['svg'], 'path' );
ClippingFunctor.aBoundingPath.setAttribute( 'd', 'M -1 -1 L 2 -1 L 2 2 L -1 2 L -1 -1' );

ClippingFunctor.prototype.perform = function( nT, nWidth, nHeight )
{
var aClipPoly = this.aParametricPolyPolygon.perform( this.bForwardParameterSweep ? nT : (1 - nT) );


if( this.bSubtractPolygon )
{
aClipPoly.changeOrientation();
aClipPoly.prependPath( ClippingFunctor.aBoundingPath );
}

var aMatrix;
if( this.bScaleIsotropically )
{
var nScaleFactor = Math.max( nWidth, nHeight );
aMatrix = SVGIdentityMatrix.translate( -( nScaleFactor - nWidth ) / 2.0,
-( nScaleFactor - nHeight ) / 2.0 );
aMatrix = aMatrix.scale( nScaleFactor );
aMatrix = aMatrix.multiply( this.aStaticTransformation );
}
else
{
aMatrix = SVGIdentityMatrix.scaleNonUniform( nWidth, nHeight );
aMatrix = aMatrix.multiply( this.aStaticTransformation );
}

aClipPoly.matrixTransform( aMatrix );

return aClipPoly;
};


function createClipPolyPolygon( nType, nSubtype )
{
switch( nType )
{
default:
log( 'createClipPolyPolygon: unknown transition type: ' + nType );
return null;
case BARWIPE_TRANSITION:
return new BarWipePath( 1 );
case FOURBOXWIPE_TRANSITION:
return new FourBoxWipePath( nSubtype === CORNERSOUT_TRANS_SUBTYPE );
case BOXWIPE_TRANSITION:
return new BoxWipePath( nSubtype == LEFTCENTER_TRANS_SUBTYPE ||
nSubtype == TOPCENTER_TRANS_SUBTYPE ||
nSubtype == RIGHTCENTER_TRANS_SUBTYPE ||
nSubtype == BOTTOMCENTER_TRANS_SUBTYPE );
case ELLIPSEWIPE_TRANSITION:
return new EllipseWipePath( nSubtype );
case FANWIPE_TRANSITION:
return new FanWipePath(nSubtype == CENTERTOP_TRANS_SUBTYPE ||
nSubtype == CENTERRIGHT_TRANS_SUBTYPE, true, false);
case PINWHEELWIPE_TRANSITION:
var nBlades;
switch( nSubtype )
{
case ONEBLADE_TRANS_SUBTYPE:
nBlades = 1;
break;
case DEFAULT_TRANS_SUBTYPE:
case TWOBLADEVERTICAL_TRANS_SUBTYPE:
nBlades = 2;
break;
case TWOBLADEHORIZONTAL_TRANS_SUBTYPE:
nBlades = 2;
break;
case THREEBLADE_TRANS_SUBTYPE:
nBlades = 3;
break;
case FOURBLADE_TRANS_SUBTYPE:
nBlades = 4;
break;
case EIGHTBLADE_TRANS_SUBTYPE:
nBlades = 8;
break;
default:
log( 'createClipPolyPolygon: unknown subtype: ' + nSubtype );
return null;
}
return new PinWheelWipePath( nBlades );
case CLOCKWIPE_TRANSITION:
return new ClockWipePath();
case RANDOMBARWIPE_TRANSITION:
return new RandomWipePath( 128, true /* bars */ );
case CHECKERBOARDWIPE_TRANSITION:
return new CheckerBoardWipePath( 10 );
case ZIGZAGWIPE_TRANSITION:
return new ZigZagWipePath( 5 );
case BARNZIGZAGWIPE_TRANSITION:
return new BarnZigZagWipePath( 5 );
case IRISWIPE_TRANSITION:
switch(nSubtype)
{
case RECTANGLE_TRANS_SUBTYPE:
return new IrisWipePath(0);
case DIAMOND_TRANS_SUBTYPE:
return new IrisWipePath(1);
default:
log( 'createClipPolyPolygon: unknown subtype: ' + nSubtype );
return null;
}
case BARNDOORWIPE_TRANSITION:
return new BarnDoorWipePath(false);
case SINGLESWEEPWIPE_TRANSITION:
return new SweepWipePath(
nSubtype == CLOCKWISETOP_TRANS_SUBTYPE ||
nSubtype == CLOCKWISERIGHT_TRANS_SUBTYPE ||
nSubtype == CLOCKWISEBOTTOM_TRANS_SUBTYPE ||
nSubtype == CLOCKWISELEFT_TRANS_SUBTYPE,
true,
false,
nSubtype == COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE ||
nSubtype == COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE );
case WATERFALLWIPE_TRANSITION:
return new WaterfallWipePath(128, // flipOnYAxis
nSubtype == VERTICALRIGHT_TRANS_SUBTYPE ||
nSubtype == HORIZONTALLEFT_TRANS_SUBTYPE);
case MISCDIAGONALWIPE_TRANSITION:
switch(nSubtype) {
case DOUBLEBARNDOOR_TRANS_SUBTYPE:
return new BarnDoorWipePath(true /* Doubled */);
case DOUBLEDIAMOND_TRANS_SUBTYPE:
return new DoubleDiamondWipePath();
default:
log( 'createClipPolyPolygon: unhandled subtype: ' + nSubtype );
return null;
}
case DISSOLVE_TRANSITION:
return new RandomWipePath( 16 * 16, false /* dissolve */ );
case VEEWIPE_TRANSITION:
return new VeeWipePath();
case SNAKEWIPE_TRANSITION:
return new SnakeWipePath( 8 * 8, // diagonal
nSubtype == TOPLEFTDIAGONAL_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTDIAGONAL_TRANS_SUBTYPE    ||
nSubtype == BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE ||
nSubtype == BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE   ,
nSubtype == TOPLEFTVERTICAL_TRANS_SUBTYPE     ||
nSubtype == TOPRIGHTDIAGONAL_TRANS_SUBTYPE    ||
nSubtype == BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE
);
case PARALLELSNAKESWIPE_TRANSITION:
return new ParallelSnakesWipePath(
8 * 8, // elements
nSubtype == DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE ||
nSubtype == DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
function MovingSlideChange( aLeavingSlide, aEnteringSlide,
aLeavingDirection, aEnteringDirection )
{
MovingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.aLeavingDirection = aLeavingDirection;
this.aEnteringDirection = aEnteringDirection;
}
extend( MovingSlideChange, SlideChangeBase );

MovingSlideChange.prototype.start = function()
{
MovingSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'transform' );
this.aLeavingSlide.notifyUsedAttribute( 'transform' );
this.performIn( 0 );
this.aEnteringSlide.show();
};

MovingSlideChange.prototype.performIn = function( nT )
{
var nS = nT - 1;
var dx = nS * this.aEnteringDirection.x * this.aEnteringSlide.getWidth();
var dy = nS * this.aEnteringDirection.y * this.aEnteringSlide.getHeight();
this.aEnteringSlide.translate( dx, dy );
};

MovingSlideChange.prototype.performOut = function( nT )
{
var dx = nT * this.aLeavingDirection.x * this.aLeavingSlide.getWidth();
var dy = nT * this.aLeavingDirection.y * this.aLeavingSlide.getHeight();
this.aLeavingSlide.translate( dx, dy );
};


function ClippedSlideChange( aLeavingSlide, aEnteringSlide, aParametricPolyPolygon,
aTransitionInfo, bIsDirectionForward )
{
ClippedSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );

var bIsModeIn = true;
this.aClippingFunctor= new ClippingFunctor( aParametricPolyPolygon, aTransitionInfo,
bIsDirectionForward, bIsModeIn );
}
extend( ClippedSlideChange, SlideChangeBase );

ClippedSlideChange.prototype.start = function()
{
ClippedSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'clip-path' );
this.performIn( 0 );
this.aEnteringSlide.show();
};

ClippedSlideChange.prototype.performIn = function( nT )
{
var nWidth = this.aEnteringSlide.getWidth();
var nHeight = this.aEnteringSlide.getHeight();
var aPolyPolygonElement = this.aClippingFunctor.perform( nT, nWidth, nHeight );
this.aEnteringSlide.setClipPath( aPolyPolygonElement );
};

ClippedSlideChange.prototype.performOut = function( )
{
};


function ClippingFunctor( aParametricPolyPolygon, aTransitionInfo,
bIsDirectionForward, bIsModeIn)
{
this.aParametricPolyPolygon = aParametricPolyPolygon;
this.aStaticTransformation = null;
this.bForwardParameterSweep = true;
this.bSubtractPolygon = false;
this.bScaleIsotropically = aTransitionInfo.scaleIsotropically;
this.bFlip = false;

assert( this.aParametricPolyPolygon,
'ClippingFunctor: parametric polygon is not valid' );

if( aTransitionInfo.rotationAngle != 0.0 ||
aTransitionInfo.scaleX != 1.0 ||  aTransitionInfo.scaleY != 1.0 )
{
this.aStaticTransformation = SVGIdentityMatrix.translate( 0.5, 0.5 );
if( aTransitionInfo.scaleX != 1.0 ||  aTransitionInfo.scaleY != 1.0 )
this.aStaticTransformation
= this.aStaticTransformation.scaleNonUniform( aTransitionInfo.scaleX,
aTransitionInfo.scaleY );
if( aTransitionInfo.rotationAngle != 0.0 )
this.aStaticTransformation
= this.aStaticTransformation.rotate( aTransitionInfo.rotationAngle );
this.aStaticTransformation = this.aStaticTransformation.translate( -0.5, -0.5 );
}
else
{
this.aStaticTransformation = document.documentElement.createSVGMatrix();
}

if( !bIsDirectionForward )
{
var aMatrix = null;
switch( aTransitionInfo.reverseMethod )
{
default:
log( 'ClippingFunctor: unexpected reverse method.' );
break;
case REVERSEMETHOD_IGNORE:
break;
case REVERSEMETHOD_INVERT_SWEEP:
this.bForwardParameterSweep = !this.bForwardParameterSweep;
break;
case REVERSEMETHOD_SUBTRACT_POLYGON:
this.bSubtractPolygon = !this.bSubtractPolygon;
break;
case REVERSEMETHOD_SUBTRACT_AND_INVERT:
this.bForwardParameterSweep = !this.bForwardParameterSweep;
this.bSubtractPolygon = !this.bSubtractPolygon;
break;
case REVERSEMETHOD_ROTATE_180:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.setToRotationAroundPoint( 0.5, 0.5, 180 );
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
break;
case REVERSEMETHOD_FLIP_X:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.a = -1; aMatrix.e = 1.0;
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
this.bFlip = true;
break;
case REVERSEMETHOD_FLIP_Y:
aMatrix = document.documentElement.createSVGMatrix();
aMatrix.d = -1; aMatrix.f = 1.0;
this.aStaticTransformation = aMatrix.multiply( this.aStaticTransformation );
this.bFlip = true;
break;
}
}

if( !bIsModeIn )
{
if( aTransitionInfo.outInvertsSweep )
{
this.bForwardParameterSweep = !this.bForwardParameterSweep;
}
else
{
this.bSubtractPolygon = !this.bSubtractPolygon;
}
}
}


HSLAnimationWrapper.prototype.start = function( aAnimatableElement )
{
this.aAnimation.start( aAnimatableElement );
};

HSLAnimationWrapper.prototype.end = function()
{
this.aAnimation.end();
};
HSLAnimationWrapper.prototype.perform = function( aHSLValue )
{
this.aAnimation.perform( aHSLValue.convertToRGB() );
};

HSLAnimationWrapper.prototype.getUnderlyingValue = function()
{
return this.aAnimation.getUnderlyingValue().convertToHSL();
};


function SlideChangeBase(aLeavingSlide, aEnteringSlide)
{
this.aLeavingSlide = aLeavingSlide;
this.aEnteringSlide = aEnteringSlide;
this.bIsFinished = false;
}

SlideChangeBase.prototype.start = function()
{
};

SlideChangeBase.prototype.end = function()
{
if( this.bIsFinished )
return;

this.aLeavingSlide.hide();
this.aEnteringSlide.reset();
this.aLeavingSlide.reset();

this.bIsFinished = true;
};

SlideChangeBase.prototype.perform = function( nValue )
{
if( this.bIsFinished ) return false;

if( this.aLeavingSlide )
this.performOut( nValue );

if( this.aEnteringSlide )
this.performIn( nValue );

return true;
};

SlideChangeBase.prototype.getUnderlyingValue = function()
{
return 0.0;
};

SlideChangeBase.prototype.performIn = function( )
{
log( 'SlideChangeBase.performIn: abstract method called' );
};

SlideChangeBase.prototype.performOut = function( )
{
log( 'SlideChangeBase.performOut: abstract method called' );
};


function FadingSlideChange( aLeavingSlide, aEnteringSlide )
{
FadingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.bFirstRun = true;
}
extend( FadingSlideChange, SlideChangeBase );

FadingSlideChange.prototype.start = function()
{
FadingSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.notifyUsedAttribute( 'opacity' );
this.aEnteringSlide.setOpacity( 0.0 );
this.aEnteringSlide.show();
};

FadingSlideChange.prototype.performIn = function( nT )
{
this.aEnteringSlide.setOpacity( nT );
};

FadingSlideChange.prototype.performOut = function( nT )
{

this.aLeavingSlide.setOpacity( 1 - nT );
};


function FadingOverColorSlideChange( aLeavingSlide, aEnteringSlide, sFadeColor )
{
FadingSlideChange.superclass.constructor.call( this, aLeavingSlide, aEnteringSlide );
this.sFadeColor = sFadeColor;
if( !this.sFadeColor )
{
log( 'FadingOverColorSlideChange: sFadeColor not valid.' );
this.sFadeColor = '#000000';
}
this.aColorPlaneElement = this.createColorPlaneElement();
}
extend( FadingOverColorSlideChange, SlideChangeBase );

FadingOverColorSlideChange.prototype.start = function()
{
FadingOverColorSlideChange.superclass.start.call( this );
this.aEnteringSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.notifyUsedAttribute( 'opacity' );
this.aLeavingSlide.insertBefore( this.aColorPlaneElement );
this.aEnteringSlide.setOpacity( 0.0 );
this.aEnteringSlide.show();
};

FadingOverColorSlideChange.prototype.end = function()
{
FadingOverColorSlideChange.superclass.end.call( this );
this.aLeavingSlide.removeElement( this.aColorPlaneElement );
};

FadingOverColorSlideChange.prototype.performIn = function( nT )
{
this.aEnteringSlide.setOpacity( (nT > 0.55) ? 2.0*(nT-0.55) : 0.0 );
};

FadingOverColorSlideChange.prototype.performOut = function( nT )
{
this.aLeavingSlide.setOpacity( (nT > 0.45) ? 0.0 : 2.0*(0.45-nT) );
};

FadingOverColorSlideChange.prototype.createColorPlaneElement = function()
{
var aColorPlaneElement = document.createElementNS( NSS['svg'], 'rect' );
aColorPlaneElement.setAttribute( 'width', String( this.aLeavingSlide.getWidth() ) );
aColorPlaneElement.setAttribute( 'height', String( this.aLeavingSlide.getHeight() ) );
aColorPlaneElement.setAttribute( 'fill', this.sFadeColor );
return aColorPlaneElement;
};


{
if( !aAnimatedTransitionFilterNode )
{
log( 'createShapeTransition: the animated transition filter node is not valid.' );
return null;
}
var eTransitionType = aAnimatedTransitionFilterNode.getTransitionType();
var eTransitionSubType = aAnimatedTransitionFilterNode.getTransitionSubType();
var bDirectionForward = ! aAnimatedTransitionFilterNode.getReverseDirection();
var bModeIn = ( aAnimatedTransitionFilterNode.getTransitionMode() == FORWARD );

var aTransitionInfo = aTransitionInfoTable[eTransitionType][eTransitionSubType];
var eTransitionClass = aTransitionInfo['class'];

switch( eTransitionClass )
{
default:
case TRANSITION_INVALID:
log( 'createShapeTransition: transition class: TRANSITION_INVALID' );
return null;

case TRANSITION_CLIP_POLYPOLYGON:
var aParametricPolyPolygon
= createClipPolyPolygon( eTransitionType, eTransitionSubType );
var aClippingAnimation
= new ClippingAnimation( aParametricPolyPolygon, aTransitionInfo,
bDirectionForward, bModeIn );
return new SimpleActivity( aActivityParamSet, aClippingAnimation, true );

case TRANSITION_SPECIAL:
switch( eTransitionType )
{
default:
var aAnimation
= createPropertyAnimation( 'opacity',
aAnimatedElement,
nSlideWidth,
nSlideHeight );
return new SimpleActivity( aActivityParamSet, aAnimation, bModeIn );
}
}

}


function ClippingAnimation( aParametricPolyPolygon, aTransitionInfo,
bDirectionForward, bModeIn )
{
this.aClippingFunctor = new ClippingFunctor( aParametricPolyPolygon,
aTransitionInfo,
bDirectionForward, bModeIn );
this.bAnimationStarted = false;
}

ClippingAnimation.prototype.start = function( aAnimatableElement )
{
assert( aAnimatableElement,
'ClippingAnimation.start: animatable element is not valid' );
this.aAnimatableElement = aAnimatableElement;
this.aAnimatableElement.initClipPath();
this.aAnimatableElement.notifyAnimationStart();

if( !this.bAnimationStarted )
this.bAnimationStarted = true;

};

ClippingAnimation.prototype.end = function()
{
if( this.bAnimationStarted )
{
this.aAnimatableElement.cleanClipPath();
this.bAnimationStarted = false;
this.aAnimatableElement.notifyAnimationEnd();
}
};

ClippingAnimation.prototype.perform = function( nValue )
{
var nWidth = this.aAnimatableElement.aClippingBBox.width;
var nHeight = this.aAnimatableElement.aClippingBBox.height;
var aPolyPolygonElement = this.aClippingFunctor.perform( nValue, nWidth, nHeight );
this.aAnimatableElement.setClipPath( aPolyPolygonElement );
};

ClippingAnimation.prototype.getUnderlyingValue = function()
{
return 0.0;
};


function GenericAnimation( aGetValueFunc, aSetValueFunc, aGetModifier, aSetModifier )
{
assert( aGetValueFunc && aSetValueFunc,
'GenericAnimation constructor: get value functor and/or set value functor are not valid' );

this.aGetValueFunc = aGetValueFunc;
this.aSetValueFunc = aSetValueFunc;
this.aGetModifier = aGetModifier;
this.aSetModifier = aSetModifier;
this.aAnimatableElement = null;
this.bAnimationStarted = false;
}


GenericAnimation.prototype.start = function( aAnimatableElement )
{
assert( aAnimatableElement, 'GenericAnimation.start: animatable element is not valid' );

this.aAnimatableElement = aAnimatableElement;
this.aAnimatableElement.notifyAnimationStart();

if( !this.bAnimationStarted )
this.bAnimationStarted = true;
};

GenericAnimation.prototype.end = function()
{
if( this.bAnimationStarted )
{
this.bAnimationStarted = false;
this.aAnimatableElement.notifyAnimationEnd();
}
};

GenericAnimation.prototype.perform = function( aValue )
{
if( this.aSetModifier )
aValue = this.aSetModifier( aValue );

this.aSetValueFunc( aValue );
};

GenericAnimation.prototype.getUnderlyingValue = function()
{
var aValue = this.aGetValueFunc();
if( this.aGetModifier )
aValue = this.aGetModifier( aValue );
return aValue;
};


function HSLAnimationWrapper( aColorAnimation )
{
assert( aColorAnimation,
'HSLAnimationWrapper constructor: invalid color animation delegate' );

this.aAnimation = aColorAnimation;
}

}


function createAnimationNode( aElement, aParentNode, aNodeContext )
{
assert( aElement, 'createAnimationNode: invalid animation element' );

var eAnimationNodeType = getAnimationElementType( aElement );

var aCreatedNode = null;
var aCreatedContainer = null;

switch( eAnimationNodeType )
{
case ANIMATION_NODE_PAR:
aCreatedNode = aCreatedContainer =
new ParallelTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ITERATE:
aCreatedNode = aCreatedContainer =
new ParallelTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_SEQ:
aCreatedNode = aCreatedContainer =
new SequentialTimeContainer( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATE:
aCreatedNode = new PropertyAnimationNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_SET:
aCreatedNode = new AnimationSetNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATEMOTION:
log( 'createAnimationNode: ANIMATEMOTION not implemented' );
return null;
case ANIMATION_NODE_ANIMATECOLOR:
aCreatedNode = new AnimationColorNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_ANIMATETRANSFORM:
log( 'createAnimationNode: ANIMATETRANSFORM not implemented' );
return null;
case ANIMATION_NODE_TRANSITIONFILTER:
aCreatedNode = new AnimationTransitionFilterNode( aElement, aParentNode, aNodeContext );
break;
case ANIMATION_NODE_AUDIO:
log( 'createAnimationNode: AUDIO not implemented' );
return null;
case ANIMATION_NODE_COMMAND:
log( 'createAnimationNode: COMMAND not implemented' );
return null;
default:
log( 'createAnimationNode: invalid Animation Node Type: ' + eAnimationNodeType );
return null;
}

if( aCreatedContainer )
{
if( eAnimationNodeType == ANIMATION_NODE_ITERATE )
{
createIteratedNodes( aElement, aCreatedContainer, aNodeContext );
}
else
{
var aChildrenArray = getElementChildren( aElement );
for( var i = 0; i < aChildrenArray.length; ++i )
{
if( !createChildNode( aChildrenArray[i], aCreatedContainer, aNodeContext ) )
{
aCreatedContainer.removeAllChildrenNodes();
break;
}
}
}
}

return aCreatedNode;
}


function createChildNode( aElement, aParentNode, aNodeContext )
{
var aChildNode = createAnimationNode( aElement, aParentNode, aNodeContext );

if( !aChildNode )
{
log( 'createChildNode: child node creation failed' );
return false;
}
else
{
aParentNode.appendChildNode( aChildNode );
return true;
}
}


function createIteratedNodes( /*aElement, aContainerNode, aNodeContext*/ )
{
}


function makeScaler( nScale )
{
if( ( typeof( nScale ) !== typeof( 0 ) ) || !isFinite( nScale ) )
{
log( 'makeScaler: not valid param passed: ' + nScale );
return null;
}

return  function( nValue )
{
return ( nScale * nValue );
};
}


function createPropertyAnimation( sAttrName, aAnimatedElement, nWidth, nHeight )
{
if( !aAttributeMap[ sAttrName ] )
{
log( 'createPropertyAnimation: attribute is unknown' );
return null;
}


var aFunctorSet = aAttributeMap[ sAttrName ];

var sGetValueMethod =   aFunctorSet.get;
var sSetValueMethod =   aFunctorSet.set;

if( !sGetValueMethod || !sSetValueMethod  )
{
log( 'createPropertyAnimation: attribute is not handled' );
return null;
}

var aGetModifier =  eval( aFunctorSet.getmod );
var aSetModifier =  eval( aFunctorSet.setmod );


return new GenericAnimation( bind( aAnimatedElement, aAnimatedElement[ sGetValueMethod ] ),
bind( aAnimatedElement, aAnimatedElement[ sSetValueMethod ] ),
aGetModifier,
aSetModifier);
}


function createShapeTransition( aActivityParamSet, aAnimatedElement,
nSlideWidth, nSlideHeight,
aAnimatedTransitionFilterNode )
COLOR_PROPERTY,
COLOR_SPACE_RGB );
}

return createActivity( aActivityParamSet, this, aColorAnimation, aInterpolator );
};

AnimationColorNode.prototype.getColorInterpolation = function()
{
return this.eColorInterpolation;
};

AnimationColorNode.prototype.getColorInterpolationDirection = function()
{
return this.eColorInterpolationDirection;
};

AnimationColorNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationColorNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
sInfo += ';  color-interpolation: ' + aColorSpaceOutMap[ this.getColorInterpolation() ];

sInfo += ';  color-interpolation-direction: ' + aClockDirectionOutMap[ this.getColorInterpolationDirection() ];
}
return sInfo;
};


function AnimationTransitionFilterNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationTransitionFilterNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationTransitionFilterNode';

this.eTransitionType = undefined;
this.eTransitionSubType = undefined;
this.bReverseDirection = undefined;
this.eTransitionMode = undefined;
}
extend( AnimationTransitionFilterNode, AnimationBaseNode );


AnimationTransitionFilterNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

return createShapeTransition( aActivityParamSet,
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight,
this );
};

AnimationTransitionFilterNode.prototype.parseElement = function()
{
var bRet = AnimationTransitionFilterNode.superclass.parseElement.call( this );
var bIsValidTransition = true;

var aAnimElem = this.aElement;

this.eTransitionType = undefined;
var sTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'type' );
if( sTypeAttr && aTransitionTypeInMap[ sTypeAttr ] )
{
this.eTransitionType = aTransitionTypeInMap[ sTypeAttr ];
}
else
{
bIsValidTransition = false;
log( 'AnimationTransitionFilterNode.parseElement: transition type not valid: ' + sTypeAttr );
}

this.eTransitionSubType = undefined;
var sSubTypeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'subtype' );
if( sSubTypeAttr === null )
sSubTypeAttr = 'default';
if( sSubTypeAttr && ( aTransitionSubtypeInMap[ sSubTypeAttr ] !== undefined  ) )
{
this.eTransitionSubType = aTransitionSubtypeInMap[ sSubTypeAttr ];
}
else
{
bIsValidTransition = false;
log( 'AnimationTransitionFilterNode.parseElement: transition subtype not valid: ' + sSubTypeAttr );
}

if( !bIsValidTransition )
{
this.eTransitionType = FADE_TRANSITION;
this.eTransitionSubType = CROSSFADE_TRANS_SUBTYPE;
log( 'AnimationTransitionFilterNode.parseElement: in place of the invalid transition a crossfade transition is used' );
}

this.bReverseDirection = false;
var sDirectionAttr = aAnimElem.getAttributeNS( NSS['smil'], 'direction' );
if( sDirectionAttr == 'reverse' )
this.bReverseDirection = true;

this.eTransitionMode = TRANSITION_MODE_IN;
var sModeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'mode' );
if( sModeAttr === 'out' )
this.eTransitionMode = TRANSITION_MODE_OUT;

return bRet;
};

AnimationTransitionFilterNode.prototype.getTransitionType = function()
{
return this.eTransitionType;
};

AnimationTransitionFilterNode.prototype.getTransitionSubType = function()
{
return this.eTransitionSubType;
};

AnimationTransitionFilterNode.prototype.getTransitionMode = function()
{
return this.eTransitionMode;
};

AnimationTransitionFilterNode.prototype.getReverseDirection = function()
{
return this.bReverseDirection;
};

AnimationTransitionFilterNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationTransitionFilterNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
sInfo += ';  type: ' + getKeyByValue(aTransitionTypeInMap, this.getTransitionType());

sInfo += ';  subtype: ' + getKeyByValue(aTransitionSubtypeInMap, this.getTransitionSubType());

if( this.getReverseDirection() )
sInfo += ';  direction: reverse';
}

return sInfo;
};


function createAnimationTree( aRootElement, aNodeContext )
{
return createAnimationNode( aRootElement, null, aNodeContext );
this.aCurrentSkipEvent = makeEvent( bind2( SequentialTimeContainer.prototype.skipEffect, this, aChildNode ) );

if( this.aRewindCurrentEffectEvent )
this.aRewindCurrentEffectEvent.dispose();
this.aRewindCurrentEffectEvent = makeEvent( bind2( SequentialTimeContainer.prototype.rewindCurrentEffect, this, aChildNode ) );

if( this.aRewindLastEffectEvent )
this.aRewindLastEffectEvent.dispose();
this.aRewindLastEffectEvent = makeEvent( bind2( SequentialTimeContainer.prototype.rewindLastEffect, this, aChildNode ) );

if( this.isMainSequenceRootNode() )
{
this.aContext.aEventMultiplexer.registerSkipEffectEvent( this.aCurrentSkipEvent );
this.aContext.aEventMultiplexer.registerRewindCurrentEffectEvent( this.aRewindCurrentEffectEvent );
this.aContext.aEventMultiplexer.registerRewindLastEffectEvent( this.aRewindLastEffectEvent );
}
else if( this.isInteractiveSequenceRootNode() )
{
this.aContext.aEventMultiplexer.registerSkipInteractiveEffectEvent( aChildNode.getId(), this.aCurrentSkipEvent );
this.aContext.aEventMultiplexer.registerRewindRunningInteractiveEffectEvent( aChildNode.getId(), this.aRewindCurrentEffectEvent );
this.aContext.aEventMultiplexer.registerRewindEndedInteractiveEffectEvent( aChildNode.getId(), this.aRewindLastEffectEvent );
}
}
return bResolved;
};

SequentialTimeContainer.prototype.notifyRewindedEvent = function( aChildNode )
{
if( this.isInteractiveSequenceRootNode() )
{
this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( aChildNode.getId() );

var sId = aChildNode.getBegin().getEventBaseElementId();
if( sId )
{
this.aContext.aEventMultiplexer.notifyRewindedEffectEvent( sId );
}
}
};

SequentialTimeContainer.prototype.dispose = function()
{
if( this.aCurrentSkipEvent )
this.aCurrentSkipEvent.dispose();

SequentialTimeContainer.superclass.dispose.call( this );
};


function PropertyAnimationNode(  aAnimElem, aParentNode, aNodeContext )
{
PropertyAnimationNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'PropertyAnimationNode';
}
extend( PropertyAnimationNode, AnimationBaseNode3 );


PropertyAnimationNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aInterpolator = null;  // createActivity will compute it;
return createActivity( aActivityParamSet, this, aAnimation, aInterpolator );
};


function AnimationSetNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationSetNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationSetNode';
}
extend( AnimationSetNode, AnimationBaseNode2 );


AnimationSetNode.prototype.createActivity = function()
{
var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aActivityParamSet = this.fillActivityParams();

return new SetActivity( aActivityParamSet, aAnimation, this.getToValue() );
};


function AnimationColorNode(  aAnimElem, aParentNode, aNodeContext )
{
AnimationColorNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationColorNode';

this.eColorInterpolation = undefined;
this.eColorInterpolationDirection = undefined;
}
extend( AnimationColorNode, AnimationBaseNode3 );


AnimationColorNode.prototype.parseElement = function()
{
var bRet = AnimationColorNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eColorInterpolation = COLOR_SPACE_RGB;
var sColorInterpolationAttr = aAnimElem.getAttributeNS( NSS['anim'], 'color-interpolation' );
if( sColorInterpolationAttr && aColorSpaceInMap[ sColorInterpolationAttr ] )
this.eColorInterpolation = aColorSpaceInMap[ sColorInterpolationAttr ];

this.eColorInterpolationDirection = CLOCKWISE;
var sColorInterpolationDirectionAttr = aAnimElem.getAttributeNS( NSS['anim'], 'color-interpolation-direction' );
if( sColorInterpolationDirectionAttr && aClockDirectionInMap[ sColorInterpolationDirectionAttr ] )
this.eColorInterpolationDirection = aClockDirectionInMap[ sColorInterpolationDirectionAttr ];

return bRet;
};

AnimationColorNode.prototype.createActivity = function()
{
var aActivityParamSet = this.fillActivityParams();

var aAnimation = createPropertyAnimation( this.getAttributeName(),
this.getAnimatedElement(),
this.aNodeContext.aSlideWidth,
this.aNodeContext.aSlideHeight );

var aColorAnimation;
var aInterpolator;
if( this.getColorInterpolation() === COLOR_SPACE_HSL )
{
ANIMDBG.print( 'AnimationColorNode.createActivity: color space hsl'  );
aColorAnimation = new HSLAnimationWrapper( aAnimation );
var aInterpolatorMaker = aInterpolatorHandler.getInterpolator( this.getCalcMode(),
COLOR_PROPERTY,
COLOR_SPACE_HSL );
aInterpolator = aInterpolatorMaker( this.getColorInterpolationDirection() );
}
else
{
ANIMDBG.print( 'AnimationColorNode.createActivity: color space rgb'  );
aColorAnimation = aAnimation;
aInterpolator = aInterpolatorHandler.getInterpolator( this.getCalcMode(),
{
this.scheduleDeactivationEvent();
}
};

ParallelTimeContainer.prototype.notifyDeactivating = function( aAnimationNode )
{
this.notifyDeactivatedChild( aAnimationNode );
};


function SequentialTimeContainer( aAnimElem, aParentNode, aNodeContext )
{
SequentialTimeContainer.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'SequentialTimeContainer';
this.bIsRewinding = false;
this.aCurrentSkipEvent = null;
this.aRewindCurrentEffectEvent = null;
this.aRewindLastEffectEvent = null;
}
extend( SequentialTimeContainer, BaseContainerNode );


SequentialTimeContainer.prototype.activate_st = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( ; this.nFinishedChildren < nChildrenCount; ++this.nFinishedChildren )
{
if( this.resolveChild( this.aChildrenArray[ this.nFinishedChildren ] ) )
break;
else
log( 'SequentialTimeContainer.activate_st: resolving child failed!' );
}

if( this.isDurationIndefinite() && ( ( nChildrenCount == 0 ) || ( this.nFinishedChildren >= nChildrenCount ) ) )
{
this.scheduleDeactivationEvent( this.makeDeactivationEvent( 0.0 ) );
}
else
{
this.scheduleDeactivationEvent();
}
};

SequentialTimeContainer.prototype.notifyDeactivating = function( aNotifier )
{
if( this.bIsRewinding )
return;

if( this.notifyDeactivatedChild( aNotifier ) )
return;

assert( this.nFinishedChildren < this.aChildrenArray.length,
'SequentialTimeContainer.notifyDeactivating: assertion (this.nFinishedChildren < this.aChildrenArray.length) failed' );

var aNextChild = this.aChildrenArray[ this.nFinishedChildren ];

assert( aNextChild.getState() == UNRESOLVED_NODE,
'SequentialTimeContainer.notifyDeactivating: assertion (aNextChild.getState == UNRESOLVED_NODE) failed' );

if( !this.resolveChild( aNextChild ) )
{
this.deactivate();
}
};

SequentialTimeContainer.prototype.skipEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
this.getContext().aActivityQueue.endAll();
this.getContext().bIsSkipping = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().bIsSkipping = false;
var aEvent = makeEvent( bind2( aChildNode.deactivate, aChildNode ) );
this.getContext().aTimerEventQueue.addEvent( aEvent );
}
else
{
log( 'SequentialTimeContainer.skipEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.rewindCurrentEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
assert( !this.bIsRewinding,
'SequentialTimeContainer.rewindCurrentEffect: is already rewinding.' );

this.bIsRewinding = true;
this.getContext().aActivityQueue.endAll();
this.getContext().bIsSkipping = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().bIsSkipping = false;
this.getContext().aActivityQueue.endAll();

aChildNode.end();
aChildNode.removeEffect();
aChildNode.init();
this.resolveChild( aChildNode );
this.notifyRewindedEvent( aChildNode );
this.bIsRewinding = false;
}
else
{
log( 'SequentialTimeContainer.rewindCurrentEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.rewindLastEffect = function( aChildNode )
{
if( this.isChildNode( aChildNode ) )
{
assert( !this.bIsRewinding,
'SequentialTimeContainer.rewindLastEffect: is already rewinding.' );

this.bIsRewinding = true;
this.getContext().aTimerEventQueue.forceEmpty();
this.getContext().aActivityQueue.clear();
aChildNode.end();

--this.nFinishedChildren;
var aPreviousChildNode = this.aChildrenArray[ this.nFinishedChildren ];

aPreviousChildNode.removeEffect();
aPreviousChildNode.init();
aChildNode.init();
this.resolveChild( aPreviousChildNode );
this.notifyRewindedEvent( aChildNode );
this.bIsRewinding = false;
}
else
{
log( 'SequentialTimeContainer.rewindLastEffect: unknown child: '
+ aChildNode.getId() );
}
};

SequentialTimeContainer.prototype.resolveChild = function( aChildNode )
{
var bResolved = aChildNode.resolve();

if( bResolved && ( this.isMainSequenceRootNode() || this.isInteractiveSequenceRootNode() ) )
{
if( this.aCurrentSkipEvent )
this.aCurrentSkipEvent.dispose();

assert( ( this.nFinishedChildren < nChildrenCount ),
'BaseContainerNode.notifyDeactivatedChild: assert(this.nFinishedChildren < nChildrenCount) failed' );

++this.nFinishedChildren;
var bFinished = ( this.nFinishedChildren >= nChildrenCount );

if( bFinished && this.isDurationIndefinite() )
{
if( this.nLeftIterations >= 1.0 )
{
this.nLeftIterations -= 1.0;
}
if( this.nLeftIterations >= 1.0 )
{
bFinished = false;
var aRepetitionEvent = makeDelay( bind( this, this.repeat ), 0.0 );
this.aContext.aTimerEventQueue.addEvent( aRepetitionEvent );
}
else
{
this.deactivate();
}
}

return bFinished;
};

BaseContainerNode.prototype.repeat = function()
{
this.forEachChildNode( mem_fn( 'end' ), ~ENDED_NODE );
this.removeEffect();
var bInitialized = this.init_children();
if( bInitialized )
this.activate_st();
return bInitialized;
};

BaseContainerNode.prototype.removeEffect = function()
{
var nChildrenCount = this.aChildrenArray.length;
if( nChildrenCount == 0 )
return;
for( var i = nChildrenCount - 1; i >= 0; --i )
{
if( ( this.aChildrenArray[i].getState() & ( FROZEN_NODE | ENDED_NODE ) ) == 0 )
{
log( 'BaseContainerNode.removeEffect: child(id:'
+ this.aChildrenArray[i].getId() + ') is neither frozen nor ended;'
+ ' state: '
+ aTransitionModeOutMap[ this.aChildrenArray[i].getState() ] );
continue;
}
this.aChildrenArray[i].removeEffect();
}
};

BaseContainerNode.prototype.saveStateOfAnimatedElement = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].saveStateOfAnimatedElement();
}
};

BaseContainerNode.prototype.forEachChildNode = function( aFunction, eNodeStateMask )
{
if( !eNodeStateMask )
eNodeStateMask = -1;

var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( ( eNodeStateMask != -1 ) && ( ( this.aChildrenArray[i].getState() & eNodeStateMask ) == 0 ) )
continue;
aFunction( this.aChildrenArray[i] );
}
};

BaseContainerNode.prototype.dispose = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].dispose();
}

BaseContainerNode.superclass.dispose.call( this );
};

BaseContainerNode.prototype.getImpressNodeType = function()
{
return this.eImpressNodeType;
};

BaseContainerNode.prototype.info = function( bVerbose )
{
var sInfo = BaseContainerNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getImpressNodeType() )
sInfo += ';  node-type: ' + aImpressNodeTypeOutMap[ this.getImpressNodeType() ];
}

var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
sInfo += '\n';
sInfo += this.aChildrenArray[i].info( bVerbose );
}

return sInfo;
};


function ParallelTimeContainer( aAnimElem, aParentNode, aNodeContext )
{
ParallelTimeContainer.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'ParallelTimeContainer';
}
extend( ParallelTimeContainer, BaseContainerNode );


ParallelTimeContainer.prototype.activate_st = function()
{
var nChildrenCount = this.aChildrenArray.length;
var nResolvedChildren = 0;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].resolve() )
{
++nResolvedChildren;
}
}

if( nChildrenCount != nResolvedChildren )
{
log( 'ParallelTimeContainer.activate_st: resolving all children failed' );
return;
}


if( this.isDurationIndefinite() && ( nChildrenCount == 0  ) )
{
this.scheduleDeactivationEvent( this.makeDeactivationEvent( 0.0 ) );
}
else

this.eImpressNodeType = undefined;
this.ePresetClass =  undefined;
this.ePresetId =  undefined;
}
extend( BaseContainerNode, BaseNode );


BaseContainerNode.prototype.parseElement= function()
{
var bRet = BaseContainerNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eImpressNodeType = IMPRESS_DEFAULT_NODE;
var sNodeTypeAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'node-type' );
if( sNodeTypeAttr && aImpressNodeTypeInMap[ sNodeTypeAttr ] )
this.eImpressNodeType = aImpressNodeTypeInMap[ sNodeTypeAttr ];
this.bMainSequenceRootNode = ( this.eImpressNodeType == IMPRESS_MAIN_SEQUENCE_NODE );
this.bInteractiveSequenceRootNode = ( this.eImpressNodeType == IMPRESS_INTERACTIVE_SEQUENCE_NODE );

this.ePresetClass =  undefined;
var sPresetClassAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'preset-class' );
if( sPresetClassAttr && aPresetClassInMap[ sPresetClassAttr ] )
this.ePresetClass = aPresetClassInMap[ sPresetClassAttr ];

this.ePresetId =  undefined;
var sPresetIdAttr = aAnimElem.getAttributeNS( NSS['presentation'], 'preset-id' );
if( sPresetIdAttr && aPresetIdInMap[ sPresetIdAttr ] )
this.ePresetId = aPresetIdInMap[ sPresetIdAttr ];


var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
this.aChildrenArray[i].parseElement();
}


this.bDurationIndefinite
= ( !this.getDuration() || this.getDuration().isIndefinite()  ) &&
( !this.getEnd() || ( this.getEnd().getType() != OFFSET_TIMING ) );

return bRet;
};

BaseContainerNode.prototype.appendChildNode = function( aAnimationNode )
{
if( ! this.checkValidNode() )
return ;

if( aAnimationNode.registerDeactivatingListener( this ) )
this.aChildrenArray.push( aAnimationNode );
};

BaseContainerNode.prototype.removeAllChildrenNodes = function()
{
this.aChildrenArray = [];
};

BaseContainerNode.prototype.init_st = function()
{
this.nLeftIterations = this.getRepeatCount();

return this.init_children();
};

BaseContainerNode.prototype.init_children = function()
{
this.nFinishedChildren = 0;
var nChildrenCount = this.aChildrenArray.length;
var nInitChildren = 0;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].init() )
{
++nInitChildren;
}
}
return ( nChildrenCount == nInitChildren );
};


BaseContainerNode.prototype.deactivate_st = function( eDestState )
{
this.nLeftIterations = 0;
if( eDestState == FROZEN_NODE )
{
this.forEachChildNode( mem_fn( 'deactivate' ), ~( FROZEN_NODE | ENDED_NODE ) );
}
else
{
this.forEachChildNode( mem_fn( 'end' ), ~ENDED_NODE );
if( this.getFillMode() == FILL_MODE_REMOVE )
this.removeEffect();
}
};

BaseContainerNode.prototype.hasPendingAnimation = function()
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].hasPendingAnimation() )
return true;
}
return false;
};

BaseContainerNode.prototype.activate_st = function()
{
log( 'BaseContainerNode.activate_st: abstract method called' );
};

BaseContainerNode.prototype.notifyDeactivating = function( /*aAnimationNode*/ )
{
log( 'BaseContainerNode.notifyDeactivating: abstract method called' );
};

BaseContainerNode.prototype.isDurationIndefinite = function()
{
return this.bDurationIndefinite;
};

BaseContainerNode.prototype.isChildNode = function( aAnimationNode )
{
var nChildrenCount = this.aChildrenArray.length;
for( var i = 0; i < nChildrenCount; ++i )
{
if( this.aChildrenArray[i].getId() == aAnimationNode.getId() )
return true;
}
return false;
};

BaseContainerNode.prototype.notifyDeactivatedChild = function( aChildNode )
{
assert( ( aChildNode.getState() == FROZEN_NODE ) || ( aChildNode.getState() == ENDED_NODE ),
'BaseContainerNode.notifyDeactivatedChild: passed child node is neither in FROZEN nor in ENDED state' );

assert( this.getState() != INVALID_NODE,
'BaseContainerNode.notifyDeactivatedChild: this node is invalid' );

if( !this.isChildNode( aChildNode ) )
{
log( 'BaseContainerNode.notifyDeactivatedChild: unknown child notifier!' );
return false;
}

var nChildrenCount = this.aChildrenArray.length;

if( bVerbose )
{
if( this.getAttributeName() )
sInfo += ';  attributeName: ' + this.getAttributeName();

if( this.getToValue() )
sInfo += ';  to: ' + this.getToValue();
}

return sInfo;
};


function AnimationBaseNode3( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode3.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.eAccumulate = undefined;
this.eCalcMode = undefined;
this.aFromValue = null;
this.aByValue = null;
this.aKeyTimes = null;
this.aValues = null;
this.aFormula= null;
}
extend( AnimationBaseNode3, AnimationBaseNode2 );


AnimationBaseNode3.prototype.parseElement = function()
{
var bRet = AnimationBaseNode3.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.eAccumulate = ACCUMULATE_MODE_NONE;
var sAccumulateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'accumulate' );
if( sAccumulateAttr == 'sum' )
this.eAccumulate = ACCUMULATE_MODE_SUM;

this.eCalcMode = CALC_MODE_LINEAR;
var sCalcModeAttr = aAnimElem.getAttributeNS( NSS['smil'], 'calcMode' );
if( sCalcModeAttr && aCalcModeInMap[ sCalcModeAttr ] )
this.eCalcMode = aCalcModeInMap[ sCalcModeAttr ];

this.aFromValue = aAnimElem.getAttributeNS( NSS['smil'], 'from' );

this.aByValue = aAnimElem.getAttributeNS( NSS['smil'], 'by' );

this.aKeyTimes = [];
var sKeyTimesAttr = aAnimElem.getAttributeNS( NSS['smil'], 'keyTimes' );
sKeyTimesAttr = removeWhiteSpaces( sKeyTimesAttr );
if( sKeyTimesAttr )
{
var aKeyTimes = sKeyTimesAttr.split( ';' );
for( var i = 0; i < aKeyTimes.length; ++i )
this.aKeyTimes.push( parseFloat( aKeyTimes[i] ) );
}

var sValuesAttr = aAnimElem.getAttributeNS( NSS['smil'], 'values' );
if( sValuesAttr )
{
this.aValues = sValuesAttr.split( ';' );
}
else
{
this.aValues = [];
}

this.aFormula = aAnimElem.getAttributeNS( NSS['anim'], 'formula' );

return bRet;
};

AnimationBaseNode3.prototype.getAccumulate = function()
{
return this.eAccumulate;
};

AnimationBaseNode3.prototype.getCalcMode = function()
{
return this.eCalcMode;
};

AnimationBaseNode3.prototype.getFromValue = function()
{
return this.aFromValue;
};

AnimationBaseNode3.prototype.getByValue = function()
{
return this.aByValue;
};

AnimationBaseNode3.prototype.getKeyTimes = function()
{
return this.aKeyTimes;
};

AnimationBaseNode3.prototype.getValues = function()
{
return this.aValues;
};

AnimationBaseNode3.prototype.getFormula = function()
{
return this.aFormula;
};

AnimationBaseNode3.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode3.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getAccumulate() )
sInfo += ';  accumulate: ' + aAccumulateModeOutMap[ this.getAccumulate() ];

sInfo += ';  calcMode: ' + aCalcModeOutMap[ this.getCalcMode() ];

if( this.getFromValue() )
sInfo += ';  from: ' + this.getFromValue();

if( this.getByValue() )
sInfo += ';  by: ' + this.getByValue();

if( this.getKeyTimes().length )
sInfo += ';  keyTimes: ' + this.getKeyTimes().join( ',' );

if( this.getValues().length )
sInfo += ';  values: ' + this.getValues().join( ',' );

if( this.getFormula() )
sInfo += ';  formula: ' + this.getFormula();
}

return sInfo;
};


function BaseContainerNode( aAnimElem, aParentNode, aNodeContext )
{
BaseContainerNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'BaseContainerNode';
this.bIsContainer = true;
this.aChildrenArray = [];
this.nFinishedChildren = 0;
this.bDurationIndefinite = false;
this.nLeftIterations = 1;
{
if( this.aActivity )
this.aActivity.dispose();
if( ( this.getFillMode() == FILL_MODE_REMOVE ) && this.getAnimatedElement()  )
this.removeEffect();
}
};

AnimationBaseNode.prototype.createActivity = function()
{
log( 'AnimationBaseNode.createActivity: abstract method called' );
};

AnimationBaseNode.prototype.fillActivityParams = function()
{

var nDuration = 0.001;
if( this.getDuration().isValue() )
{
nDuration = this.getDuration().getValue();
}
else
{
log( 'AnimationBaseNode.fillActivityParams: duration is not a number' );
}

var aActivityParamSet = new ActivityParamSet();

aActivityParamSet.aEndEvent             = makeEvent( bind( this, this.deactivate ) );
aActivityParamSet.aTimerEventQueue      = this.aContext.aTimerEventQueue;
aActivityParamSet.aActivityQueue        = this.aContext.aActivityQueue;
aActivityParamSet.nMinDuration          = nDuration;
aActivityParamSet.nMinNumberOfFrames    = this.getMinFrameCount();
aActivityParamSet.bAutoReverse          = this.isAutoReverseEnabled();
aActivityParamSet.nRepeatCount          = this.getRepeatCount();
aActivityParamSet.nAccelerationFraction = this.getAccelerateValue();
aActivityParamSet.nDecelerationFraction = this.getDecelerateValue();
aActivityParamSet.nSlideWidth           = this.aNodeContext.aSlideWidth;
aActivityParamSet.nSlideHeight          = this.aNodeContext.aSlideHeight;

return aActivityParamSet;
};

AnimationBaseNode.prototype.hasPendingAnimation = function()
{
return true;
};

AnimationBaseNode.prototype.saveStateOfAnimatedElement = function()
{
this.getAnimatedElement().saveState( this.getId() );
};

AnimationBaseNode.prototype.removeEffect = function()
{
this.getAnimatedElement().restoreState( this.getId() );
};

AnimationBaseNode.prototype.getTargetElement = function()
{
return this.aTargetElement;
};

AnimationBaseNode.prototype.getAnimatedElement = function()
{
return this.aAnimatedElement;
};

AnimationBaseNode.prototype.dispose= function()
{
if( this.aActivity )
this.aActivity.dispose();

AnimationBaseNode.superclass.dispose.call( this );
};

AnimationBaseNode.prototype.getMinFrameCount = function()
{
return this.nMinFrameCount;
};

AnimationBaseNode.prototype.getAdditiveMode = function()
{
return this.eAdditiveMode;
};

AnimationBaseNode.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode.superclass.info.call( this, bVerbose );

if( bVerbose )
{
if( this.getMinFrameCount() )
sInfo += ';  min frame count: ' + this.getMinFrameCount();

sInfo += ';  additive: ' + aAddittiveModeOutMap[ this.getAdditiveMode() ];

if( this.getTargetElement() )
{
var sElemId = this.getTargetElement().getAttribute( 'id' );
sInfo += ';  targetElement: ' +  sElemId;
}
}

return sInfo;
};


function AnimationBaseNode2( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode2.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sAttributeName = '';
this.aToValue = null;

}
extend( AnimationBaseNode2, AnimationBaseNode );


AnimationBaseNode2.prototype.parseElement = function()
{
var bRet = AnimationBaseNode2.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.sAttributeName = aAnimElem.getAttributeNS( NSS['smil'], 'attributeName' );
if( !this.sAttributeName )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationBaseNode2.parseElement: target attribute name not found: ' + this.sAttributeName );
}

this.aToValue = aAnimElem.getAttributeNS( NSS['smil'], 'to' );

return bRet;
};

AnimationBaseNode2.prototype.getAttributeName = function()
{
return this.sAttributeName;
};

AnimationBaseNode2.prototype.getToValue = function()
{
return this.aToValue;
};

AnimationBaseNode2.prototype.info = function( bVerbose )
{
var sInfo = AnimationBaseNode2.superclass.info.call( this, bVerbose );

if( this.isAutoReverseEnabled() )
sInfo += ';  autoReverse: true';

}

return sInfo;
};

BaseNode.prototype.callInfo = function( sMethodName )
{
var sInfo = this.sClassName +
'( ' + this.getId() +
', ' + getNodeStateName( this.getState() ) +
' ).' + sMethodName;
return sInfo;
};

BaseNode.prototype.DBG = function( sMessage, nTime )
{
ANIMDBG.print( sMessage, nTime );
};


function AnimationBaseNode( aAnimElem, aParentNode, aNodeContext )
{
AnimationBaseNode.superclass.constructor.call( this, aAnimElem, aParentNode, aNodeContext );

this.sClassName = 'AnimationBaseNode';
this.bIsContainer = false;
this.aTargetElement = null;
this.bIsTargetTextElement = false;
this.aAnimatedElement = null;
this.aActivity = null;

this.nMinFrameCount = undefined;
this.eAdditiveMode = undefined;

}
extend( AnimationBaseNode, BaseNode );


AnimationBaseNode.prototype.parseElement = function()
{
var bRet = AnimationBaseNode.superclass.parseElement.call( this );

var aAnimElem = this.aElement;

this.aTargetElement = null;
var sTargetElementAttr = aAnimElem.getAttributeNS( NSS['smil'], 'targetElement' );
if( sTargetElementAttr )
this.aTargetElement = document.getElementById( sTargetElementAttr );

if( !this.aTargetElement )
{
this.eCurrentState = INVALID_NODE;
log( 'AnimationBaseNode.parseElement: target element not found: ' + sTargetElementAttr );
}

var sSubItemAttr = aAnimElem.getAttributeNS( NSS['anim'], 'sub-item' );
this.bIsTargetTextElement = ( sSubItemAttr && ( sSubItemAttr === 'text' ) );

var sAdditiveAttr = aAnimElem.getAttributeNS( NSS['smil'], 'additive' );
if( sAdditiveAttr && aAddittiveModeInMap[sAdditiveAttr] )
this.eAdditiveMode = aAddittiveModeInMap[sAdditiveAttr];
else
this.eAdditiveMode = ADDITIVE_MODE_REPLACE;

this.nMinFrameCount = ( this.getDuration().isValue() )
? ( this.getDuration().getValue() * MINIMUM_FRAMES_PER_SECONDS )
: MINIMUM_FRAMES_PER_SECONDS;
if( this.nMinFrameCount < 1.0 )
this.nMinFrameCount = 1;
else if( this.nMinFrameCount > MINIMUM_FRAMES_PER_SECONDS )
this.nMinFrameCount = MINIMUM_FRAMES_PER_SECONDS;


if( this.aTargetElement )
{
if( aAnimElem.getAttributeNS( NSS['smil'], 'attributeName' ) === 'visibility' )
{
if( aAnimElem.getAttributeNS( NSS['smil'], 'to' ) === 'visible' )
this.aTargetElement.setAttribute( 'visibility', 'hidden' );
}

if( !this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ] )
{
if( this.bIsTargetTextElement )
{
this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ]
= new AnimatedTextElement( this.aTargetElement );
}
else
{
this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ]
= new AnimatedElement( this.aTargetElement );
}
}
this.aAnimatedElement = this.aNodeContext.aAnimatedElementMap[ sTargetElementAttr ];

this.aAnimatedElement.setAdditiveMode( this.eAdditiveMode );
}


return bRet;
};

AnimationBaseNode.prototype.init_st = function()
{
if( this.aActivity )
this.aActivity.activate( makeEvent( bind( this, this.deactivate ) ) );
else
this.aActivity = this.createActivity();
return true;
};

AnimationBaseNode.prototype.resolve_st = function()
{
return true;
};

AnimationBaseNode.prototype.activate_st = function()
{
if( this.aActivity )
{
this.saveStateOfAnimatedElement();
this.aActivity.setTargets( this.getAnimatedElement() );
if( this.getContext().bIsSkipping  )
{
this.aActivity.end();
}
else
{
this.getContext().aActivityQueue.addActivity( this.aActivity );
}
}
else
{
AnimationBaseNode.superclass.scheduleDeactivationEvent.call( this );
}
};

AnimationBaseNode.prototype.deactivate_st = function( eDestState )
{
if( eDestState == FROZEN_NODE )
{
if( this.aActivity )
this.aActivity.end();
}
if( eDestState == ENDED_NODE )
{
if( this.getDuration() && this.getDuration().isValue() )
aEvent = this.makeDeactivationEvent( this.getDuration().getValue() );
}
if( aEvent )
{
this.aContext.aTimerEventQueue.addEvent( aEvent );
}
};

BaseNode.prototype.checkValidNode = function()
{
return ( this.eCurrentState != INVALID_NODE );
};

BaseNode.prototype.init_st = function()
{
return true;
};

BaseNode.prototype.resolve_st = function()
{
return true;
};

BaseNode.prototype.activate_st = function()
{
this.scheduleDeactivationEvent();
};

BaseNode.prototype.deactivate_st = function( /*aNodeState*/ )
{
};

BaseNode.prototype.notifyEndListeners = function()
{
var nDeactivatingListenerCount = this.aDeactivatingListenerArray.length;

for( var i = 0; i < nDeactivatingListenerCount; ++i )
{
this.aDeactivatingListenerArray[i].notifyDeactivating( this );
}

this.aContext.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_END_EVENT, this.getId() );
if( this.getParentNode() && this.getParentNode().isMainSequenceRootNode() )
this.aContext.aEventMultiplexer.notifyNextEffectEndEvent();

if( this.isMainSequenceRootNode() )
this.aContext.aEventMultiplexer.notifyAnimationsEndEvent();
};

BaseNode.prototype.getContext = function()
{
return this.aContext;
};

BaseNode.prototype.isTransition = function( eFromState, eToState )
{
return ( ( this.aStateTransTable[ eFromState ] & eToState ) != 0 );
};

BaseNode.prototype.inStateOrTransition = function( nMask )
{
return ( ( ( this.eCurrentState & nMask ) != 0 ) || ( ( this.nCurrentStateTransition & nMask ) != 0 ) );
};

BaseNode.prototype.isContainer = function()
{
return this.bIsContainer;
};

BaseNode.prototype.getBegin = function()
{
return this.aBegin;
};

BaseNode.prototype.getDuration = function()
{
return this.aDuration;
};

BaseNode.prototype.getEnd = function()
{
return this.aEnd;
};

BaseNode.prototype.getFillMode = function()
{
return this.eFillMode;
};

BaseNode.prototype.getRestartMode = function()
{
return this.eRestartMode;
};

BaseNode.prototype.getRepeatCount = function()
{
return this.nRepeatCount;
};

BaseNode.prototype.getAccelerateValue = function()
{
return this.nAccelerate;
};

BaseNode.prototype.getDecelerateValue = function()
{
return this.nDecelerate;
};

BaseNode.prototype.isAutoReverseEnabled = function()
{
return this.bAutoreverse;
};

BaseNode.prototype.info = function( bVerbose )
{
var sInfo = 'class name: ' + this.sClassName;
sInfo += ';  element name: ' + this.aElement.localName;
sInfo += ';  id: ' + this.getId();
sInfo += ';  state: ' + getNodeStateName( this.getState() );

if( bVerbose )
{
sInfo += ';  is container: ' + this.isContainer();

if( this.getBegin() )
sInfo += ';  begin: ' + this.getBegin().info();

if( this.getDuration() )
sInfo += ';  dur: ' + this.getDuration().info();

if( this.getEnd() )
sInfo += ';  end: ' + this.getEnd().info();

if( this.getFillMode() )
sInfo += ';  fill: ' + aFillModeOutMap[ this.getFillMode() ];

if( this.getRestartMode() )
sInfo += ';  restart: ' + aRestartModeOutMap[ this.getRestartMode() ];

if( this.getRepeatCount() && ( this.getRepeatCount() != 1.0 ) )
sInfo += ';  repeatCount: ' + this.getRepeatCount();

if( this.getAccelerateValue() )
sInfo += ';  accelerate: ' + this.getAccelerateValue();

if( this.getDecelerateValue() )
sInfo += ';  decelerate: ' + this.getDecelerateValue();

return false;
};

BaseNode.prototype.activate = function()
{
if( ! this.checkValidNode() )
return false;

if( this.eCurrentState == ACTIVE_NODE )
log( 'BaseNode.activate: already in ACTIVE state' );

this.DBG( this.callInfo( 'activate' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );

if( aStateTrans.enter( ACTIVE_NODE ) )
{
this.activate_st();
aStateTrans.commit();
if( !this.aContext.aEventMultiplexer )
log( 'BaseNode.activate: this.aContext.aEventMultiplexer is not valid' );
this.aContext.aEventMultiplexer.notifyEvent( EVENT_TRIGGER_BEGIN_EVENT, this.getId() );
return true;
}
return false;
};

BaseNode.prototype.deactivate = function()
{
if( this.inStateOrTransition( ENDED_NODE | FROZEN_NODE ) || !this.checkValidNode() )
return;

if( this.isTransition( this.eCurrentState, FROZEN_NODE ) )
{
this.DBG( this.callInfo( 'deactivate' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );
if( aStateTrans.enter( FROZEN_NODE, true /* FORCE */ ) )
{
this.deactivate_st( FROZEN_NODE );
aStateTrans.commit();

this.notifyEndListeners();

if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
}
}
else
{
this.end();
}
};

BaseNode.prototype.end = function()
{
var bIsFrozenOrInTransitionToFrozen = this.inStateOrTransition( FROZEN_NODE );
if( this.inStateOrTransition( ENDED_NODE ) || !this.checkValidNode() )
return;

if( !(this.isTransition( this.eCurrentState, ENDED_NODE ) ) )
log( 'BaseNode.end: end state not reachable in transition table' );

this.DBG( this.callInfo( 'end' ), getCurrentSystemTime() );

var aStateTrans = new StateTransition( this );
if( aStateTrans.enter( ENDED_NODE, true /* FORCE */ ) )
{
this.deactivate_st( ENDED_NODE );
aStateTrans.commit();

if( !bIsFrozenOrInTransitionToFrozen )
this.notifyEndListeners();

if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
}
};

BaseNode.prototype.dispose = function()
{
if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();
this.aDeactivatingListenerArray = [];
};

BaseNode.prototype.getState = function()
{
return this.eCurrentState;
};

BaseNode.prototype.registerDeactivatingListener = function( aNotifiee )
{
if (! this.checkValidNode())
return false;

if( !aNotifiee )
{
log( 'BaseNode.registerDeactivatingListener(): invalid notifiee' );
return false;
}
this.aDeactivatingListenerArray.push( aNotifiee );

return true;
};

BaseNode.prototype.notifyDeactivating = function( aNotifier )
{
assert( ( aNotifier.getState() == FROZEN_NODE ) || ( aNotifier.getState() == ENDED_NODE ),
'BaseNode.notifyDeactivating: Notifier node is neither in FROZEN nor in ENDED state' );
};

BaseNode.prototype.isMainSequenceRootNode = function()
{
return this.bMainSequenceRootNode;
};

BaseNode.prototype.isInteractiveSequenceRootNode = function()
{
return this.bInteractiveSequenceRootNode;
};

BaseNode.prototype.makeDeactivationEvent = function( nDelay )
{
if( this.aDeactivationEvent )
{
this.aDeactivationEvent.charge();
}
else
{
if( typeof( nDelay ) == typeof(0) )
this.aDeactivationEvent = makeDelay( bind( this, this.deactivate ), nDelay );
else
this.aDeactivationEvent = null;
}
return this.aDeactivationEvent;
};

BaseNode.prototype.scheduleDeactivationEvent = function( aEvent )
{
this.DBG( this.callInfo( 'scheduleDeactivationEvent' ) );

if( !aEvent )
var sIdAttr = aAnimElem.getAttributeNS( NSS['xml'], 'id' );
if( sIdAttr )
this.aNodeContext.aAnimationNodeMap[ sIdAttr ] = this;

this.aBegin = null;
var sBeginAttr = aAnimElem.getAttributeNS( NSS['smil'], 'begin' );
this.aBegin = new Timing( this, sBeginAttr );
this.aBegin.parse();

this.aEnd = null;
var sEndAttr = aAnimElem.getAttributeNS( NSS['smil'], 'end' );
if( sEndAttr )
{
this.aEnd = new Timing( this, sEndAttr );
this.aEnd.parse();
}

this.aDuration = null;
var sDurAttr = aAnimElem.getAttributeNS( NSS['smil'], 'dur' );
this.aDuration = new Duration( sDurAttr );
if( !this.aDuration.isSet() )
{
if( this.isContainer() )
this.aDuration = null;
else
this.aDuration = new Duration( 'indefinite' );
}

var sFillAttr = aAnimElem.getAttributeNS( NSS['smil'], 'fill' );
if( sFillAttr && aFillModeInMap[ sFillAttr ])
this.eFillMode = aFillModeInMap[ sFillAttr ];
else
this.eFillMode = FILL_MODE_DEFAULT;

var sRestartAttr = aAnimElem.getAttributeNS( NSS['smil'], 'restart' );
if( sRestartAttr && aRestartModeInMap[ sRestartAttr ] )
this.eRestartMode = aRestartModeInMap[ sRestartAttr ];
else
this.eRestartMode = RESTART_MODE_DEFAULT;

var sRepeatCount = aAnimElem.getAttributeNS( NSS['smil'], 'repeatCount' );
if( !sRepeatCount )
this.nRepeatCount = 1;
else
this.nRepeatCount = parseFloat( sRepeatCount );
if( ( isNaN(this.nRepeatCount) ) && ( sRepeatCount != 'indefinite' ) )
this.nRepeatCount = 1;

this.nAccelerate = 0.0;
var sAccelerateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'accelerate' );
if( sAccelerateAttr )
this.nAccelerate = parseFloat( sAccelerateAttr );
if( isNaN(this.nAccelerate) )
this.nAccelerate = 0.0;

this.nDecelerate = 0.0;
var sDecelerateAttr = aAnimElem.getAttributeNS( NSS['smil'], 'decelerate' );
if( sDecelerateAttr )
this.nDecelerate = parseFloat( sDecelerateAttr );
if( isNaN(this.nDecelerate) )
this.nDecelerate = 0.0;

this.bAutoreverse = false;
var sAutoReverseAttr = aAnimElem.getAttributeNS( NSS['smil'], 'autoReverse' );
if( sAutoReverseAttr == 'true' )
this.bAutoreverse = true;


if( this.eFillMode == FILL_MODE_DEFAULT )
if( this.getParentNode() )
this.eFillMode = this.getParentNode().getFillMode();
else
this.eFillMode = FILL_MODE_AUTO;

if( this.eFillMode ==  FILL_MODE_AUTO ) // see SMIL recommendation document
{
this.eFillMode = ( this.aEnd ||
( this.nRepeatCount != 1) ||
( this.aDuration && !this.aDuration.isIndefinite() ) )
? FILL_MODE_REMOVE
: FILL_MODE_FREEZE;
}

if( this.eRestartMode == RESTART_MODE_DEFAULT )
if( this.getParentNode() )
this.eRestartMode = this.getParentNode().getRestartMode();
else
this.eRestartMode = RESTART_MODE_ALWAYS;

if( ( this.nAccelerate + this.nDecelerate ) > 1.0 )
{
this.nAccelerate = 0.0;
this.nDecelerate = 0.0;
}

this.aStateTransTable = getTransitionTable( this.getRestartMode(), this.getFillMode() );

return true;
};

BaseNode.prototype.getParentNode = function()
{
return this.aParentNode;
};

BaseNode.prototype.init = function()
{
this.DBG( this.callInfo( 'init' ) );
if( ! this.checkValidNode() )
return false;
if( this.aActivationEvent )
this.aActivationEvent.dispose();
if( this.aDeactivationEvent )
this.aDeactivationEvent.dispose();

this.eCurrentState = UNRESOLVED_NODE;

return this.init_st();
};

BaseNode.prototype.resolve = function()
{
if( this.aNodeContext.bIsInvalid || ! this.checkValidNode() )
return false;

this.DBG( this.callInfo( 'resolve' ) );

if( this.eCurrentState == RESOLVED_NODE )
log( 'BaseNode.resolve: already in RESOLVED state' );

var aStateTrans = new StateTransition( this );

if( aStateTrans.enter( RESOLVED_NODE ) &&
this.isTransition( RESOLVED_NODE, ACTIVE_NODE ) &&
this.resolve_st() )
{
aStateTrans.commit();

if( this.aActivationEvent )
{
this.aActivationEvent.charge();
}
else
{
this.aActivationEvent = makeDelay( bind( this, this.activate ), this.getBegin().getOffset() + this.nStartDelay );
}
registerEvent( this.getId(), this.getBegin(), this.aActivationEvent, this.aNodeContext );

return true;
}
};


function AnimationNode()
{
}

AnimationNode.prototype.init = function() {};
AnimationNode.prototype.resolve = function() {};
AnimationNode.prototype.activate = function() {};
AnimationNode.prototype.deactivate = function() {};
AnimationNode.prototype.end = function() {};
AnimationNode.prototype.getState = function() {};
AnimationNode.prototype.registerDeactivatingListener = function() {};
AnimationNode.prototype.notifyDeactivating = function() {};


function NodeContext( aSlideShowContext )
{
this.aContext = aSlideShowContext;
this.aAnimationNodeMap = null;
this.aAnimatedElementMap = null;
this.aSourceEventElementMap = null;
this.nStartDelay = 0.0;
this.bFirstRun = undefined;
this.bIsInvalid = false;
this.aSlideHeight = HEIGHT;
this.aSlideWidth = WIDTH;
}


NodeContext.prototype.makeSourceEventElement = function( sId, aEventBaseElem )
{
if( !aEventBaseElem )
{
log( 'NodeContext.makeSourceEventElement: event base element is not valid' );
return null;
}

if( !this.aContext.aEventMultiplexer )
{
log( 'NodeContext.makeSourceEventElement: event multiplexer not initialized' );
return null;
}

if( !this.aSourceEventElementMap[ sId ] )
{
this.aSourceEventElementMap[ sId ] = new SourceEventElement( sId, aEventBaseElem, this.aContext.aEventMultiplexer );
}
return this.aSourceEventElementMap[ sId ];
};


function StateTransition( aBaseNode )
{
this.aNode = aBaseNode;
this.eToState = INVALID_NODE;
}

StateTransition.prototype.enter = function( eNodeState, bForce )
{
if( !bForce ) bForce = false;

if( this.eToState != INVALID_NODE )
{
log( 'StateTransition.enter: commit() before enter()ing again!' );
return false;
}
if( !bForce && !this.aNode.isTransition( this.aNode.getState(), eNodeState  ) )
return false;

if( ( this.aNode.nCurrentStateTransition & eNodeState ) != 0 )
return false; // already in wanted transition

this.aNode.nCurrentStateTransition |= eNodeState;
this.eToState = eNodeState;
return true;
};

StateTransition.prototype.commit = function()
{
if( this.eToState != INVALID_NODE )
{
this.aNode.eCurrentState = this.eToState;
this.clear();
}
};

StateTransition.prototype.clear = function()
{
if( this.eToState != INVALID_NODE )
{
this.aNode.nCurrentStateTransition &= ~this.eToState;
this.eToState = INVALID_NODE;
}
};


function BaseNode( aAnimElem, aParentNode, aNodeContext )
{
this.nId = getUniqueId();
this.sClassName = 'BaseNode';

if( !aAnimElem )
log( 'BaseNode(id:' + this.nId + ') constructor: aAnimElem is not valid' );

if( !aNodeContext )
log( 'BaseNode(id:' + this.nId + ') constructor: aNodeContext is not valid' );

if( !aNodeContext.aContext )
log( 'BaseNode(id:' + this.nId + ') constructor: aNodeContext.aContext is not valid' );


this.bIsContainer = false;
this.aElement = aAnimElem;
this.aParentNode = aParentNode;
this.aNodeContext = aNodeContext;
this.aContext = aNodeContext.aContext;
this.nStartDelay = aNodeContext.nStartDelay;
this.eCurrentState = UNRESOLVED_NODE;
this.nCurrentStateTransition = 0;
this.aDeactivatingListenerArray = [];
this.aActivationEvent = null;
this.aDeactivationEvent = null;

this.aBegin = null;
this.aDuration = null;
this.aEnd = null;
this.bMainSequenceRootNode = false;
this.bInteractiveSequenceRootNode = false;
this.eFillMode = FILL_MODE_FREEZE;
this.eRestartMode = RESTART_MODE_NEVER;
this.nRepeatCount = undefined;
this.nAccelerate = 0.0;
this.nDecelerate = 0.0;
this.bAutoReverse = false;

}
extend( BaseNode, AnimationNode );


BaseNode.prototype.getId = function()
{
return this.nId;
};

BaseNode.prototype.parseElement = function()
{
var aAnimElem = this.aElement;


nMinutes = parseInt( aClockTimeParts[1] );
nSeconds = parseInt( aClockTimeParts[2] );
if( aClockTimeParts[3] )
nSeconds += parseFloat( aClockTimeParts[3] );

nTimeInSec = nMinutes * 60 + nSeconds;
}
else if( reTimeCountValue.test( sClockValue ) )
{
aClockTimeParts = reTimeCountValue.exec( sClockValue );

var nTimeCount = parseInt( aClockTimeParts[1] );
if( aClockTimeParts[2] )
nTimeCount += parseFloat( aClockTimeParts[2] );

if( aClockTimeParts[3] )
{
if( aClockTimeParts[3] == 'h' )
{
nTimeInSec = nTimeCount * 3600;
}
else if( aClockTimeParts[3] == 'min' )
{
nTimeInSec = nTimeCount * 60;
}
else if( aClockTimeParts[3] == 's' )
{
nTimeInSec = nTimeCount;
}
else if( aClockTimeParts[3] == 'ms' )
{
nTimeInSec = nTimeCount / 1000;
}
}
else
{
nTimeInSec = nTimeCount;
}

}

if( nTimeInSec )
nTimeInSec = parseFloat( nTimeInSec.toFixed( 3 ) );
return nTimeInSec;
};

Timing.prototype.info = function( bVerbose )
{

var sInfo = '';

if( bVerbose )
{
sInfo = 'description: ' + this.sTimingDescription + ', ';

sInfo += ', type: ' +  aTimingTypeOutMap[ this.getType() ];
sInfo += ', offset: ' + this.getOffset();
sInfo += ', event base element id: ' + this.getEventBaseElementId();
sInfo += ', timing event type: ' + aEventTriggerOutMap[ this.getEventType() ];
}
else
{
switch( this.getType() )
{
case INDEFINITE_TIMING:
sInfo += 'indefinite';
break;
case OFFSET_TIMING:
sInfo += this.getOffset();
break;
case EVENT_TIMING:
case SYNCBASE_TIMING:
if( this.getEventBaseElementId() )
sInfo += this.getEventBaseElementId() + '.';
sInfo += aEventTriggerOutMap[ this.getEventType() ];
if( this.getOffset() )
{
if( this.getOffset() > 0 )
sInfo += '+';
sInfo += this.getOffset();
}
}
}

return sInfo;
};


function Duration( sDurationAttribute )
{
this.bIndefinite = false;
this.bMedia = false;
this.nValue = undefined;
this.bDefined = false;

if( !sDurationAttribute )
return;

if( sDurationAttribute == 'indefinite' )
this.bIndefinite = true;
else if( sDurationAttribute == 'media' )
this.bMedia = true;
else
{
this.nValue = Timing.parseClockValue( sDurationAttribute );
if( this.nValue <= 0.0 )
this.nValue = 0.001;  // duration must be always greater than 0
}
this.bDefined = true;
}


Duration.prototype.isSet = function()
{
return this.bDefined;
};

Duration.prototype.isIndefinite = function()
{
return this.bIndefinite;
};

Duration.prototype.isMedia = function()
{
return this.bMedia;
};

Duration.prototype.isValue = function()
{
return this.nValue != undefined;
};

Duration.prototype.getValue= function()
{
return this.nValue;
};

Duration.prototype.info= function()
{
var sInfo;

if( this.isIndefinite() )
sInfo = 'indefinite';
else if( this.isMedia() )
sInfo = 'media';
else if( this.getValue() )
sInfo = this.getValue();

return sInfo;
this.eTimingType = UNKNOWN_TIMING;
this.nOffset = 0.0;                       // in seconds
this.sEventBaseElementId = '';            // the element id for event based timing
this.eEventType = EVENT_TRIGGER_UNKNOWN;  // the event type
}

Timing.prototype.getAnimationNode = function()
{
return this.aAnimationNode;
};

Timing.prototype.getType = function()
{
return this.eTimingType;
};

Timing.prototype.getOffset = function()
{
return this.nOffset;
};

Timing.prototype.getEventBaseElementId = function()
{
return this.sEventBaseElementId;
};

Timing.prototype.getEventType = function()
{
return this.eEventType;
};

Timing.prototype.parse = function()
{
if( !this.sTimingDescription )
{
this.eTimingType = OFFSET_TIMING;
return;
}

if( this.sTimingDescription == 'indefinite' )
this.eTimingType = INDEFINITE_TIMING;
else
{
var nFirstCharCode = this.sTimingDescription.charCodeAt(0);
var bPositiveOffset = !( nFirstCharCode == CHARCODE_MINUS );
if ( ( nFirstCharCode == CHARCODE_PLUS ) ||
( nFirstCharCode == CHARCODE_MINUS ) ||
( ( nFirstCharCode >= CHARCODE_0 ) && ( nFirstCharCode <= CHARCODE_9 ) ) )
{
var sClockValue
= ( ( nFirstCharCode == CHARCODE_PLUS ) || ( nFirstCharCode == CHARCODE_MINUS ) )
? this.sTimingDescription.substr( 1 )
: this.sTimingDescription;

var TimeInSec = Timing.parseClockValue( sClockValue );
if( TimeInSec != undefined )
{
this.eTimingType = OFFSET_TIMING;
this.nOffset = bPositiveOffset ? TimeInSec : -TimeInSec;
}
}
else
{
var aTimingSplit = [];
bPositiveOffset = true;
if( this.sTimingDescription.indexOf( '+' ) != -1 )
{
aTimingSplit = this.sTimingDescription.split( '+' );
}
else if( this.sTimingDescription.indexOf( '-' ) != -1 )
{
aTimingSplit = this.sTimingDescription.split( '-' );
bPositiveOffset = false;
}
else
{
aTimingSplit[0] = this.sTimingDescription;
aTimingSplit[1] = '';
}

if( aTimingSplit[0].indexOf( '.' ) != -1 )
{
var aEventSplit = aTimingSplit[0].split( '.' );
this.sEventBaseElementId = aEventSplit[0];
this.eEventType = getEventTriggerType( aEventSplit[1] );
}
else
{
this.eEventType = getEventTriggerType( aTimingSplit[0] );
}

if( this.eEventType == EVENT_TRIGGER_UNKNOWN )
return;

if( ( this.eEventType == EVENT_TRIGGER_BEGIN_EVENT ) ||
( this.eEventType == EVENT_TRIGGER_END_EVENT ) )
{
this.eTimingType = SYNCBASE_TIMING;
}
else
{
this.eTimingType = EVENT_TIMING;
}

if( aTimingSplit[1] )
{
sClockValue = aTimingSplit[1];
TimeInSec = Timing.parseClockValue( sClockValue );
if( TimeInSec != undefined )
{
this.nOffset = ( bPositiveOffset ) ? TimeInSec : -TimeInSec;
}
else
{
this.eTimingType = UNKNOWN_TIMING;
}

}
}
}

};

Timing.parseClockValue = function( sClockValue )
{
if( !sClockValue )
return 0.0;

var nTimeInSec = undefined;

var reFullClockValue = /^([0-9]+):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?$/;
var rePartialClockValue = /^([0-5][0-9]):([0-5][0-9])(.[0-9]+)?$/;
var reTimeCountValue = /^([0-9]+)(.[0-9]+)?(h|min|s|ms)?$/;

if( reFullClockValue.test( sClockValue ) )
{
var aClockTimeParts = reFullClockValue.exec( sClockValue );

var nHours = parseInt( aClockTimeParts[1] );
var nMinutes = parseInt( aClockTimeParts[2] );
var nSeconds = parseInt( aClockTimeParts[3] );
if( aClockTimeParts[4] )
nSeconds += parseFloat( aClockTimeParts[4] );

nTimeInSec = ( ( nHours * 60 ) +  nMinutes ) * 60 + nSeconds;

}
else if( rePartialClockValue.test( sClockValue ) )
{
aClockTimeParts = rePartialClockValue.exec( sClockValue );


function createStateTransitionTable()
{
var aSTT = {};

aSTT[RESTART_MODE_NEVER] = {};
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE] = {};
aSTT[RESTART_MODE_ALWAYS] = {};

var aTable =
aSTT[RESTART_MODE_NEVER][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = ENDED_NODE;
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = ENDED_NODE;    // this state is a sink here (cannot restart)

aTable =
aSTT[RESTART_MODE_NEVER][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_NEVER][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_NEVER][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = ENDED_NODE;
aTable[ENDED_NODE]          = ENDED_NODE;   // this state is a sink here (cannot restart)

aTable =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = ENDED_NODE;
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_WHEN_NOT_ACTIVE][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_REMOVE] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[FROZEN_NODE]         = INVALID_NODE;  // this state is unreachable here
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

aTable =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_FREEZE] =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_HOLD] =
aSTT[RESTART_MODE_ALWAYS][FILL_MODE_TRANSITION] = {};
aTable[INVALID_NODE]        = INVALID_NODE;
aTable[UNRESOLVED_NODE]     = RESOLVED_NODE | ENDED_NODE;
aTable[RESOLVED_NODE]       = ACTIVE_NODE | ENDED_NODE;
aTable[ACTIVE_NODE]         = RESOLVED_NODE | ACTIVE_NODE | FROZEN_NODE | ENDED_NODE;
aTable[FROZEN_NODE]         = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible
aTable[ENDED_NODE]          = RESOLVED_NODE | ACTIVE_NODE | ENDED_NODE;  // restart is possible

return aSTT;
}

var aStateTransitionTable = createStateTransitionTable();


function getTransitionTable( eRestartMode, eFillMode )
{
if( eRestartMode == RESTART_MODE_DEFAULT )
{
log( 'getTransitionTable: unexpected restart mode: ' + eRestartMode
+ '. Used NEVER instead.');
eRestartMode = RESTART_MODE_NEVER;
}

if( eFillMode == FILL_MODE_DEFAULT ||
eFillMode == FILL_MODE_AUTO )
{
eFillMode = FILL_MODE_REMOVE;
}

return aStateTransitionTable[eRestartMode][eFillMode];
}


var EVENT_TRIGGER_UNKNOWN               = 0;
var EVENT_TRIGGER_ON_SLIDE_BEGIN        = 1; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_SLIDE_END          = 2; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_BEGIN_EVENT           = 3;
var EVENT_TRIGGER_END_EVENT             = 4;
var EVENT_TRIGGER_ON_CLICK              = 5;
var EVENT_TRIGGER_ON_DBL_CLICK          = 6; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_MOUSE_ENTER        = 7; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_MOUSE_LEAVE        = 8; // eslint-disable-line no-unused-vars
var EVENT_TRIGGER_ON_NEXT_EFFECT        = 9;
var EVENT_TRIGGER_ON_PREV_EFFECT        = 10;
var EVENT_TRIGGER_REPEAT                = 11; // eslint-disable-line no-unused-vars

var aEventTriggerOutMap = [ 'unknown', 'slideBegin', 'slideEnd', 'begin', 'end', 'click',
'doubleClick', 'mouseEnter', 'mouseLeave', 'next', 'previous', 'repeat' ];


function getEventTriggerType( sEventTrigger )
{
if( sEventTrigger == 'begin' )
return EVENT_TRIGGER_BEGIN_EVENT;
else if( sEventTrigger == 'end' )
return EVENT_TRIGGER_END_EVENT;
else if( sEventTrigger == 'next' )
return EVENT_TRIGGER_ON_NEXT_EFFECT;
else if( sEventTrigger == 'prev' )
return EVENT_TRIGGER_ON_PREV_EFFECT;
else if( sEventTrigger == 'click' )
return EVENT_TRIGGER_ON_CLICK;
else
return EVENT_TRIGGER_UNKNOWN;
}


var UNKNOWN_TIMING          = 0;
var OFFSET_TIMING           = 1;
var WALLCLOCK_TIMING        = 2; // eslint-disable-line no-unused-vars
var INDEFINITE_TIMING       = 3;
var EVENT_TIMING            = 4;
var SYNCBASE_TIMING         = 5;
var MEDIA_TIMING            = 6; // eslint-disable-line no-unused-vars

var aTimingTypeOutMap = [ 'unknown', 'offset', 'wallclock', 'indefinite', 'event', 'syncbase', 'media' ];


var CHARCODE_PLUS       = '+'.charCodeAt(0);
var CHARCODE_MINUS      = '-'.charCodeAt(0);
var CHARCODE_0          = '0'.charCodeAt(0);
var CHARCODE_9          = '9'.charCodeAt(0);


function Timing( aAnimationNode, sTimingAttribute )
{
this.aAnimationNode = aAnimationNode;     // the node, the timing attribute belongs to
this.sTimingDescription = removeWhiteSpaces( sTimingAttribute );
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISEBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISELEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISETOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[SLIDEWIPE_TRANSITION] = {};
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMLEFT_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMTOP_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMRIGHT_TRANS_SUBTYPE] =
aTransitionInfoTable[SLIDEWIPE_TRANSITION][FROMBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FADE_TRANSITION] = {};
aTransitionInfoTable[FADE_TRANSITION][CROSSFADE_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADETOCOLOR_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADEFROMCOLOR_TRANS_SUBTYPE] =
aTransitionInfoTable[FADE_TRANSITION][FADEOVERCOLOR_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[RANDOMBARWIPE_TRANSITION] = {};
aTransitionInfoTable[RANDOMBARWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[RANDOMBARWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION] = {};
aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION][DOWN_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CHECKERBOARDWIPE_TRANSITION][ACROSS_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[DISSOLVE_TRANSITION] = {};
aTransitionInfoTable[DISSOLVE_TRANSITION][DEFAULT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][UP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][RIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FANWIPE_TRANSITION] = {};
aTransitionInfoTable[FANWIPE_TRANSITION][CENTERTOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][CENTERRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][TOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][RIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][BOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[FANWIPE_TRANSITION][LEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[PINWHEELWIPE_TRANSITION] = {};
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][ONEBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][TWOBLADEVERTICAL_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][THREEBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][FOURBLADE_TRANS_SUBTYPE] =
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][EIGHTBLADE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
aTransitionInfoTable[PINWHEELWIPE_TRANSITION][TWOBLADEHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};

aTransitionInfoTable[PUSHWIPE_TRANSITION] = {};
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMLEFT_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMTOP_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMRIGHT_TRANS_SUBTYPE] =
aTransitionInfoTable[PUSHWIPE_TRANSITION][FROMBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_SPECIAL,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};


aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION] = {};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISETOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SINGLESWEEPWIPE_TRANSITION][CLOCKWISERIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][RIGHTCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][LEFTCENTER_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[FOURBOXWIPE_TRANSITION] = {};
aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSIN_TRANS_SUBTYPE] =
aTransitionInfoTable[FOURBOXWIPE_TRANSITION][CORNERSOUT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[ELLIPSEWIPE_TRANSITION] = {};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][CIRCLE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : true
};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[ELLIPSEWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[CLOCKWIPE_TRANSITION] = {};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISETWELVE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISETHREE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISESIX_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[CLOCKWIPE_TRANSITION][CLOCKWISENINE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[VEEWIPE_TRANSITION] = {};
aTransitionInfoTable[VEEWIPE_TRANSITION][DOWN_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[VEEWIPE_TRANSITION][LEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[ZIGZAGWIPE_TRANSITION] = {};
aTransitionInfoTable[ZIGZAGWIPE_TRANSITION][LEFTTORIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[ZIGZAGWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION] = {};
aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BARNZIGZAGWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARWIPE_TRANSITION] = {};
aTransitionInfoTable[BARWIPE_TRANSITION][LEFTTORIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_X,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};
aTransitionInfoTable[BARWIPE_TRANSITION][TOPTOBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_FLIP_Y,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};

aTransitionInfoTable[WATERFALLWIPE_TRANSITION] = {};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][VERTICALRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[WATERFALLWIPE_TRANSITION][HORIZONTALRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BOXWIPE_TRANSITION] = {};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][TOPRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXWIPE_TRANSITION][BOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION] = {};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXTOP_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXBOTTOM_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][TWOBOXRIGHT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][FOURBOXVERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[BOXSNAKESWIPE_TRANSITION][FOURBOXHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[BARNDOORWIPE_TRANSITION] = {};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][VERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][HORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 90.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][DIAGONALBOTTOMLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[BARNDOORWIPE_TRANSITION][DIAGONALTOPLEFT_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': -45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION] = {};
aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION][DOUBLEBARNDOOR_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 45.0,
'scaleX': Math.SQRT2,
'scaleY': Math.SQRT2,
'reverseMethod': REVERSEMETHOD_IGNORE,
'outInvertsSweep': true,
'scaleIsotropically': false
};
aTransitionInfoTable[MISCDIAGONALWIPE_TRANSITION][DOUBLEDIAMOND_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1,
'scaleY': 1,
'reverseMethod': REVERSEMETHOD_IGNORE,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[IRISWIPE_TRANSITION] = {};
aTransitionInfoTable[IRISWIPE_TRANSITION][RECTANGLE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle': 0.0,
'scaleX': 1.0,
'scaleY': 1.0,
'reverseMethod': REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertsSweep': true,
'scaleIsotropically': false
};

aTransitionInfoTable[IRISWIPE_TRANSITION][DIAMOND_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALLEFTSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALRIGHTSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};

aTransitionInfoTable[SPIRALWIPE_TRANSITION] = {};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPLEFTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPRIGHTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 270.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_SUBTRACT_AND_INVERT,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SPIRALWIPE_TRANSITION][BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE] =
{
'topCenter'                     : TOPCENTER_TRANS_SUBTYPE,
'rightCenter'                   : RIGHTCENTER_TRANS_SUBTYPE,
'bottomCenter'                  : BOTTOMCENTER_TRANS_SUBTYPE,
'leftCenter'                    : LEFTCENTER_TRANS_SUBTYPE,
'up'                            : UP_TRANS_SUBTYPE,
'diagonalBottomLeft'            : DIAGONALBOTTOMLEFT_TRANS_SUBTYPE,
'diagonalTopLeft'               : DIAGONALTOPLEFT_TRANS_SUBTYPE,
'verticalLeft'                  : VERTICALLEFT_TRANS_SUBTYPE,
'verticalRight'                 : VERTICALRIGHT_TRANS_SUBTYPE,
'horizontalLeft'                : HORIZONTALLEFT_TRANS_SUBTYPE,
'horizontalRight'               : HORIZONTALRIGHT_TRANS_SUBTYPE,
'doubleBarnDoor'                : DOUBLEBARNDOOR_TRANS_SUBTYPE,
'doubleDiamond'                 : DOUBLEDIAMOND_TRANS_SUBTYPE,
'verticalTopSame'               : VERTICALTOPSAME_TRANS_SUBTYPE,
'verticalBottomSame'            : VERTICALBOTTOMSAME_TRANS_SUBTYPE,
'verticalTopLeftOpposite'       : VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'verticalBottomLeftOpposite'    : VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE,
'horizontalLeftSame'            : HORIZONTALLEFTSAME_TRANS_SUBTYPE,
'horizontalRightSame'           : HORIZONTALRIGHTSAME_TRANS_SUBTYPE,
'horizontalTopLeftOpposite'     : HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'horizontalTopRightOpposite'    : HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE,
'diagonalBottomLeftOpposite'    : DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE,
'diagonalTopLeftOpposite'       : DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE,
'twoBoxTop'                     : TWOBOXTOP_TRANS_SUBTYPE,
'twoBoxBottom'                  : TWOBOXBOTTOM_TRANS_SUBTYPE,
'twoBoxLeft'                    : TWOBOXLEFT_TRANS_SUBTYPE,
'twoBoxRight'                   : TWOBOXRIGHT_TRANS_SUBTYPE,
'fourBoxVertical'               : FOURBOXVERTICAL_TRANS_SUBTYPE,
'fourBoxHorizontal'             : FOURBOXHORIZONTAL_TRANS_SUBTYPE
};

var TRANSITION_MODE_IN  = 1;
var TRANSITION_MODE_OUT = 0;

var aTransitionModeOutMap = [ 'out', 'in' ];


var REVERSEMETHOD_IGNORE                    = 0;
var REVERSEMETHOD_INVERT_SWEEP              = 1;
var REVERSEMETHOD_SUBTRACT_POLYGON          = 2;
var REVERSEMETHOD_SUBTRACT_AND_INVERT       = 3;
var REVERSEMETHOD_ROTATE_180                = 4;
var REVERSEMETHOD_FLIP_X                    = 5;
var REVERSEMETHOD_FLIP_Y                    = 6;

var aReverseMethodOutMap = ['ignore', 'invert sweep', 'subtract polygon',
'subtract and invert', 'rotate 180', 'flip x', 'flip y'];


var aTransitionInfoTable = {};

aTransitionInfoTable[0] = {};
aTransitionInfoTable[0][0] =
{
'class' : TRANSITION_INVALID,
'rotationAngle' : 0.0,
'scaleX' : 0.0,
'scaleY' : 0.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertsSweep' : false,
'scaleIsotropically' : false
};

aTransitionInfoTable[SNAKEWIPE_TRANSITION] = {};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTVERTICAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : -90.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertsSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTHORIZONTAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPLEFTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][TOPRIGHTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[SNAKEWIPE_TRANSITION][BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_ROTATE_180,
'outInvertSweep' : true,
'scaleIsotropically' : false
}

aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION] = {};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALTOPSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALBOTTOMSAME_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 180.0,
'scaleX' : 1.0,
'scaleY' : 1.0,
'reverseMethod' : REVERSEMETHOD_IGNORE,
'outInvertSweep' : true,
'scaleIsotropically' : false
};
aTransitionInfoTable[PARALLELSNAKESWIPE_TRANSITION][VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE] =
{
'class' : TRANSITION_CLIP_POLYPOLYGON,
'rotationAngle' : 0.0,
var VERTICAL_TRANS_SUBTYPE                      = 5;
var HORIZONTAL_TRANS_SUBTYPE                    = 6; // 14
var DOWN_TRANS_SUBTYPE                          = 7; // 19
var CIRCLE_TRANS_SUBTYPE                        = 8; // 27
var CLOCKWISETWELVE_TRANS_SUBTYPE               = 9; // 33
var CLOCKWISETHREE_TRANS_SUBTYPE                = 10;
var CLOCKWISESIX_TRANS_SUBTYPE                  = 11;
var CLOCKWISENINE_TRANS_SUBTYPE                 = 12;
var TWOBLADEVERTICAL_TRANS_SUBTYPE              = 13;
var TWOBLADEHORIZONTAL_TRANS_SUBTYPE            = 14;
var FOURBLADE_TRANS_SUBTYPE                     = 15; // 39
var FROMLEFT_TRANS_SUBTYPE                      = 16; // 97
var FROMTOP_TRANS_SUBTYPE                       = 17;
var FROMRIGHT_TRANS_SUBTYPE                     = 18;
var FROMBOTTOM_TRANS_SUBTYPE                    = 19;
var CROSSFADE_TRANS_SUBTYPE                     = 20;
var FADETOCOLOR_TRANS_SUBTYPE                   = 21;
var FADEFROMCOLOR_TRANS_SUBTYPE                 = 22;
var FADEOVERCOLOR_TRANS_SUBTYPE                 = 23;
var THREEBLADE_TRANS_SUBTYPE                    = 24;
var EIGHTBLADE_TRANS_SUBTYPE                    = 25;
var ONEBLADE_TRANS_SUBTYPE                      = 26; // 107
var ACROSS_TRANS_SUBTYPE                        = 27;
var TOPLEFTVERTICAL_TRANS_SUBTYPE               = 28; // 109
var TOPLEFTHORIZONTAL_TRANS_SUBTYPE             = 29; // 64
var TOPLEFTDIAGONAL_TRANS_SUBTYPE               = 30; // 65
var TOPRIGHTDIAGONAL_TRANS_SUBTYPE              = 31; // 66
var BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE           = 32; // 67
var BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE            = 33; // 68
var RECTANGLE_TRANS_SUBTYPE                     = 34; // 101
var DIAMOND_TRANS_SUBTYPE                       = 35; // 102
var TOPLEFT_TRANS_SUBTYPE                       = 36; // 3
var TOPRIGHT_TRANS_SUBTYPE                      = 37; // 4
var BOTTOMRIGHT_TRANS_SUBTYPE                   = 38; // 5
var BOTTOMLEFT_TRANS_SUBTYPE                    = 39; // 6
var TOPCENTER_TRANS_SUBTYPE                     = 40; // 7
var RIGHTCENTER_TRANS_SUBTYPE                   = 41; // 8
var BOTTOMCENTER_TRANS_SUBTYPE                  = 42; // 9
var LEFTCENTER_TRANS_SUBTYPE                    = 43; // 10
var LEFT_TRANS_SUBTYPE                          = 44; // 20
var UP_TRANS_SUBTYPE                            = 45; // 21
var RIGHT_TRANS_SUBTYPE                         = 46; // 22
var DIAGONALBOTTOMLEFT_TRANS_SUBTYPE            = 47; // 15
var DIAGONALTOPLEFT_TRANS_SUBTYPE               = 48; // 16
var CENTERTOP_TRANS_SUBTYPE                     = 49; // 48
var CENTERRIGHT_TRANS_SUBTYPE                   = 50; // 49
var TOP_TRANS_SUBTYPE                           = 51; // 50
var BOTTOM_TRANS_SUBTYPE                        = 52; // 52
var CLOCKWISETOP_TRANS_SUBTYPE                  = 53; // 40
var CLOCKWISERIGHT_TRANS_SUBTYPE                = 54; // 41
var CLOCKWISEBOTTOM_TRANS_SUBTYPE               = 55; // 42
var CLOCKWISELEFT_TRANS_SUBTYPE                 = 56; // 43
var CLOCKWISETOPLEFT_TRANS_SUBTYPE              = 57; // 44
var COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE    = 58; // 45
var CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE          = 59; // 46
var COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE      = 60; // 47
var VERTICALLEFT_TRANS_SUBTYPE                  = 61; // 93
var VERTICALRIGHT_TRANS_SUBTYPE                 = 62; // 94
var HORIZONTALLEFT_TRANS_SUBTYPE                = 63; // 95
var HORIZONTALRIGHT_TRANS_SUBTYPE               = 64; // 96
var TOPLEFTCLOCKWISE_TRANS_SUBTYPE              = 65; // 69
var TOPRIGHTCLOCKWISE_TRANS_SUBTYPE             = 66; // 70
var BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE          = 67; // 71
var BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE           = 68; // 72
var TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE       = 69; // 73
var TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE      = 70; // 74
var BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE   = 71; // 75
var BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE    = 72; // 76
var DOUBLEBARNDOOR_TRANS_SUBTYPE                = 73; // 17
var DOUBLEDIAMOND_TRANS_SUBTYPE                 = 74; // 18
var VERTICALTOPSAME_TRANS_SUBTYPE               = 75; // 77
var VERTICALBOTTOMSAME_TRANS_SUBTYPE            = 76; // 78
var VERTICALTOPLEFTOPPOSITE_TRANS_SUBTYPE       = 77; // 79
var VERTICALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE    = 78; // 80
var HORIZONTALLEFTSAME_TRANS_SUBTYPE            = 79; // 81
var HORIZONTALRIGHTSAME_TRANS_SUBTYPE           = 80; // 82
var HORIZONTALTOPLEFTOPPOSITE_TRANS_SUBTYPE     = 81; // 83
var HORIZONTALTOPRIGHTOPPOSITE_TRANS_SUBTYPE    = 82; // 84
var DIAGONALBOTTOMLEFTOPPOSITE_TRANS_SUBTYPE    = 83; // 85
var DIAGONALTOPLEFTOPPOSITE_TRANS_SUBTYPE       = 84; // 86
var TWOBOXTOP_TRANS_SUBTYPE                     = 85; // 87
var TWOBOXBOTTOM_TRANS_SUBTYPE                  = 86; // 88
var TWOBOXLEFT_TRANS_SUBTYPE                    = 87; // 89
var TWOBOXRIGHT_TRANS_SUBTYPE                   = 88; // 90
var FOURBOXVERTICAL_TRANS_SUBTYPE               = 89; // 91
var FOURBOXHORIZONTAL_TRANS_SUBTYPE             = 90; // 92

var aTransitionSubtypeInMap = {
'default'                       : DEFAULT_TRANS_SUBTYPE,
'leftToRight'                   : LEFTTORIGHT_TRANS_SUBTYPE,
'topToBottom'                   : TOPTOBOTTOM_TRANS_SUBTYPE,
'cornersIn'                     : CORNERSIN_TRANS_SUBTYPE,
'cornersOut'                    : CORNERSOUT_TRANS_SUBTYPE,
'vertical'                      : VERTICAL_TRANS_SUBTYPE,
'centerTop'                     : CENTERTOP_TRANS_SUBTYPE,
'centerRight'                   : CENTERRIGHT_TRANS_SUBTYPE,
'top'                           : TOP_TRANS_SUBTYPE,
'right'                         : RIGHT_TRANS_SUBTYPE,
'bottom'                        : BOTTOM_TRANS_SUBTYPE,
'left'                          : LEFT_TRANS_SUBTYPE,
'horizontal'                    : HORIZONTAL_TRANS_SUBTYPE,
'down'                          : DOWN_TRANS_SUBTYPE,
'circle'                        : CIRCLE_TRANS_SUBTYPE,
'clockwiseTwelve'               : CLOCKWISETWELVE_TRANS_SUBTYPE,
'clockwiseThree'                : CLOCKWISETHREE_TRANS_SUBTYPE,
'clockwiseSix'                  : CLOCKWISESIX_TRANS_SUBTYPE,
'clockwiseNine'                 : CLOCKWISENINE_TRANS_SUBTYPE,
'clockwiseRight'                : CLOCKWISERIGHT_TRANS_SUBTYPE,
'clockwiseTop'                  : CLOCKWISETOP_TRANS_SUBTYPE,
'clockwiseBottom'               : CLOCKWISEBOTTOM_TRANS_SUBTYPE,
'clockwiseLeft'                 : CLOCKWISELEFT_TRANS_SUBTYPE,
'clockwiseTopLeft'              : CLOCKWISETOPLEFT_TRANS_SUBTYPE,
'counterClockwiseBottomLeft'    : COUNTERCLOCKWISEBOTTOMLEFT_TRANS_SUBTYPE,
'clockwiseBottomRight'          : CLOCKWISEBOTTOMRIGHT_TRANS_SUBTYPE,
'counterClockwiseTopRight'      : COUNTERCLOCKWISETOPRIGHT_TRANS_SUBTYPE,
'twoBladeVertical'              : TWOBLADEVERTICAL_TRANS_SUBTYPE,
'twoBladeHorizontal'            : TWOBLADEHORIZONTAL_TRANS_SUBTYPE,
'fourBlade'                     : FOURBLADE_TRANS_SUBTYPE,
'fromLeft'                      : FROMLEFT_TRANS_SUBTYPE,
'fromTop'                       : FROMTOP_TRANS_SUBTYPE,
'fromRight'                     : FROMRIGHT_TRANS_SUBTYPE,
'fromBottom'                    : FROMBOTTOM_TRANS_SUBTYPE,
'crossfade'                     : CROSSFADE_TRANS_SUBTYPE,
'fadeToColor'                   : FADETOCOLOR_TRANS_SUBTYPE,
'fadeFromColor'                 : FADEFROMCOLOR_TRANS_SUBTYPE,
'fadeOverColor'                 : FADEOVERCOLOR_TRANS_SUBTYPE,
'threeBlade'                    : THREEBLADE_TRANS_SUBTYPE,
'eightBlade'                    : EIGHTBLADE_TRANS_SUBTYPE,
'oneBlade'                      : ONEBLADE_TRANS_SUBTYPE,
'across'                        : ACROSS_TRANS_SUBTYPE,
'topLeftVertical'               : TOPLEFTVERTICAL_TRANS_SUBTYPE,
'topLeftHorizontal'             : TOPLEFTHORIZONTAL_TRANS_SUBTYPE,
'topLeftDiagonal'               : TOPLEFTDIAGONAL_TRANS_SUBTYPE,
'topRightDiagonal'              : TOPRIGHTDIAGONAL_TRANS_SUBTYPE,
'bottomRightDiagonal'           : BOTTOMRIGHTDIAGONAL_TRANS_SUBTYPE,
'topLeftClockwise'              : TOPLEFTCLOCKWISE_TRANS_SUBTYPE,
'topRightClockwise'             : TOPRIGHTCLOCKWISE_TRANS_SUBTYPE,
'bottomRightClockwise'          : BOTTOMRIGHTCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftClockwise'           : BOTTOMLEFTCLOCKWISE_TRANS_SUBTYPE,
'topLeftCounterClockwise'       : TOPLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'topRightCounterClockwise'      : TOPRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomRightCounterClockwise'   : BOTTOMRIGHTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftCounterClockwise'    : BOTTOMLEFTCOUNTERCLOCKWISE_TRANS_SUBTYPE,
'bottomLeftDiagonal'            : BOTTOMLEFTDIAGONAL_TRANS_SUBTYPE,
'rectangle'                     : RECTANGLE_TRANS_SUBTYPE,
'diamond'                       : DIAMOND_TRANS_SUBTYPE,
'topLeft'                       : TOPLEFT_TRANS_SUBTYPE,
'topRight'                      : TOPRIGHT_TRANS_SUBTYPE,
'bottomRight'                   : BOTTOMRIGHT_TRANS_SUBTYPE,
'bottomLeft'                    : BOTTOMLEFT_TRANS_SUBTYPE,
var COLOR_SPACE_HSL = 1;

var aColorSpaceInMap = { 'rgb': COLOR_SPACE_RGB, 'hsl': COLOR_SPACE_HSL };

var aColorSpaceOutMap = [ 'rgb', 'hsl' ];


var CLOCKWISE               = 0;
var COUNTERCLOCKWISE        = 1;

var aClockDirectionInMap = { 'clockwise': CLOCKWISE, 'counter-clockwise': COUNTERCLOCKWISE };

var aClockDirectionOutMap = [ 'clockwise', 'counter-clockwise' ];


var UNKNOWN_PROPERTY        = 0; // eslint-disable-line no-unused-vars
var NUMBER_PROPERTY         = 1;
var ENUM_PROPERTY           = 2;
var COLOR_PROPERTY          = 3;
var STRING_PROPERTY         = 4;
var BOOL_PROPERTY           = 5;

var aValueTypeOutMap = [ 'unknown', 'number', 'enum', 'color', 'string', 'boolean' ];


var aAttributeMap =
{
'height':           {   'type':         NUMBER_PROPERTY,
'get':          'getHeight',
'set':          'setHeight',
'getmod':       'makeScaler( 1/nHeight )',
'setmod':       'makeScaler( nHeight)'          },

'opacity':          {   'type':         NUMBER_PROPERTY,
'get':          'getOpacity',
'set':          'setOpacity'                    },

'rotate':           {   'type':         NUMBER_PROPERTY,
'get':          'getRotationAngle',
'set':          'setRotationAngle'              },

'width':            {   'type':         NUMBER_PROPERTY,
'get':          'getWidth',
'set':          'setWidth',
'getmod':       'makeScaler( 1/nWidth )',
'setmod':       'makeScaler( nWidth)'           },

'x':                {   'type':         NUMBER_PROPERTY,
'get':          'getX',
'set':          'setX',
'getmod':       'makeScaler( 1/nWidth )',
'setmod':       'makeScaler( nWidth)'           },

'y':                {   'type':         NUMBER_PROPERTY,
'get':          'getY',
'set':          'setY',
'getmod':       'makeScaler( 1/nHeight )',
'setmod':       'makeScaler( nHeight)'          },

'fill':             {   'type':         ENUM_PROPERTY,
'get':          'getFillStyle',
'set':          'setFillStyle'                  },

'stroke':           {   'type':         ENUM_PROPERTY,
'get':          'getStrokeStyle',
'set':          'setStrokeStyle'                },

'visibility':       {   'type':         ENUM_PROPERTY,
'get':          'getVisibility',
'set':          'setVisibility'                 },

'fill-color':       {   'type':         COLOR_PROPERTY,
'get':          'getFillColor',
'set':          'setFillColor'                  },

'stroke-color':     {   'type':         COLOR_PROPERTY,
'get':          'getStrokeColor',
'set':          'setStrokeColor'                },

'color':            {   'type':         COLOR_PROPERTY,
'get':          'getFontColor',
'set':          'setFontColor'                  }

};


var TRANSITION_INVALID              = 0;    // Invalid type
var TRANSITION_CLIP_POLYPOLYGON     = 1;    // Transition expressed by parametric clip polygon
var TRANSITION_SPECIAL              = 2;    // Transition expressed by hand-crafted function


var BARWIPE_TRANSITION              = 1;
var BOXWIPE_TRANSITION              = 2;
var FOURBOXWIPE_TRANSITION          = 3;
var ELLIPSEWIPE_TRANSITION          = 4; // 17
var CLOCKWIPE_TRANSITION            = 5; // 22
var PINWHEELWIPE_TRANSITION         = 6; // 23
var PUSHWIPE_TRANSITION             = 7; // 35
var SLIDEWIPE_TRANSITION            = 8; // 36
var FADE_TRANSITION                 = 9; // 37
var RANDOMBARWIPE_TRANSITION        = 10; // 38
var CHECKERBOARDWIPE_TRANSITION     = 11; // 39
var DISSOLVE_TRANSITION             = 12; // 40
var SNAKEWIPE_TRANSITION            = 13; // 30
var PARALLELSNAKESWIPE_TRANSITION   = 14; // 32
var IRISWIPE_TRANSITION             = 15; // 12
var BARNDOORWIPE_TRANSITION         = 16; // 4
var VEEWIPE_TRANSITION              = 17; // 8
var ZIGZAGWIPE_TRANSITION           = 18; // 10
var BARNZIGZAGWIPE_TRANSITION       = 19; // 11
var FANWIPE_TRANSITION              = 20; // 25
var SINGLESWEEPWIPE_TRANSITION      = 21; // 24
var WATERFALLWIPE_TRANSITION        = 22; // 34
var SPIRALWIPE_TRANSITION           = 23; // 31
var MISCDIAGONALWIPE_TRANSITION     = 24; // 7
var BOXSNAKESWIPE_TRANSITION        = 25; // 33

var aTransitionTypeInMap = {
'barWipe'           : BARWIPE_TRANSITION,
'boxWipe'           : BOXWIPE_TRANSITION,
'barnDoorWipe'      : BARNDOORWIPE_TRANSITION,
'fourBoxWipe'       : FOURBOXWIPE_TRANSITION,
'ellipseWipe'       : ELLIPSEWIPE_TRANSITION,
'clockWipe'         : CLOCKWIPE_TRANSITION,
'pinWheelWipe'      : PINWHEELWIPE_TRANSITION,
'miscDiagonalWipe'  : MISCDIAGONALWIPE_TRANSITION,
'pushWipe'          : PUSHWIPE_TRANSITION,
'slideWipe'         : SLIDEWIPE_TRANSITION,
'fade'              : FADE_TRANSITION,
'fanWipe'           : FANWIPE_TRANSITION,
'randomBarWipe'     : RANDOMBARWIPE_TRANSITION,
'checkerBoardWipe'  : CHECKERBOARDWIPE_TRANSITION,
'dissolve'          : DISSOLVE_TRANSITION,
'singleSweepWipe'   : SINGLESWEEPWIPE_TRANSITION,
'snakeWipe'         : SNAKEWIPE_TRANSITION,
'parallelSnakesWipe': PARALLELSNAKESWIPE_TRANSITION,
'spiralWipe'        : SPIRALWIPE_TRANSITION,
'boxSnakesWipe'     : BOXSNAKESWIPE_TRANSITION,
'irisWipe'          : IRISWIPE_TRANSITION,
'veeWipe'           : VEEWIPE_TRANSITION,
'zigZagWipe'        : ZIGZAGWIPE_TRANSITION,
'barnZigZagWipe'    : BARNZIGZAGWIPE_TRANSITION,
'waterfallWipe'     : WATERFALLWIPE_TRANSITION
};

var DEFAULT_TRANS_SUBTYPE                       = 0;
var LEFTTORIGHT_TRANS_SUBTYPE                   = 1;
var TOPTOBOTTOM_TRANS_SUBTYPE                   = 2;
var CORNERSIN_TRANS_SUBTYPE                     = 3; // 11
var CORNERSOUT_TRANS_SUBTYPE                    = 4;
'animatecolor'      : ANIMATION_NODE_ANIMATECOLOR,
'animatetransform'  : ANIMATION_NODE_ANIMATETRANSFORM,
'transitionfilter'  : ANIMATION_NODE_TRANSITIONFILTER,
'audio'             : ANIMATION_NODE_AUDIO,
'command'           : ANIMATION_NODE_COMMAND
};


function getAnimationElementType( aElement )
{
var sName = aElement.localName.toLowerCase();

if( sName && aAnimationNodeTypeInMap[ sName ] )
return aAnimationNodeTypeInMap[ sName ];
else
return ANIMATION_NODE_CUSTOM;
}


var INVALID_NODE                = 0;
var UNRESOLVED_NODE             = 1;
var RESOLVED_NODE               = 2;
var ACTIVE_NODE                 = 4;
var FROZEN_NODE                 = 8;
var ENDED_NODE                  = 16;

function getNodeStateName( eNodeState )
{
switch( eNodeState )
{
case INVALID_NODE:
return 'INVALID';
case UNRESOLVED_NODE:
return 'UNRESOLVED';
case RESOLVED_NODE:
return 'RESOLVED';
case ACTIVE_NODE:
return 'ACTIVE';
case FROZEN_NODE:
return 'FROZEN';
case ENDED_NODE:
return 'ENDED';
default:
return 'UNKNOWN';
}
}


var IMPRESS_DEFAULT_NODE                    = 0;
var IMPRESS_ON_CLICK_NODE                   = 1;
var IMPRESS_WITH_PREVIOUS_NODE              = 2;
var IMPRESS_AFTER_PREVIOUS_NODE             = 3;
var IMPRESS_MAIN_SEQUENCE_NODE              = 4;
var IMPRESS_TIMING_ROOT_NODE                = 5;
var IMPRESS_INTERACTIVE_SEQUENCE_NODE       = 6;

var aImpressNodeTypeInMap = {
'on-click'                  : IMPRESS_ON_CLICK_NODE,
'with-previous'             : IMPRESS_WITH_PREVIOUS_NODE,
'after-previous'            : IMPRESS_AFTER_PREVIOUS_NODE,
'main-sequence'             : IMPRESS_MAIN_SEQUENCE_NODE,
'timing-root'               : IMPRESS_TIMING_ROOT_NODE,
'interactive-sequence'      : IMPRESS_INTERACTIVE_SEQUENCE_NODE
};

var aImpressNodeTypeOutMap = [ 'default', 'on-click', 'with-previous', 'after-previous',
'main-sequence', 'timing-root', 'interactive-sequence' ];


var aPresetClassInMap = {};


var aPresetIdInMap = {};


var RESTART_MODE_DEFAULT            = 0;
var RESTART_MODE_INHERIT            = 0; // eslint-disable-line no-unused-vars
var RESTART_MODE_ALWAYS             = 1;
var RESTART_MODE_WHEN_NOT_ACTIVE    = 2;
var RESTART_MODE_NEVER              = 3;

var aRestartModeInMap = {
'inherit'       : RESTART_MODE_DEFAULT,
'always'        : RESTART_MODE_ALWAYS,
'whenNotActive' : RESTART_MODE_WHEN_NOT_ACTIVE,
'never'         : RESTART_MODE_NEVER
};

var aRestartModeOutMap = [ 'inherit','always', 'whenNotActive', 'never' ];


var FILL_MODE_DEFAULT           = 0;
var FILL_MODE_INHERIT           = 0; // eslint-disable-line no-unused-vars
var FILL_MODE_REMOVE            = 1;
var FILL_MODE_FREEZE            = 2;
var FILL_MODE_HOLD              = 3;
var FILL_MODE_TRANSITION        = 4;
var FILL_MODE_AUTO              = 5;

var aFillModeInMap = {
'inherit'       : FILL_MODE_DEFAULT,
'remove'        : FILL_MODE_REMOVE,
'freeze'        : FILL_MODE_FREEZE,
'hold'          : FILL_MODE_HOLD,
'transition'    : FILL_MODE_TRANSITION,
'auto'          : FILL_MODE_AUTO
};

var aFillModeOutMap = [ 'inherit', 'remove', 'freeze', 'hold', 'transition', 'auto' ];


var ADDITIVE_MODE_UNKNOWN       = 0; // eslint-disable-line no-unused-vars
var ADDITIVE_MODE_BASE          = 1;
var ADDITIVE_MODE_SUM           = 2;
var ADDITIVE_MODE_REPLACE       = 3;
var ADDITIVE_MODE_MULTIPLY      = 4;
var ADDITIVE_MODE_NONE          = 5;

var aAddittiveModeInMap = {
'base'          : ADDITIVE_MODE_BASE,
'sum'           : ADDITIVE_MODE_SUM,
'replace'       : ADDITIVE_MODE_REPLACE,
'multiply'      : ADDITIVE_MODE_MULTIPLY,
'none'          : ADDITIVE_MODE_NONE
};

var aAddittiveModeOutMap = [ 'unknown', 'base', 'sum', 'replace', 'multiply', 'none' ];


var ACCUMULATE_MODE_NONE        = 0;
var ACCUMULATE_MODE_SUM         = 1;

var aAccumulateModeOutMap = [ 'none', 'sum' ];

var CALC_MODE_DISCRETE          = 1;
var CALC_MODE_LINEAR            = 2;
var CALC_MODE_PACED             = 3;
var CALC_MODE_SPLINE            = 4;

var aCalcModeInMap = {
'discrete'      : CALC_MODE_DISCRETE,
'linear'        : CALC_MODE_LINEAR,
'paced'         : CALC_MODE_PACED,
'spline'        : CALC_MODE_SPLINE
};

var aCalcModeOutMap = [ 'unknown', 'discrete', 'linear', 'paced', 'spline' ];


var COLOR_SPACE_RGB = 0;

SVGPathSegCurvetoCubicAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
var nX = this.x1;
this.x1 = this.x2;
this.x2 = nX;
var nY = this.y1;
this.y1 = this.y2;
this.y2 = nY;
return aPoint;
};

}
catch( e )
{   // Opera

if( e.name == 'ReferenceError' )
{
SVGPathSeg.prototype.matrixTransform = function( aSVGMatrix )
{
var nX;
switch( this.pathSegTypeAsLetter )
{
case 'C':
nX = this.x2;
this.x2 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y2 + aSVGMatrix.e;
this.y2 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y2 + aSVGMatrix.f;
case 'Q':
nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
case 'M':
case 'L':
SVGPathMatrixTransform( this, aSVGMatrix );
break;
default:
log( 'SVGPathSeg.matrixTransform: unexpected path segment type: '
+ this.pathSegTypeAsLetter );
}
};

SVGPathSeg.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
switch( this.pathSegTypeAsLetter )
{
case 'C':
var nX = this.x1;
this.x1 = this.x2;
this.x2 = nX;
var nY = this.y1;
this.y1 = this.y2;
this.y2 = nY;
case 'M':
case 'L':
case 'Q':
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
default:
log( 'SVGPathSeg.changeOrientation: unexpected path segment type: '
+ this.pathSegTypeAsLetter );
return null;
}
}
}
else throw e;
}

function SVGPathMatrixTransform( aPath, aSVGMatrix )
{
var nX = aPath.x;
aPath.x = aSVGMatrix.a * nX + aSVGMatrix.c * aPath.y + aSVGMatrix.e;
aPath.y = aSVGMatrix.b * nX + aSVGMatrix.d * aPath.y + aSVGMatrix.f;
}


function PriorityQueue( aCompareFunc )
{
this.aSequence = [];
this.aCompareFunc = aCompareFunc;
}

PriorityQueue.prototype.clone = function()
{
var aCopy = new PriorityQueue( this.aCompareFunc );
var src = this.aSequence;
var dest = [];
var i, l;
for( i = 0, l = src.length; i < l; ++i )
{
if( i in src )
{
dest.push( src[i] );
}
}
aCopy.aSequence = dest;
return aCopy;
};

PriorityQueue.prototype.top = function()
{
return this.aSequence[this.aSequence.length - 1];
};

PriorityQueue.prototype.isEmpty = function()
{
return ( this.aSequence.length === 0 );
};

PriorityQueue.prototype.push = function( aValue )
{
this.aSequence.unshift( aValue );
this.aSequence.sort(this.aCompareFunc);
};

PriorityQueue.prototype.clear = function()
{
this.aSequence = [];
};

PriorityQueue.prototype.pop = function()
{
return this.aSequence.pop();
};


var ANIMATION_NODE_CUSTOM               = 0;
var ANIMATION_NODE_PAR                  = 1;
var ANIMATION_NODE_SEQ                  = 2;
var ANIMATION_NODE_ITERATE              = 3;
var ANIMATION_NODE_ANIMATE              = 4;
var ANIMATION_NODE_SET                  = 5;
var ANIMATION_NODE_ANIMATEMOTION        = 6;
var ANIMATION_NODE_ANIMATECOLOR         = 7;
var ANIMATION_NODE_ANIMATETRANSFORM     = 8;
var ANIMATION_NODE_TRANSITIONFILTER     = 9;
var ANIMATION_NODE_AUDIO                = 10;
var ANIMATION_NODE_COMMAND              = 11;

var aAnimationNodeTypeInMap = {
'par'               : ANIMATION_NODE_PAR,
'seq'               : ANIMATION_NODE_SEQ,
'iterate'           : ANIMATION_NODE_ITERATE,
'animate'           : ANIMATION_NODE_ANIMATE,
'set'               : ANIMATION_NODE_SET,
'animatemotion'     : ANIMATION_NODE_ANIMATEMOTION,
sPathData += ( ' ' + this.getAttribute( 'd' ) );
this.setAttribute( 'd', sPathData );
};

SVGPathElement.prototype.appendPath = function( aPath )
{
var sPathData = this.getAttribute( 'd' );
sPathData += ( ' ' + aPath.getAttribute( 'd' ) );
this.setAttribute( 'd', sPathData );
};

function flipOnYAxis( aPath )
{
var aPolyPath = aPath.cloneNode(true);
var aTransform = document.documentElement.createSVGMatrix();
aTransform.a = -1;
aTransform.e = 1;
aPolyPath.matrixTransform(aTransform);
return aPolyPath;
}

function flipOnXAxis( aPath )
{
var aPolyPath = aPath.cloneNode(true);
var aTransform = document.documentElement.createSVGMatrix();
aTransform.d = -1;
aTransform.f = 1;
aPolyPath.matrixTransform(aTransform);
return aPolyPath;
}

SVGPathElement.prototype.matrixTransform = function( aSVGMatrix )
{
if( SVGPathSegList.prototype.matrixTransform )
{
this.pathSegList.matrixTransform( aSVGMatrix );
return;
}

var aPathSegList = this.pathSegList;
var nLength = aPathSegList.numberOfItems;
var i;
for( i = 0; i < nLength; ++i )
{
aPathSegList.getItem( i ).matrixTransform( aSVGMatrix );
}
};

SVGPathElement.prototype.changeOrientation = function()
{
var aPathSegList = this.pathSegList;
var nLength = aPathSegList.numberOfItems;
if( nLength == 0 ) return;

if( SVGPathSegList.prototype.changeOrientation )
{
aPathSegList.changeOrientation();
return;
}

var nCurrentX = 0;
var nCurrentY = 0;

var aPathSeg = aPathSegList.getItem( 0 );
if( aPathSeg.pathSegTypeAsLetter == 'M' )
{
nCurrentX = aPathSeg.x;
nCurrentY = aPathSeg.y;
aPathSegList.removeItem( 0 );
--nLength;
}

var i;
for( i = 0; i < nLength; ++i )
{
aPathSeg = aPathSegList.getItem( i );
var aPoint = aPathSeg.changeOrientation( nCurrentX, nCurrentY );
nCurrentX = aPoint.x;
nCurrentY = aPoint.y;
}


for( i = nLength - 2; i >= 0; --i )
{
aPathSeg = aPathSegList.removeItem( i );
aPathSegList.appendItem( aPathSeg );
}

var aMovePathSeg = this.createSVGPathSegMovetoAbs( nCurrentX, nCurrentY );
aPathSegList.insertItemBefore( aMovePathSeg, 0 );

};


try
{   // Firefox, Google Chrome, Internet Explorer, Safari.

SVGPathSegMovetoAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
};

SVGPathSegLinetoAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
};

SVGPathSegCurvetoQuadraticAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
var nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
};

SVGPathSegCurvetoCubicAbs.prototype.matrixTransform = function( aSVGMatrix )
{
SVGPathMatrixTransform( this, aSVGMatrix );
var nX = this.x1;
this.x1 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y1 + aSVGMatrix.e;
this.y1 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y1 + aSVGMatrix.f;
nX = this.x2;
this.x2 = aSVGMatrix.a * nX + aSVGMatrix.c * this.y2 + aSVGMatrix.e;
this.y2 = aSVGMatrix.b * nX + aSVGMatrix.d * this.y2 + aSVGMatrix.f;
};


SVGPathSegMovetoAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegLinetoAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};

SVGPathSegCurvetoQuadraticAbs.prototype.changeOrientation = function( nCurrentX, nCurrentY )
{
var aPoint = { x: this.x, y: this.y };
this.x = nCurrentX;
this.y = nCurrentY;
return aPoint;
};
this.nLuminance = nLuminance;

this.normalizeHue();
}


HSLColor.prototype.clone = function()
{
return new HSLColor( this.nHue, this.nSaturation, this.nLuminance );
};

HSLColor.prototype.equal = function( aHSLColor )
{
return ( this.nHue == aHSLColor.nHue ) &&
( this.nSaturation += aHSLColor.nSaturation ) &&
( this.nLuminance += aHSLColor.nLuminance );
};

HSLColor.prototype.add = function( aHSLColor )
{
this.nHue += aHSLColor.nHue;
this.nSaturation += aHSLColor.nSaturation;
this.nLuminance += aHSLColor.nLuminance;
this.normalizeHue();
return this;
};

HSLColor.prototype.scale = function( aT )
{
this.nHue *= aT;
this.nSaturation *= aT;
this.nLuminance *= aT;
this.normalizeHue();
return this;
};

HSLColor.clamp = function( aHSLColor )
{
var aClampedHSLColor = new HSLColor( 0, 0, 0 );

aClampedHSLColor.nHue = aHSLColor.nHue % 360;
if( aClampedHSLColor.nHue < 0 )
aClampedHSLColor.nHue += 360;
aClampedHSLColor.nSaturation = clamp( aHSLColor.nSaturation, 0.0, 1.0 );
aClampedHSLColor.nLuminance = clamp( aHSLColor.nLuminance, 0.0, 1.0 );
};

HSLColor.prototype.normalizeHue = function()
{
this.nHue = this.nHue % 360;
if( this.nHue < 0 ) this.nHue += 360;
};

HSLColor.prototype.toString = function()
{
return 'hsl(' + this.nHue.toFixed( 3 ) + ','
+ this.nSaturation.toFixed( 3 ) + ','
+ this.nLuminance.toFixed( 3 ) + ')';
};

HSLColor.prototype.convertToRGB = function()
{

var nHue = this.nHue % 360;
if( nHue < 0 ) nHue += 360;
var nSaturation =  clamp( this.nSaturation, 0.0, 1.0 );
var nLuminance = clamp( this.nLuminance, 0.0, 1.0 );


if( nSaturation === 0 )
{
return new RGBColor( nLuminance, nLuminance, nLuminance );
}

var nVal1 = ( nLuminance <= 0.5 ) ?
( nLuminance * (1.0 + nSaturation) ) :
( nLuminance + nSaturation - nLuminance * nSaturation );

var nVal2 = 2.0 * nLuminance - nVal1;

var nRed    = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue + 120 );
var nGreen  = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue );
var nBlue   = HSLColor.hsl2rgbHelper( nVal2, nVal1, nHue - 120 );

return new RGBColor( nRed, nGreen, nBlue );
};

HSLColor.hsl2rgbHelper = function( nValue1, nValue2, nHue )
{
nHue = nHue % 360;
if( nHue < 0 )
nHue += 360;

if( nHue < 60.0 )
return nValue1 + ( nValue2 - nValue1 ) * nHue / 60.0;
else if( nHue < 180.0 )
return nValue2;
else if( nHue < 240.0 )
return ( nValue1 + ( nValue2 - nValue1 ) * ( 240.0 - nHue ) / 60.0 );
else
return nValue1;
};

HSLColor.interpolate = function( aFrom, aTo, nT, bCCW )
{
var nS = 1.0 - nT;

var nHue = 0.0;
if( aFrom.nHue <= aTo.nHue && !bCCW )
{
nHue = nS * (aFrom.nHue + 360.0) + nT * aTo.nHue;
}
else if( aFrom.nHue > aTo.nHue && bCCW )
{
nHue = nS * aFrom.nHue + nT * (aTo.nHue + 360.0);
}
else
{
nHue = nS * aFrom.nHue + nT * aTo.nHue;
}

var nSaturation = nS * aFrom.nSaturation + nT * aTo.nSaturation;
var nLuminance = nS * aFrom.nLuminance + nT * aTo.nLuminance;

return new HSLColor( nHue, nSaturation, nLuminance );
};


var SVGIdentityMatrix = document.documentElement.createSVGMatrix();

SVGMatrix.prototype.setToIdentity = function()
{
this.a = this.d = 1;
this.b = this.c = this.d = this.e = 0;
};

SVGMatrix.prototype.setToRotationAroundPoint = function( nX, nY, nAngle )
{
nAngle = Math.PI * nAngle / 180;
var nSin = Math.sin( nAngle );
var nCos = Math.cos( nAngle );

this.a = nCos; this.c = -nSin; this.e = nX * (1 - nCos) + nY * nSin;
this.b = nSin; this.d =  nCos; this.f = nY * (1 - nCos) - nX * nSin;
};


SVGPathElement.prototype.prependPath = function( aPath )
{
var sPathData = aPath.getAttribute( 'd' );
{
var aRGBTriple = reHexColor.exec( sValue );

var nRed    = parseInt( aRGBTriple[1], 16 ) / 255;
var nGreen  = parseInt( aRGBTriple[2], 16 ) / 255;
var nBlue   = parseInt( aRGBTriple[3], 16 ) / 255;

return new RGBColor( nRed, nGreen, nBlue );
}
else if( reHSLPercent.test( sValue ) )
{
sValue = sValue.replace( '%', '' ).replace( '%', '' );
return eval( sValue );
}
else if( reRGBInteger.test( sValue ) )
{
return eval( sValue );
}
else if( reRGBPercent.test( sValue ) )
{
sValue = 'p' + sValue.replace( '%', '' ).replace( '%', '' ).replace( '%', '' );
return eval( sValue );
}
else
{
return null;
}
}


function RGBColor( nRed, nGreen, nBlue )
{
this.eColorSpace = COLOR_SPACE_RGB;
this.nRed = nRed;
this.nGreen = nGreen;
this.nBlue = nBlue;
}


RGBColor.prototype.clone = function()
{
return new RGBColor( this.nRed, this.nGreen, this.nBlue );
};

RGBColor.prototype.equal = function( aRGBColor )
{
return ( this.nRed == aRGBColor.nRed ) &&
( this.nGreen == aRGBColor.nGreen ) &&
( this.nBlue == aRGBColor.nBlue );
};

RGBColor.prototype.add = function( aRGBColor )
{
this.nRed += aRGBColor.nRed;
this.nGreen += aRGBColor.nGreen;
this.nBlue += aRGBColor.nBlue;
return this;
};

RGBColor.prototype.scale = function( aT )
{
this.nRed *= aT;
this.nGreen *= aT;
this.nBlue *= aT;
return this;
};

RGBColor.clamp = function( aRGBColor )
{
var aClampedRGBColor = new RGBColor( 0, 0, 0 );

aClampedRGBColor.nRed   = clamp( aRGBColor.nRed, 0.0, 1.0 );
aClampedRGBColor.nGreen = clamp( aRGBColor.nGreen, 0.0, 1.0 );
aClampedRGBColor.nBlue  = clamp( aRGBColor.nBlue, 0.0, 1.0 );

return aClampedRGBColor;
};

RGBColor.prototype.convertToHSL = function()
{
var nRed   = clamp( this.nRed, 0.0, 1.0 );
var nGreen = clamp( this.nGreen, 0.0, 1.0 );
var nBlue  = clamp( this.nBlue, 0.0, 1.0 );

var nMax = Math.max( nRed, nGreen, nBlue );
var nMin = Math.min( nRed, nGreen, nBlue );
var nDelta = nMax - nMin;

var nLuminance  = ( nMax + nMin ) / 2.0;
var nSaturation = 0.0;
var nHue = 0.0;
if( nDelta !== 0 )
{
nSaturation = ( nLuminance > 0.5 ) ?
( nDelta / ( 2.0 - nMax - nMin) ) :
( nDelta / ( nMax + nMin ) );

if( nRed == nMax )
nHue = ( nGreen - nBlue ) / nDelta;
else if( nGreen == nMax )
nHue = 2.0 + ( nBlue - nRed ) / nDelta;
else if( nBlue == nMax )
nHue = 4.0 + ( nRed - nGreen ) / nDelta;

nHue *= 60.0;

if( nHue < 0.0 )
nHue += 360.0;
}

return new HSLColor( nHue, nSaturation, nLuminance );

};

RGBColor.prototype.toString = function( bClamped )
{
var aRGBColor;
if( bClamped )
{
aRGBColor = RGBColor.clamp( this );
}
else
{
aRGBColor = this;
}

var nRed = Math.round( aRGBColor.nRed * 255 );
var nGreen = Math.round( aRGBColor.nGreen * 255 );
var nBlue = Math.round( aRGBColor.nBlue * 255 );

return ( 'rgb(' + nRed + ',' + nGreen + ',' + nBlue + ')' );
};

RGBColor.interpolate = function( aStartRGB , aEndRGB, nT )
{
var aResult = aStartRGB.clone();
var aTEndRGB = aEndRGB.clone();
aResult.scale( 1.0 - nT );
aTEndRGB.scale( nT );
aResult.add( aTEndRGB );

return aResult;
};


function HSLColor( nHue, nSaturation, nLuminance )
{
this.eColorSpace = COLOR_SPACE_HSL;
this.nHue = nHue;
this.nSaturation = nSaturation;
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
aBoundArgList[3], aBoundArgList[4],
arguments[0] );
};
break;
default:
log( 'bind2: arity not handled.' );
}

return aResultFunction;
}

function getCurrentSystemTime()
{
return ( new Date() ).getTime();
}

function getSlideAnimationsRoot( sSlideId )
{
return theMetaDoc.aSlideAnimationsMap[ sSlideId ];
}

function getElementChildren( aElement )
{
var aChildrenArray = [];

var nSize = aElement.childNodes.length;

for( var i = 0; i < nSize; ++i )
{
if( aElement.childNodes[i].nodeType == 1 )
aChildrenArray.push( aElement.childNodes[i] );
}

return aChildrenArray;
}

function removeWhiteSpaces( str )
{
if( !str )
return '';

var re = / */;
var aSplitString = str.split( re );
return aSplitString.join('');
}

function clamp( nValue, nMinimum, nMaximum )
{
if( nValue < nMinimum )
{
return nMinimum;
}
else if( nValue > nMaximum )
{
return nMaximum;
}
else
{
return nValue;
}
}

function makeMatrixString( a, b, c, d, e, f )
{
var s = 'matrix(';
s += a + ', ';
s += b + ', ';
s += c + ', ';
s += d + ', ';
s += e + ', ';
s += f + ')';

return s;
}

function matrixToString( aSVGMatrix )
{
return makeMatrixString( aSVGMatrix.a, aSVGMatrix.b, aSVGMatrix.c,
aSVGMatrix.d, aSVGMatrix.e, aSVGMatrix.f );
}


function numberParser( sValue )
{
if( sValue === '.' )
return undefined;
var reFloatNumber = /^[+-]?[0-9]*[.]?[0-9]*$/;

if( reFloatNumber.test( sValue ) )
return parseFloat( sValue );
else
return undefined;
}

function booleanParser( sValue )
{
sValue = sValue.toLowerCase();
if( sValue === 'true' )
return true;
else if( sValue === 'false' )
return false;
else
return undefined;
}

function colorParser( sValue )
{

function hsl( nHue, nSaturation, nLuminance )
{
return new HSLColor( nHue, nSaturation / 100, nLuminance / 100 );
}

function rgb( nRed, nGreen, nBlue )
{
return new RGBColor( nRed / 255, nGreen / 255, nBlue / 255 );
}

function prgb( nRed, nGreen, nBlue )
{
return new RGBColor( nRed / 100, nGreen / 100, nBlue / 100 );
}

var sCommaPattern = ' *[,] *';
var sIntegerPattern = '[+-]?[0-9]+';
var sHexDigitPattern = '[0-9A-Fa-f]';

var sHexColorPattern = '#(' + sHexDigitPattern + '{2})('
+ sHexDigitPattern + '{2})('
+ sHexDigitPattern + '{2})';

var sRGBIntegerPattern = 'rgb[(] *' + sIntegerPattern + sCommaPattern
+ sIntegerPattern + sCommaPattern
+ sIntegerPattern + ' *[)]';

var sRGBPercentPattern = 'rgb[(] *' + sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + ' *[)]';

var sHSLPercentPattern = 'hsl[(] *' + sIntegerPattern + sCommaPattern
+ sIntegerPattern + '%' + sCommaPattern
+ sIntegerPattern + '%' + ' *[)]';

var reHexColor = new RegExp( sHexColorPattern );
var reRGBInteger = new RegExp( sRGBIntegerPattern );
var reRGBPercent = new RegExp( sRGBPercentPattern );
var reHSLPercent = new RegExp( sHSLPercentPattern );

if( reHexColor.test( sValue ) )
if( !bRet )
{
switchSlide( 1, true );
}
}

function skipEffects(dir)
{
if( dir == 1 )
{
var bRet = aSlideShow.skipPlayingOrNextEffect();

if( !bRet )
{
switchSlide( 1, true );
}
}
else
{
switchSlide( dir, true );
}
}

function switchSlide( nOffset, bSkipTransition )
{
var nNextSlide = nCurSlide + nOffset;
aSlideShow.displaySlide( nNextSlide, bSkipTransition );
}

function displayIndex( offsetNumber )
{
var aMetaSlideSet = theMetaDoc.aMetaSlideSet;
offsetNumber = getSafeIndex( offsetNumber, 0, aMetaSlideSet.length - 1 );

var nTotalThumbnails = theSlideIndexPage.getTotalThumbnails();
var nEnd = Math.min( offsetNumber + nTotalThumbnails, aMetaSlideSet.length);

var aThumbnailSet = theSlideIndexPage.aThumbnailSet;
var j = 0;
for( var i = offsetNumber; i < nEnd; ++i, ++j )
{
aThumbnailSet[j].update( i );
aThumbnailSet[j].show();
}
for( ; j < nTotalThumbnails; ++j )
{
aThumbnailSet[j].hide();
}

if (INDEX_OFFSET != offsetNumber)
INDEX_OFFSET = offsetNumber;
}

function toggleSlideIndex()
{
if( currentMode == SLIDE_MODE )
{

theMetaDoc.getCurrentSlide().hide();
INDEX_OFFSET = -1;
indexSetPageSlide( nCurSlide );
theSlideIndexPage.show();
currentMode = INDEX_MODE;
}
else if( currentMode == INDEX_MODE )
{
theSlideIndexPage.hide();
var nNewSlide = theSlideIndexPage.selectedSlideIndex;

aSlideShow.displaySlide( nNewSlide, true );
currentMode = SLIDE_MODE;
}
}

function abandonIndexMode()
{
theSlideIndexPage.selectedSlideIndex = nCurSlide;
toggleSlideIndex();
}


var CURR_UNIQUE_ID = 0;

function getUniqueId()
{
++CURR_UNIQUE_ID;
return CURR_UNIQUE_ID;
}

function mem_fn( sMethodName )
{
return  function( aObject )
{
var aMethod = aObject[ sMethodName ];
if( aMethod )
aMethod.call( aObject );
else
log( 'method sMethodName not found' );
};
}

function bind( aObject, aMethod )
{
return  function()
{
return aMethod.call( aObject, arguments[0] );
};
}

function bind2( aFunction )
{
if( !aFunction  )
log( 'bind2: passed function is not valid.' );

var aBoundArgList = arguments;

var aResultFunction = null;

switch( aBoundArgList.length )
{
case 1: aResultFunction = function()
{
return aFunction.call( arguments[0], arguments[1],
arguments[2], arguments[3],
arguments[4] );
};
break;
case 2: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], arguments[0],
arguments[1], arguments[2],
arguments[3] );
};
break;
case 3: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
arguments[0], arguments[1],
arguments[2] );
};
break;
case 4: aResultFunction = function()
{
return aFunction.call( aBoundArgList[1], aBoundArgList[2],
aBoundArgList[3], arguments[0],
arguments[1] );
};
break;
case 5: aResultFunction = function()
{
this.halfBorderWidth = this.container.halfBorderWidth;
this.borderWidth = this.container.borderWidth;
this.width = ( WIDTH + this.borderWidth ) * this.container.scaleFactor;
this.height = ( HEIGHT + this.borderWidth ) * this.container.scaleFactor;
this.aTransformSet[2] = 'translate(' + this.halfBorderWidth + ' ' + this.halfBorderWidth + ')';
this.aTransformSet[1] = 'scale(' + this.container.scaleFactor + ')';
var sTransformAttrValue = this.computeTransform();
this.thumbnailElement.setAttribute( 'transform', sTransformAttrValue );
this.mouseAreaElement.setAttribute( 'onmouseover', 'theSlideIndexPage.aThumbnailSet[' + this.index  + '].onMouseOver()' );
};

Thumbnail.prototype.update = function( nIndex )
{
if( this.slideIndex == nIndex )  return;

var aMetaSlide = theMetaDoc.aMetaSlideSet[nIndex];
aMetaSlide.updateMasterPageView();
setNSAttribute( 'xlink', this.slideElement, 'href', '#' + aMetaSlide.slideId );
this.slideIndex = nIndex;
};

Thumbnail.prototype.clear = function( )
{
setNSAttribute( 'xlink', this.slideElement, 'href', '' );
};

Thumbnail.prototype.createThumbnailElement = function()
{
var aThumbnailElement = document.createElementNS( NSS['svg'], 'g' );
aThumbnailElement.setAttribute( 'id', this.thumbnailId );
aThumbnailElement.setAttribute( 'display', 'inherit' );

var aSlideElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aSlideElement, 'href', '' );
aSlideElement.setAttribute( 'class', 'Slide' );
aThumbnailElement.appendChild( aSlideElement );

var aMouseAreaElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aMouseAreaElement, 'href', '#' + this.container.thumbnailMouseAreaTemplateId );
aMouseAreaElement.setAttribute( 'class', 'MouseArea' );
aMouseAreaElement.setAttribute( 'opacity', 0.0 );
aThumbnailElement.appendChild( aMouseAreaElement );

var aBorderElement = document.createElementNS( NSS['svg'], 'use' );
setNSAttribute( 'xlink', aBorderElement, 'href', '#' + this.container.thumbnailBorderTemplateId );
aBorderElement.setAttribute( 'stroke', this.sNormalBorderColor );
aBorderElement.setAttribute( 'class', 'Border' );
aThumbnailElement.appendChild( aBorderElement );

this.container.pageElement.appendChild( aThumbnailElement );
return( document.getElementById( this.thumbnailId ) );
};

Thumbnail.prototype.computeTransform = function()
{
var nXSpacing = this.container.xSpacing;
var nYSpacing = this.container.ySpacing;

var nXOffset = nXSpacing + ( this.width + nXSpacing ) * this.column;
var nYOffset = nYSpacing + ( this.height + nYSpacing ) * this.row;

this.aTransformSet[0] = 'translate(' + nXOffset + ' ' + nYOffset + ')';

var sTransform = this.aTransformSet.join( ' ' );

return sTransform;
};

Thumbnail.prototype.onMouseOver = function()
{
if( ( currentMode == INDEX_MODE ) && ( this.container.curThumbnailIndex !=  this.index ) )
{
this.container.setSelection( this.index );
}
};


function init()
{
var VIEWBOX = ROOT_NODE.getAttribute('viewBox');

if( VIEWBOX )
{
WIDTH = ROOT_NODE.viewBox.animVal.width;
HEIGHT = ROOT_NODE.viewBox.animVal.height;
}

aSlideShow = new SlideShow();
theMetaDoc =  new MetaDocument();
aSlideShow.bIsEnabled = theMetaDoc.bIsAnimated;
theSlideIndexPage = new SlideIndexPage();
aSlideShow.displaySlide( theMetaDoc.nStartSlideNumber, false );

var hammer = new Hammer(ROOT_NODE);
hammer.on('swipeleft', function() {
switchSlide(1, false);
});
hammer.on('swiperight', function() {
switchSlide(-1, false);
});
hammer.get('swipe').set({ direction: Hammer.DIRECTION_ALL });
hammer.on('swipeup', function() {
aSlideShow.exitSlideShowInApp();
});
hammer.on('swipedown', function() {
aSlideShow.exitSlideShowInApp();
});
}

function presentationEngineStop(message)
{
alert( message + '\nThe presentation engine will be stopped' );
document.onkeydown = null;
document.onkeypress = null;
document.onclick = null;
window.onmousewheel = null;
}

function assert( condition, message )
{
if (!condition)
{
presentationEngineStop( message );
if (typeof console == 'object')
console.trace();
throw new Error( message );
}
}

function dispatchEffects(dir)
{

if( dir == 1 )
{
var bRet = aSlideShow.nextEffect();

if( !bRet )
{
switchSlide( 1, false );
}
}
else
{
switchSlide( dir, false );
}
}

function skipAllEffects()
{
var bRet = aSlideShow.skipAllEffects();

aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'id', this.thumbnailMouseAreaTemplateId );
aRectElement.setAttribute( 'x', 0 );
aRectElement.setAttribute( 'y', 0 );
aRectElement.setAttribute( 'width', WIDTH );
aRectElement.setAttribute( 'height', HEIGHT );
aRectElement.setAttribute( 'fill', this.pageBgColor );
aDefsElement.appendChild( aRectElement );

this.pageElement.appendChild( aDefsElement );

this.thumbnailMouseAreaTemplateElement = document.getElementById( this.thumbnailMouseAreaTemplateId );
this.thumbnailBorderTemplateElement = document.getElementById( this.thumbnailBorderTemplateId );
};

SlideIndexPage.prototype.decreaseNumberOfColumns  = function()
{
this.setNumberOfColumns( this.indexColumns - 1 );
};

SlideIndexPage.prototype.increaseNumberOfColumns  = function()
{
this.setNumberOfColumns( this.indexColumns + 1 );
};

SlideIndexPage.prototype.resetNumberOfColumns  = function()
{
this.setNumberOfColumns( INDEX_COLUMNS_DEFAULT );
};

SlideIndexPage.prototype.setNumberOfColumns  = function( nNumberOfColumns )
{
if( this.indexColumns == nNumberOfColumns )  return;
if( nNumberOfColumns < 2 || nNumberOfColumns > 6 ) return;

var suspendHandle = ROOT_NODE.suspendRedraw(500);

var nOldTotalThumbnails = this.totalThumbnails;
this.indexColumns = nNumberOfColumns;
this.totalThumbnails = nNumberOfColumns * nNumberOfColumns;

this.aThumbnailSet[this.curThumbnailIndex].unselect();

var i;
for( i = this.totalThumbnails; i < nOldTotalThumbnails; ++i )
{
this.aThumbnailSet[i].removeElement();
}

for( i = nOldTotalThumbnails; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i] = new Thumbnail( this, i );
}

this.halfBorderWidthFactor = ( 300/28000 ) * ( this.indexColumns / 3 );
this.halfBorderWidth = WIDTH * this.halfBorderWidthFactor;
this.borderWidth = 2 * this.halfBorderWidth;
this.scaleFactor = ( 1 - ( this.indexColumns + 1 ) * this.xSpacingFactor ) /
( this.indexColumns * ( 1 + 2 * this.halfBorderWidthFactor ) );

var aRectElement = this.thumbnailBorderTemplateElement;
aRectElement.setAttribute( 'x', -this.halfBorderWidth );
aRectElement.setAttribute( 'y', -this.halfBorderWidth );
aRectElement.setAttribute( 'rx', this.halfBorderWidth );
aRectElement.setAttribute( 'ry', this.halfBorderWidth );
aRectElement.setAttribute( 'width', WIDTH + this.halfBorderWidth );
aRectElement.setAttribute( 'height', HEIGHT + this.halfBorderWidth );
aRectElement.setAttribute( 'stroke-width', this.borderWidth );

for( i = 0; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i].updateView();
}

this.curThumbnailIndex = this.selectedSlideIndex % this.totalThumbnails;
this.aThumbnailSet[this.curThumbnailIndex].select();

INDEX_OFFSET = -1;
indexSetPageSlide( this.selectedSlideIndex );

ROOT_NODE.unsuspendRedraw( suspendHandle );
ROOT_NODE.forceRedraw();
};


function Thumbnail( aSlideIndexPage, nIndex )
{
this.container = aSlideIndexPage;
this.index = nIndex;//= getSafeIndex( nIndex, 0, this.container.getTotalThumbnails() );
this.pageElement = this.container.pageElement;
this.thumbnailId = 'thumbnail' + this.index;
this.thumbnailElement = this.createThumbnailElement();
this.slideElement = getElementByClassName( this.thumbnailElement, 'Slide' );
this.borderElement = getElementByClassName( this.thumbnailElement, 'Border' );
this.mouseAreaElement = getElementByClassName( this.thumbnailElement, 'MouseArea' );
this.aTransformSet = new Array( 3 );
this.visibility = VISIBLE;
this.isSelected = false;
}

Thumbnail.prototype.sNormalBorderColor = 'rgb(216,216,216)';
Thumbnail.prototype.sSelectionBorderColor = 'rgb(92,92,255)';

Thumbnail.prototype.removeElement = function()
{
if( this.thumbnailElement )
this.container.pageElement.removeChild( this.thumbnailElement );
};

Thumbnail.prototype.show = function()
{
if( this.visibility == HIDDEN )
{
this.thumbnailElement.setAttribute( 'display', 'inherit' );
this.visibility = VISIBLE;
}
};

Thumbnail.prototype.hide = function()
{
if( this.visibility == VISIBLE )
{
this.thumbnailElement.setAttribute( 'display', 'none' );
this.visibility = HIDDEN;
}
};

Thumbnail.prototype.select = function()
{
if( !this.isSelected )
{
this.borderElement.setAttribute( 'stroke', this.sSelectionBorderColor );
this.isSelected = true;
}
};

Thumbnail.prototype.unselect = function()
{
if( this.isSelected )
{
this.borderElement.setAttribute( 'stroke', this.sNormalBorderColor );
this.isSelected = false;
}
};

Thumbnail.prototype.updateView = function()
{
this.column = this.index % this.container.indexColumns;
this.row = ( this.index - this.column ) / this.container.indexColumns;
aDateTimeField.setTextContent( sText );
};


CurrentDateTimeProvider.prototype.createDateTimeText = function()
{
var sDate;
if( this.dateTimeFormat === '<date>' )
sDate = new Date().toLocaleDateString();
else if( this.dateTimeFormat === '<time>' )
sDate = new Date().toLocaleTimeString();
else
sDate = new Date().toLocaleDateString();
return sDate;
};

function SlideNumberProvider( nInitialSlideNumber, sPageNumberingType )
{
SlideNumberProvider.superclass.constructor.call( this );
this.nInitialSlideNumber = nInitialSlideNumber;
this.pageNumberingType = sPageNumberingType;

}
extend( SlideNumberProvider, TextFieldContentProvider );


SlideNumberProvider.prototype.getNumberingType = function()
{
return this.pageNumberingType;
};


SlideNumberProvider.prototype.update = function( aSlideNumberField, nSlideNumber )
{
if( nSlideNumber === undefined )
{
if( nCurSlide === undefined )
nSlideNumber = this.nInitialSlideNumber;
else
nSlideNumber = nCurSlide + 1;
}
var sText = this.createSlideNumberText( nSlideNumber, this.getNumberingType() );
aSlideNumberField.setTextContent( sText );
};


SlideNumberProvider.prototype.createSlideNumberText = function( nSlideNumber /*, sNumberingType*/ )
{
return String( nSlideNumber );
};


function SlideIndexPage()
{
this.pageElementId = 'slide_index';
this.pageBgColor = 'rgb(252,252,252)';
this.pageElement = this.createPageElement();
assert( this.pageElement, 'SlideIndexPage: pageElement is not valid' );
this.indexColumns = INDEX_COLUMNS_DEFAULT;
this.totalThumbnails = this.indexColumns * this.indexColumns;
this.selectedSlideIndex = undefined;

this.xSpacingFactor = 600/28000;
this.ySpacingFactor = 450/21000;
this.xSpacing = WIDTH * this.xSpacingFactor;
this.ySpacing = HEIGHT * this.ySpacingFactor;
this.halfBorderWidthFactor = ( 300/28000 ) * ( this.indexColumns / 3 );
this.halfBorderWidth = WIDTH * this.halfBorderWidthFactor;
this.borderWidth = 2 * this.halfBorderWidth;
this.scaleFactor = ( 1 - ( this.indexColumns + 1 ) * this.xSpacingFactor ) /
( this.indexColumns * ( 1 + 2 * this.halfBorderWidthFactor ) );

this.thumbnailMouseAreaTemplateId = 'thumbnail_mouse_area';
this.thumbnailMouseAreaTemplateElement = null;
this.thumbnailBorderTemplateId = 'thumbnail_border';
this.thumbnailBorderTemplateElement = null;
this.createTemplateElements();

this.aThumbnailSet = new Array( this.totalThumbnails );
for( var i = 0; i < this.totalThumbnails; ++i )
{
this.aThumbnailSet[i] = new Thumbnail( this, i );
this.aThumbnailSet[i].updateView();
}

this.curThumbnailIndex = 0;
}


SlideIndexPage.prototype.getTotalThumbnails = function()
{
return this.totalThumbnails;
};

SlideIndexPage.prototype.show = function()
{
this.pageElement.setAttribute( 'display', 'inherit' );
};

SlideIndexPage.prototype.hide = function()
{
this.pageElement.setAttribute( 'display', 'none' );
};

SlideIndexPage.prototype.setSelection = function( nIndex )
{
nIndex = getSafeIndex( nIndex, 0, this.getTotalThumbnails() - 1 );
if( this.curThumbnailIndex != nIndex )
{
this.aThumbnailSet[ this.curThumbnailIndex ].unselect();
this.aThumbnailSet[ nIndex ].select();
this.curThumbnailIndex = nIndex;
}
this.selectedSlideIndex = this.aThumbnailSet[ nIndex ].slideIndex;
};

SlideIndexPage.prototype.createPageElement = function()
{
var aPageElement = document.createElementNS( NSS['svg'], 'g' );
aPageElement.setAttribute( 'id', this.pageElementId );
aPageElement.setAttribute( 'display', 'none' );
aPageElement.setAttribute( 'visibility', 'visible' );

var sPageBgColor = this.pageBgColor + ';';
var aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'x', 0 );
aRectElement.setAttribute( 'y', 0 );
aRectElement.setAttribute( 'width', WIDTH );
aRectElement.setAttribute( 'height', HEIGHT );
aRectElement.setAttribute( 'style', 'stroke:none;fill:' + sPageBgColor );

aPageElement.appendChild( aRectElement );
ROOT_NODE.appendChild( aPageElement );
return( document.getElementById( this.pageElementId ) );
};

SlideIndexPage.prototype.createTemplateElements = function()
{
var aDefsElement = document.createElementNS( NSS['svg'], 'defs' );
var aRectElement = document.createElementNS( NSS['svg'], 'rect' );
aRectElement.setAttribute( 'id', this.thumbnailBorderTemplateId );
aRectElement.setAttribute( 'x', -this.halfBorderWidth );
aRectElement.setAttribute( 'y', -this.halfBorderWidth );
aRectElement.setAttribute( 'rx', this.halfBorderWidth );
aRectElement.setAttribute( 'ry', this.halfBorderWidth );
aRectElement.setAttribute( 'width', WIDTH + this.halfBorderWidth );
aRectElement.setAttribute( 'height', HEIGHT + this.halfBorderWidth );
aRectElement.setAttribute( 'stroke-width', this.borderWidth );
aRectElement.setAttribute( 'fill', 'none' );
aDefsElement.appendChild( aRectElement );
sRefId = aPlaceholderShape.element.firstElementChild.getAttribute('id');
}

if( sRefId )
{
var aTextFieldElement = document.createElementNS(NSS['svg'], 'use');
aTextFieldElement.setAttribute('class', sClassName);
setNSAttribute('xlink', aTextFieldElement,
'href', '#' + sRefId);
this.aBackgroundObjectsElement.appendChild( aTextFieldElement );
}
return aTextFieldHandler;
};

function TextFieldHandler( aPlaceholderShape, aTextContentProvider )
{
this.aPlaceHolderShape = aPlaceholderShape;
this.aTextContentProvider = aTextContentProvider;
assert( this.aTextContentProvider,
'TextFieldHandler: text content provider not defined.' );
this.sId = 'tf' + String( TextFieldHandler.getUniqueId() );
this.aTextFieldElement = null;
this.aTextPlaceholderElement = null;
this.cloneElement();
}


TextFieldHandler.CURR_UNIQUE_ID = 0;

TextFieldHandler.getUniqueId = function()
{
++TextFieldHandler.CURR_UNIQUE_ID;
return TextFieldHandler.CURR_UNIQUE_ID;
};

TextFieldHandler.prototype.cloneElement = function()
{
assert( this.aPlaceHolderShape && this.aPlaceHolderShape.isValid(),
'TextFieldHandler.cloneElement: placeholder shape is not valid.' );
this.aTextFieldElement = this.aPlaceHolderShape.element.cloneNode( true /* deep clone */ );
assert( this.aTextFieldElement,
'TextFieldHandler.cloneElement: aTextFieldElement is not defined' );
this.aTextFieldElement.setAttribute( 'id', this.sId );
this.aTextFieldElement.removeAttribute( 'visibility' );
this.aTextPlaceholderElement = getElementByClassName( this.aTextFieldElement, 'PlaceholderText' );
assert( this.aTextPlaceholderElement,
'TextFieldHandler.cloneElement: aTextPlaceholderElement is not defined' );
};


TextFieldHandler.prototype.appendTo = function( aParentNode )
{
if( !this.aTextFieldElement )
{
log( 'TextFieldHandler.appendTo: aTextFieldElement is not defined' );
return;
}
if( !aParentNode )
{
log( 'TextFieldHandler.appendTo: parent node is not defined' );
return;
}

aParentNode.appendChild( this.aTextFieldElement );
};

TextFieldHandler.prototype.setTextContent = function( sText )
{
if( !this.aTextPlaceholderElement )
{
log( 'PlaceholderShape.setTextContent: text element is not valid in placeholder of type '
+ this.className + ' that belongs to master slide ' + this.masterPage.id );
return;
}
this.aTextPlaceholderElement.textContent = sText;
};

TextFieldHandler.prototype.update = function()
{
if( !this.aTextContentProvider )
log('TextFieldHandler.update: text content provider not defined.');
else
this.aTextContentProvider.update( this );
};

function SlideNumberFieldHandler( aPlaceholderShape, aTextContentProvider )
{
SlideNumberFieldHandler.superclass.constructor.call( this, aPlaceholderShape, aTextContentProvider );
}
extend( SlideNumberFieldHandler, TextFieldHandler );


SlideNumberFieldHandler.prototype.update = function( nPageNumber )
{
if( !this.aTextContentProvider )
log('TextFieldHandler.update: text content provider not defined.');
else
this.aTextContentProvider.update( this, nPageNumber );
};


function TextFieldContentProvider()
{
this.sId = TextFieldContentProvider.getUniqueId();
}


TextFieldContentProvider.CURR_UNIQUE_ID = 0;

TextFieldContentProvider.getUniqueId = function()
{
++TextFieldContentProvider.CURR_UNIQUE_ID;
return TextFieldContentProvider.CURR_UNIQUE_ID;
};

function FixedTextProvider( aText )
{
FixedTextProvider.superclass.constructor.call( this );
this.text = aText;
}
extend( FixedTextProvider, TextFieldContentProvider );


FixedTextProvider.prototype.update = function( aFixedTextField )
{
aFixedTextField.setTextContent( this.text );
};

function FixedTextByElementProvider( aTextFieldContentElement )
{
FixedTextByElementProvider.superclass.constructor.call( this, aTextFieldContentElement.textContent );
}
extend( FixedTextByElementProvider, FixedTextProvider );

function CurrentDateTimeProvider( aTextFieldContentElement, sDateTimeFormat )
{
CurrentDateTimeProvider.superclass.constructor.call( this, aTextFieldContentElement );
if( aTextFieldContentElement )
this.dateTimeFormat = getOOOAttribute( aTextFieldContentElement, aOOOAttrDateTimeFormat );
else
{
this.dateTimeFormat = sDateTimeFormat;
}
}
extend( CurrentDateTimeProvider, TextFieldContentProvider );


CurrentDateTimeProvider.prototype.update = function( aDateTimeField )
{
var sText = this.createDateTimeText();
MasterPageView.prototype.createElement = function()
{
var theDocument = document;
var aMasterPageViewElement = theDocument.createElementNS( NSS['svg'], 'g' );
assert( aMasterPageViewElement,
'MasterPageView.createElement: failed to create a master page view element.' );
aMasterPageViewElement.setAttribute( 'class', 'MasterPageView' );

var aWhiteRect = theDocument.createElementNS( NSS['svg'], 'rect' );
var nWidthExt = WIDTH / 1000;
var nHeightExt = HEIGHT / 1000;
aWhiteRect.setAttribute( 'x', String( -nWidthExt / 2 ) );
aWhiteRect.setAttribute( 'y', String( -nHeightExt / 2 ) );
aWhiteRect.setAttribute( 'width', String( WIDTH + nWidthExt ) );
aWhiteRect.setAttribute( 'height', String( HEIGHT + nHeightExt ) );
aWhiteRect.setAttribute( 'fill', '#FFFFFF' );
aMasterPageViewElement.appendChild( aWhiteRect );

if( this.aMetaSlide.nIsBackgroundVisible )
{
var nBackgroundId = this.aMetaSlide.bHasCustomBackground ? this.aMetaSlide.backgroundId : this.aMasterPage.backgroundId;
this.aBackgroundElement = theDocument.createElementNS( NSS['svg'], 'use' );
this.aBackgroundElement.setAttribute( 'class', 'Background' );
setNSAttribute( 'xlink', this.aBackgroundElement,
'href', '#' + nBackgroundId );

aMasterPageViewElement.appendChild( this.aBackgroundElement );
}

if( this.aMetaSlide.nAreMasterObjectsVisible )
{
this.aBackgroundObjectsElement = theDocument.createElementNS( NSS['svg'], 'g' );
this.aBackgroundObjectsElement.setAttribute( 'class', 'BackgroundObjects' );

var aBackgroundObjectSubGroupIdList = this.aMasterPage.aBackgroundObjectSubGroupIdList;
this.aBackgroundSubGroupElementSet = [];
var aPlaceholderShapeSet = this.aMasterPage.aPlaceholderShapeSet;
var aTextFieldContentProviderSet = this.aMetaSlide.aTextFieldContentProviderSet;
var aDefsElement = this.aMetaSlide.element.parentNode;
var aTextFieldHandlerSet = this.aMetaSlide.theMetaDoc.aTextFieldHandlerSet;
var sMasterSlideId = this.aMasterPage.id;

var i = 0;
var sId;
for( ; i < aBackgroundObjectSubGroupIdList.length; ++i )
{
sId = aBackgroundObjectSubGroupIdList[i];
if( sId.indexOf( aSlideNumberClassName ) == 0 )
{
var nIsPageNumberVisible = sId === aSlideNumberClassName ? this.aMetaSlide.nIsPageNumberVisible : true;
if( aPlaceholderShapeSet[sId] &&
aPlaceholderShapeSet[sId].isValid() &&
nIsPageNumberVisible &&
aTextFieldContentProviderSet[aSlideNumberClassName] )
{
var aSlideNumberFieldHandler =
new SlideNumberFieldHandler( aPlaceholderShapeSet[sId],
aTextFieldContentProviderSet[aSlideNumberClassName] );
aSlideNumberFieldHandler.update( this.aMetaSlide.nSlideNumber );
aSlideNumberFieldHandler.appendTo( this.aBackgroundObjectsElement );
if ( sId === aSlideNumberClassName )
this.aSlideNumberFieldHandler = aSlideNumberFieldHandler;
}
}
else if( sId === aDateTimeClassName )
{
if( this.aMetaSlide.nIsDateTimeVisible )
{
this.aDateTimeFieldHandler =
this.initTextFieldHandler( aDateTimeClassName, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId === aFooterClassName )
{
if( this.aMetaSlide.nIsFooterVisible )
{
this.aFooterFieldHandler =
this.initTextFieldHandler( aFooterClassName, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId === aHeaderClassName )
{
if( this.aMetaSlide.nIsHeaderVisible )
{
this.aHeaderFieldHandler =
this.initTextFieldHandler( aHeaderClassName, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
}
else if( sId.indexOf( aDateClassName ) == 0
|| sId.indexOf( aTimeClassName ) == 0
|| sId.indexOf( aSlideNameClassName ) == 0 )
{
this.initTextFieldHandler( sId, aPlaceholderShapeSet,
aTextFieldContentProviderSet, aDefsElement,
aTextFieldHandlerSet, sMasterSlideId );
}
else
{
var aBackgroundSubGroupElement = theDocument.createElementNS( NSS['svg'], 'use' );
aBackgroundSubGroupElement.setAttribute( 'class', 'BackgroundObjectSubGroup' );
setNSAttribute( 'xlink', aBackgroundSubGroupElement,
'href', '#' + sId );
this.aBackgroundSubGroupElementSet.push( aBackgroundSubGroupElement );
this.aBackgroundObjectsElement.appendChild( aBackgroundSubGroupElement );
}

}
aMasterPageViewElement.appendChild( this.aBackgroundObjectsElement );
}

return aMasterPageViewElement;
};

MasterPageView.prototype.initTextFieldHandler =
function( sId, aPlaceholderShapeSet, aTextFieldContentProviderSet,
aDefsElement, aTextFieldHandlerSet, sMasterSlideId )
{
var sRefId = null;
var aTextFieldHandler = null;
var sClassName = sId.split('.')[0];
var aPlaceholderShape = aPlaceholderShapeSet[sId];
var aTextFieldContentProvider = aTextFieldContentProviderSet[sClassName];
if( aPlaceholderShape  && aPlaceholderShape.isValid()
&& aTextFieldContentProvider )
{
var sTextFieldContentProviderId = aTextFieldContentProvider.sId;
if ( !aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ] )
{
aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ] =
new TextFieldHandler( aPlaceholderShape,
aTextFieldContentProvider );
aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ];
aTextFieldHandler.update();
aTextFieldHandler.appendTo( aDefsElement );
}
else
{
aTextFieldHandler = aTextFieldHandlerSet[ sMasterSlideId ][ sTextFieldContentProviderId ];
}
sRefId = aTextFieldHandler.sId;
}
else if( aPlaceholderShape && aPlaceholderShape.element && aPlaceholderShape.element.firstElementChild
&& !aPlaceholderShape.textElement && !aTextFieldContentProvider )
{

initPlaceholderShapes : function()
{
var sClassName;
var i = 0;
for( ; i < this.aBackgroundObjectSubGroupIdList.length; ++i )
{
sClassName = this.aBackgroundObjectSubGroupIdList[i];
if( isTextFieldByClassName( sClassName ) )
this.aPlaceholderShapeSet[ sClassName ] = new PlaceholderShape( this, sClassName );
}
}

}; // end MasterPage prototype

function PlaceholderShape( aMasterPage, sClassName )
{
this.masterPage = aMasterPage;
this.className = sClassName;

this.element = null;
this.textElement = null;
this.init();
}

PlaceholderShape.prototype.isValid = function()
{
return ( this.element && this.textElement );
};


PlaceholderShape.prototype.init = function()
{
var aTextFieldElement = getElementByClassName( this.masterPage.backgroundObjects, this.className );
if( aTextFieldElement )
{
var aTextElem = getElementByClassName( aTextFieldElement, 'SVGTextShape' );
if( aTextElem )
{
var aPlaceholderElement = getElementByClassName(aTextElem, 'PlaceholderText');
if( aPlaceholderElement )
{
var aSVGRectElem = getElementByClassName( aTextFieldElement, 'BoundingBox' );
if( aSVGRectElem )
{
var aRect = new Rectangle( aSVGRectElem );
var sTextAdjust = getOOOAttribute( aTextFieldElement, aOOOAttrTextAdjust );
var nMargin = 250; // 1000th mm
var sTextAnchor, sX;
if( sTextAdjust == 'left' )
{
sTextAnchor = 'start';
sX = String( Math.trunc( aRect.left + nMargin ) );
}
else if( sTextAdjust == 'right' )
{
sTextAnchor = 'end';
sX = String( Math.trunc( aRect.right - nMargin ) );
}
else if( sTextAdjust == 'center' )
{
sTextAnchor = 'middle';
var nMiddle = ( aRect.left + aRect.right ) / 2;
sX = String( parseInt( String( nMiddle ) ) );
}
if( sTextAnchor )
{
aTextElem.setAttribute( 'text-anchor', sTextAnchor );
if( sX )
aTextElem.setAttribute( 'x', sX );

var aTSpanElements = getElementsByClassName( aTextElem, 'TextPosition' );
if( aTSpanElements )
{
var i = 0;
for( ; i < aTSpanElements.length; ++i )
{
var aTSpanElem = aTSpanElements[i];
aTSpanElem.removeAttribute( 'x' );
if( i !== 0 )
aTSpanElem.removeAttribute( 'y' );
}
}
}
}

if( this.masterPage.metaSlide.theMetaDoc.bIsUsePositionedChars )
{
var aTextLineGroupElem = aPlaceholderElement.parentNode.parentNode;
if( aTextLineGroupElem )
{
var sFontFamilyAttr = aTextLineGroupElem.getAttribute( 'font-family' );
if( sFontFamilyAttr )
{
var aChildSet = getElementChildren( aTextLineGroupElem );
if( aChildSet.length > 1 )
var i = 1;
for( ; i < aChildSet.length; ++i )
{
aTextLineGroupElem.removeChild( aChildSet[i] );
}
}
}
}
this.textElement = aPlaceholderElement;
}
}
this.element = aTextFieldElement;
}
};

function MasterPageView( aMetaSlide )
{
this.aMetaSlide = aMetaSlide;
this.aSlideElement = aMetaSlide.slideElement;
this.aPageElement = aMetaSlide.pageElement;
this.aMasterPage = aMetaSlide.masterPage;
this.aMPVElement = this.createElement();
this.bIsAttached = false;
}


MasterPageView.prototype.attachToSlide = function()
{
if( !this.bIsAttached )
{
var aInsertedElement = this.aSlideElement.insertBefore( this.aMPVElement, this.aPageElement );
assert( aInsertedElement === this.aMPVElement,
'MasterPageView.attachToSlide: aInsertedElement != this.aMPVElement' );

this.bIsAttached = true;
}
};

MasterPageView.prototype.detachFromSlide = function()
{
if( this.bIsAttached )
{
this.aSlideElement.removeChild( this.aMPVElement );
this.bIsAttached = false;
}
};

MasterPageView.prototype.update = function()
{
if( this.aDateTimeFieldHandler && this.aMetaSlide.bIsDateTimeVariable )
this.aDateTimeFieldHandler.update();
};


{
var sHyperlinkIds = aHyperlinkIdList.textContent;
if( sHyperlinkIds )
{
var aHyperlinkIdSet = sHyperlinkIds.trim().split( ' ' );
var j;
for( j = 0; j < aHyperlinkIdSet.length; ++j )
{
var sId = aHyperlinkIdSet[j];
aHyperlinkSet[ sId ] = new HyperlinkElement( sId, this.aSlideAnimationsHandler.aEventMultiplexer );
}
}
}
}
}
return aHyperlinkSet;
},

getSlideAnimationsRoot : function()
{
return this.theMetaDoc.aSlideAnimationsMap[ this.slideId ];
}

}; // end MetaSlide prototype

function getTextFieldType ( elem )
{
var sFieldType = null;
var sClass = elem.getAttribute('class');
if( sClass == 'TextShape' )
{
var aPlaceholderElement = getElementByClassName( elem, 'PlaceholderText' );
if (aPlaceholderElement)
{
var sContent = aPlaceholderElement.textContent
if (sContent === '<number>')
sFieldType = aSlideNumberClassName;
else if (sContent === '<date>')
sFieldType = aDateClassName;
else if (sContent === '<time>')
sFieldType = aTimeClassName;
else if (sContent === '<slide-name>')
sFieldType = aSlideNameClassName;
}
}
return sFieldType;
}

function isTextFieldByClassName ( sClassName )
{
return sClassName === aDateTimeClassName || sClassName === aFooterClassName
|| sClassName === aHeaderClassName || sClassName.indexOf( aSlideNumberClassName ) == 0
|| sClassName.indexOf( aDateClassName ) == 0 || sClassName.indexOf( aTimeClassName ) == 0
|| sClassName.indexOf( aSlideNameClassName ) == 0;
}

function MasterPage( sMasterPageId, aMetaSlide )
{
this.id = sMasterPageId;
this.metaSlide = aMetaSlide;

this.element = document.getElementById( this.id );
assert( this.element,
'MasterPage: master page element <' + this.id + '> not found.' );

this.background = getElementByClassName( this.element, 'Background' );
if( this.background )
{
this.backgroundId = this.background.getAttribute( 'id' );
this.backgroundVisibility = initVisibilityProperty( this.background );
}
else
{
this.backgroundId = '';
log( 'MasterPage: the background element is not valid.' );
}

this.backgroundObjects = getElementByClassName( this.element, 'BackgroundObjects' );
this.aBackgroundObjectSubGroupIdList = [];
if( this.backgroundObjects )
{
this.backgroundObjectsId = this.backgroundObjects.getAttribute( 'id' );
this.backgroundObjectsVisibility = initVisibilityProperty( this.backgroundObjects );

if( this.backgroundObjectsVisibility != HIDDEN )
{
var aBackgroundObjectList = getElementChildren( this.backgroundObjects );
var nFrom = 0;
var nCount = 0;
var nSubGroupId = 1;
var sClass;
var sId = '';
var i = 0;
for( ; i < aBackgroundObjectList.length; ++i )
{
var aObject = aBackgroundObjectList[i];
sClass = null;
var sFieldType = getTextFieldType( aObject );
if( sFieldType && aObject.firstElementChild )
{
var sObjId = aObject.firstElementChild.getAttribute( 'id' );
if( sObjId )
{
sClass = sFieldType + '.' + sObjId;
aObject.setAttribute('class', sClass);
}
}
if( !sClass )
{
sClass = aBackgroundObjectList[i].getAttribute('class');
}
if( !sClass || !isTextFieldByClassName( sClass ) )
{
if( nCount === 0 )
{
nFrom = i;
sId = this.backgroundObjectsId + '.' + nSubGroupId;
++nSubGroupId;
this.aBackgroundObjectSubGroupIdList.push( sId );
}
++nCount;
}
else
{
this.aBackgroundObjectSubGroupIdList.push( sClass );
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
nCount = 0;
}
}
}
if( nCount !== 0 )
{
createElementGroup( this.backgroundObjects, aBackgroundObjectList, nFrom, nCount, 'BackgroundObjectSubgroup', sId );
}
}
}
else
{
this.backgroundObjectsId = '';
log( 'MasterPage: the background objects element is not valid.' );
}

this.aPlaceholderShapeSet = {};
this.initPlaceholderShapes();
}

MasterPage.prototype =
{
}
},

initMasterPage : function()
{
var sMasterPageId = this.element.getAttributeNS( NSS['ooo'], aOOOAttrMaster );

if( !this.theMetaDoc.aMasterPageSet.hasOwnProperty( sMasterPageId ) )
{
this.theMetaDoc.aMasterPageSet[ sMasterPageId ] = new MasterPage( sMasterPageId, this );

this.theMetaDoc.aTextFieldHandlerSet[ sMasterPageId ] = {};
}
return this.theMetaDoc.aMasterPageSet[ sMasterPageId ];
},

initSlideDuration : function()
{
var sSlideDuration = this.element.getAttributeNS( NSS['ooo'], aOOOAttrSlideDuration );
if( sSlideDuration && sSlideDuration.length > 0 )
return parseFloat( sSlideDuration );
else
return -1;
},

initHasTransition : function()
{
var sHasTransition = this.element.getAttributeNS( NSS['ooo'], aOOOAttrHasTransition );
return ( sHasTransition === 'true' );
},

initHasCustomBackground : function()
{
var sHasCustomBackground = this.element.getAttributeNS( NSS['ooo'], aOOOAttrHasCustomBackground );
return ( sHasCustomBackground === 'true' );
},

initVisibilityProperty : function( aVisibilityAttribute, nDefaultValue )
{
var nVisibility = nDefaultValue;
var sVisibility = getOOOAttribute( this.element, aVisibilityAttribute );
if( sVisibility )
nVisibility = aVisibilityValue[ sVisibility ];
return nVisibility;
},

initSlideNumberFieldContentProvider : function()
{
return this.theMetaDoc.aSlideNumberProvider;
},

initDateTimeFieldContentProvider : function( aOOOAttrDateTimeField )
{
var sTextFieldId = getOOOAttribute( this.element, aOOOAttrDateTimeField );
if( !sTextFieldId )  return null;

var nLength = aOOOElemTextField.length + 1;
var nIndex = parseInt(sTextFieldId.substring( nLength ) );
if( typeof nIndex != 'number') return null;

if( !this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] )
{
var aTextField;
var aTextFieldElem = document.getElementById( sTextFieldId );
var sClassName = getClassAttribute( aTextFieldElem );
if( sClassName == 'FixedDateTimeField' )
{
aTextField = new FixedTextByElementProvider( aTextFieldElem );
this.bIsDateTimeVariable = false;
}
else if( sClassName == 'VariableDateTimeField' )
{
aTextField = new CurrentDateTimeProvider( aTextFieldElem );
this.bIsDateTimeVariable = true;
}
else
{
aTextField = null;
}
this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] = aTextField;
}
return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ];
},

initFixedTextFieldContentProvider : function( aOOOAttribute )
{
var sTextFieldId = getOOOAttribute( this.element, aOOOAttribute );
if( !sTextFieldId ) return null;

var nLength = aOOOElemTextField.length + 1;
var nIndex = parseInt( sTextFieldId.substring( nLength ) );
if( typeof nIndex != 'number') return null;

if( !this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ] )
{
var aTextFieldElem = document.getElementById( sTextFieldId );
this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ]
= new FixedTextByElementProvider( aTextFieldElem );
}
return this.theMetaDoc.aTextFieldContentProviderSet[ nIndex ];
},

collectTextShapes : function()
{
var aTextShapeSet = [];
var aTextShapeIndexElem = getElementByClassName( document, 'TextShapeIndex' );
if( aTextShapeIndexElem )
{
var aIndexEntryList = getElementChildren( aTextShapeIndexElem );
var i;
for( i = 0; i < aIndexEntryList.length; ++i )
{
var sSlideId = getOOOAttribute( aIndexEntryList[i], 'slide' );
if( sSlideId === this.slideId )
{
var sTextShapeIds = getOOOAttribute( aIndexEntryList[i], 'id-list' );
if( sTextShapeIds )
{
var aTextShapeIdSet =  sTextShapeIds.split( ' ' );
var j;
for( j = 0; j < aTextShapeIdSet.length; ++j )
{
var aTextShapeElem = document.getElementById( aTextShapeIdSet[j] );
if( aTextShapeElem )
{
aTextShapeSet.push( aTextShapeElem );
}
else
{
log( 'warning: MetaSlide.collectTextShapes: text shape with id <' + aTextShapeIdSet[j] + '> is not valid.'  );
}
}
}
break;
}
}
}
return aTextShapeSet;
},

initHyperlinks : function()
{
var aHyperlinkSet = {};
var i;
for( i = 0; i < this.aTextShapeSet.length; ++i )
{
if( this.aTextShapeSet[i] )
{
var aHyperlinkIdList = getElementByClassName( this.aTextShapeSet[i], 'HyperlinkIdList' );
if( aHyperlinkIdList )
else
{
log('MetaDocument.setCurrentSlide: slide index out of range: ' + nSlideIndex );
}
},


initSlideAnimationsMap : function()
{
var aAnimationsSection = document.getElementById( 'presentation-animations' );
if( aAnimationsSection )
{
var aAnimationsDefSet = aAnimationsSection.getElementsByTagName( 'defs' );

this.bIsAnimated = ( typeof aAnimationsDefSet.length =='number' &&
aAnimationsDefSet.length > 0 );

for( var i = 0; i < aAnimationsDefSet.length; ++i )
{
var sSlideId = aAnimationsDefSet[i].getAttributeNS( NSS['ooo'], aOOOAttrSlide );
var aChildSet = getElementChildren( aAnimationsDefSet[i] );
if( sSlideId && ( aChildSet.length === 1 ) )
{
this.aSlideAnimationsMap[ sSlideId ] = aChildSet[0];
}
}
}
}

}; // end MetaDocument prototype

function MetaSlide( sMetaSlideId, aMetaDoc )
{
this.theDocument = document;
this.id = sMetaSlideId;
this.theMetaDoc = aMetaDoc;

this.element = this.theDocument.getElementById( this.id );
assert( this.element,
'MetaSlide: meta_slide element <' + this.id + '> not found.' );

this.slideId = this.element.getAttributeNS( NSS['ooo'], aOOOAttrSlide );
this.slideElement = this.theDocument.getElementById( this.slideId );
assert( this.slideElement,
'MetaSlide: slide element <' + this.slideId + '> not found.' );

if( this.slideId !== 'dummy_slide' )
this.nSlideNumber = parseInt( this.slideId.substr(2) );
else
this.nSlideNumber= -1;

this.slideName = this.element.getAttributeNS( NSS['ooo'], aOOOAttrDisplayName );

this.aContainerElement = this.slideElement.parentNode;
this.slideContainerId = this.aContainerElement.getAttribute( 'id' );
this.aVisibilityStatusElement = this.aContainerElement.parentNode;

this.pageElement = getElementByClassName( this.slideElement, aPageClassName );
assert( this.pageElement,
'MetaSlide: page element <' + this.slideId + '> not found.' );

this.backgroundElement = getElementByClassName( this.pageElement, 'Background' );
if( this.backgroundElement )
{
this.backgroundId = this.backgroundElement.getAttribute( 'id' );
}

this.initPlaceholderElements();

this.masterPage = this.initMasterPage();

this.bHasCustomBackground = this.initHasCustomBackground();

this.nAreMasterObjectsVisible     = this.initVisibilityProperty( aOOOAttrMasterObjectsVisibility,  VISIBLE );
this.nIsBackgroundVisible         = this.initVisibilityProperty( aOOOAttrBackgroundVisibility,     VISIBLE );
this.nIsPageNumberVisible         = this.initVisibilityProperty( aOOOAttrPageNumberVisibility,     HIDDEN );
this.nIsDateTimeVisible           = this.initVisibilityProperty( aOOOAttrDateTimeVisibility,       VISIBLE );
this.nIsFooterVisible             = this.initVisibilityProperty( aOOOAttrFooterVisibility,         VISIBLE );
this.nIsHeaderVisible             = this.initVisibilityProperty( aOOOAttrHeaderVisibility,         VISIBLE );

this.bIsDateTimeVariable = undefined;

this.aTextFieldContentProviderSet = {};
this.aTextFieldContentProviderSet[aSlideNumberClassName]   = this.initSlideNumberFieldContentProvider();
this.aTextFieldContentProviderSet[aDateTimeClassName]      = this.initDateTimeFieldContentProvider( aOOOAttrDateTimeField );
this.aTextFieldContentProviderSet[aFooterClassName]        = this.initFixedTextFieldContentProvider( aOOOAttrFooterField );
this.aTextFieldContentProviderSet[aHeaderClassName]        = this.initFixedTextFieldContentProvider( aOOOAttrHeaderField );
this.aTextFieldContentProviderSet[aDateClassName]          = this.theMetaDoc.aCurrentDateProvider;
this.aTextFieldContentProviderSet[aTimeClassName]          = this.theMetaDoc.aCurrentTimeProvider;
this.aTextFieldContentProviderSet[aSlideNameClassName]     = new FixedTextProvider( this.slideName );

this.fDuration = this.initSlideDuration();

this.aTransitionHandler = null;
this.bHasTransition = this.initHasTransition() || true;
if( this.bHasTransition )
{
this.aTransitionHandler = new SlideTransition( this.getSlideAnimationsRoot(), this.slideId );
}

this.aSlideAnimationsHandler = new SlideAnimations( aSlideShow.getContext() );
this.aSlideAnimationsHandler.importAnimations( this.getSlideAnimationsRoot() );
this.aSlideAnimationsHandler.parseElements();

if( false && this.aSlideAnimationsHandler.aRootNode )
log( this.aSlideAnimationsHandler.aRootNode.info( true ) );

this.aTextShapeSet = this.collectTextShapes();

this.aHyperlinkSet = this.initHyperlinks();

}

MetaSlide.prototype =
{

show : function()
{
this.updateMasterPageView();
this.aVisibilityStatusElement.setAttribute( 'visibility', 'inherit' );
},

hide : function()
{
this.aVisibilityStatusElement.setAttribute( 'visibility', 'hidden' );
},

updateMasterPageView : function()
{
if( !this.aMasterPageView )
{
this.aMasterPageView = new MasterPageView( this );
this.aMasterPageView.attachToSlide();
}
this.aMasterPageView.update();
},


initPlaceholderElements : function()
{
var aPlaceholderList = getElementsByClassName(this.pageElement , 'PlaceholderText' );
var i = 0;
for( ; i < aPlaceholderList.length; ++i )
{
var aPlaceholderElem = aPlaceholderList[i];
var sContent = aPlaceholderElem.textContent;
if( sContent === '<date>' )
aPlaceholderElem.textContent = new Date().toLocaleDateString();
else if( sContent === '<time>' )
aPlaceholderElem.textContent = new Date().toLocaleTimeString();

function getUrlParameter(name)
{
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
var results = regex.exec(window.location.search);
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
}

function getRandomInt( nMax )
{
return Math.floor( Math.random() * nMax );
}

function isTextFieldElement( aElement ) // eslint-disable-line no-unused-vars
{
var sClassName = aElement.getAttribute( 'class' );
return ( sClassName === aSlideNumberClassName ) ||
( sClassName === aFooterClassName ) ||
( sClassName === aHeaderClassName ) ||
( sClassName === aDateTimeClassName );
}


function DebugPrinter()
{
this.bEnabled = false;
}


DebugPrinter.prototype.on = function()
{
this.bEnabled = true;
};

DebugPrinter.prototype.off = function()
{
this.bEnabled = false;
};

DebugPrinter.prototype.isEnabled = function()
{
return this.bEnabled;
};

DebugPrinter.prototype.print = function( sMessage, nTime )
{
if( this.isEnabled() )
{
var sInfo = 'DBG: ' + sMessage;
if( nTime )
sInfo += ' (at: ' + String( nTime / 1000 ) + 's)';
log( sInfo );
}
};


var aGenericDebugPrinter = new DebugPrinter();
aGenericDebugPrinter.off();
var DBGLOG = bind2( DebugPrinter.prototype.print, aGenericDebugPrinter );

var NAVDBG = new DebugPrinter();
NAVDBG.off();

var ANIMDBG = new DebugPrinter();
ANIMDBG.off();

var aRegisterEventDebugPrinter = new DebugPrinter();
aRegisterEventDebugPrinter.off();

var aTimerEventQueueDebugPrinter = new DebugPrinter();
aTimerEventQueueDebugPrinter.off();

var aEventMultiplexerDebugPrinter = new DebugPrinter();
aEventMultiplexerDebugPrinter.off();

var aNextEffectEventArrayDebugPrinter = new DebugPrinter();
aNextEffectEventArrayDebugPrinter.off();

var aActivityQueueDebugPrinter = new DebugPrinter();
aActivityQueueDebugPrinter.off();

var aAnimatedElementDebugPrinter = new DebugPrinter();
aAnimatedElementDebugPrinter.off();


function MetaDocument()
{
var aMetaDocElem = document.getElementById( aOOOElemMetaSlides );
assert( aMetaDocElem, 'MetaDocument: the svg element with id:' + aOOOElemMetaSlides + 'is not valid.');

this.nNumberOfSlides = parseInt( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrNumberOfSlides ) );
assert( typeof this.nNumberOfSlides == 'number' && this.nNumberOfSlides > 0,
'MetaDocument: number of slides is zero or undefined.' );
this.nStartSlideNumber = parseInt( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrStartSlideNumber ) ) || 0;
var aParmStartSlideNumber = getUrlParameter('StartSlideNumber');
if (aParmStartSlideNumber !== '')
{
this.nStartSlideNumber = parseInt(aParmStartSlideNumber);
}
this.sPageNumberingType = aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrNumberingType ) || 'arabic';
this.bIsUsePositionedChars = ( aMetaDocElem.getAttributeNS( NSS['ooo'], aOOOAttrUsePositionedChars ) === 'true' );

this.aClipPathGroup = getElementByClassName( ROOT_NODE, aClipPathGroupClassName );
assert( this.aClipPathGroup, 'MetaDocument: the clip path group element is not valid.');

this.aPresentationClipPath = document.getElementById( aPresentationClipPathId );
assert( this.aPresentationClipPath,
'MetaDocument: the presentation clip path element element is not valid.');

this.aMetaSlideSet = [];
this.aMasterPageSet = {};
this.aTextFieldHandlerSet = {};
this.aTextFieldContentProviderSet = [];
this.aSlideNumberProvider = new SlideNumberProvider( this.nStartSlideNumber + 1, this.sPageNumberingType );
this.aCurrentDateProvider = new CurrentDateTimeProvider( null, '<date>' );
this.aCurrentTimeProvider = new CurrentDateTimeProvider( null, '<time>' );

this.bIsAnimated = false;
this.aSlideAnimationsMap = {};
this.initSlideAnimationsMap();

this.theMetaDummySlide = new MetaSlide( 'ooo:meta_dummy_slide', this );

for( var i = 0; i < this.nNumberOfSlides; ++i )
{
var sMetaSlideId = aOOOElemMetaSlide + '_' + i;
this.aMetaSlideSet.push( new MetaSlide( sMetaSlideId, this ) );
}
assert( this.aMetaSlideSet.length == this.nNumberOfSlides,
'MetaDocument: aMetaSlideSet.length != nNumberOfSlides.' );
}

MetaDocument.prototype =
{

getCurrentSlide : function()
{
return this.aMetaSlideSet[nCurSlide];
},

setCurrentSlide : function( nSlideIndex )
{
if( nSlideIndex >= 0 &&  nSlideIndex < this.nNumberOfSlides )
{
if( nCurSlide !== undefined )
this.aMetaSlideSet[nCurSlide].hide();
this.aMetaSlideSet[nSlideIndex].show();
nCurSlide = nSlideIndex;
}
var width = parseInt( aSVGRectElem.getAttribute( 'width' ) );
var height = parseInt( aSVGRectElem.getAttribute( 'height' ) );

this.left = x;
this.right = x + width;
this.top = y;
this.bottom = y + height;
}

function getKeyByValue(aObj, value) {
for(var key in aObj) {
if(aObj[key] == value)
return key;
}
return null;
}

function log( message )
{
if( typeof console == 'object' )
{
console.log( message );
}
else if( typeof opera == 'object' )
{
opera.postError( message );
}
else if( typeof java == 'object' && typeof java.lang == 'object' )
{
java.lang.System.out.println( message );
}
}

function getNSAttribute( sNSPrefix, aElem, sAttrName )
{
if( !aElem ) return null;
if( 'getAttributeNS' in aElem )
{
return aElem.getAttributeNS( NSS[sNSPrefix], sAttrName );
}
else
{
return aElem.getAttribute( sNSPrefix + ':' + sAttrName );
}
}

function getOOOAttribute( aElem, sAttrName )
{
return getNSAttribute( 'ooo', aElem, sAttrName );
}

function setNSAttribute( sNSPrefix, aElem, sAttrName, aValue )
{
if( !aElem ) return false;
if( 'setAttributeNS' in aElem )
{
aElem.setAttributeNS( NSS[sNSPrefix], sAttrName, aValue );
return true;
}
else
{
aElem.setAttribute(sNSPrefix + ':' + sAttrName, aValue );
return true;
}
}

function getElementsByClassName( aElem, sClassName )
{

var aElementSet = [];
if( 'getElementsByClassName' in aElem )
{
aElementSet = aElem.getElementsByClassName( sClassName );
}
else
{
var aElementSetByClassProperty = getElementsByProperty( aElem, 'class' );
for( var i = 0; i < aElementSetByClassProperty.length; ++i )
{
var sAttrClassName = aElementSetByClassProperty[i].getAttribute( 'class' );
if( sAttrClassName == sClassName )
{
aElementSet.push( aElementSetByClassProperty[i] );
}
}
}
return aElementSet;
}

function getElementByClassName( aElem, sClassName /*, sTagName */)
{
var aElementSet = getElementsByClassName( aElem, sClassName );
if ( aElementSet.length == 1 )
return aElementSet[0];
else
return null;
}

function getClassAttribute(  aElem )
{
if( aElem )
return aElem.getAttribute( 'class' );
return '';
}

function createElementGroup( aParentElement, aElementList, nFrom, nCount, sGroupClass, sGroupId )
{
var nTo = nFrom + nCount;
if( nCount < 1 || aElementList.length < nTo )
{
log( 'createElementGroup: not enough elements available.' );
return;
}
var firstElement = aElementList[nFrom];
if( !firstElement )
{
log( 'createElementGroup: element not found.' );
return;
}
var aGroupElement = document.createElementNS( NSS['svg'], 'g' );
if( sGroupId )
aGroupElement.setAttribute( 'id', sGroupId );
if( sGroupClass )
aGroupElement.setAttribute( 'class', sGroupClass );
aParentElement.insertBefore( aGroupElement, firstElement );
var i = nFrom;
for( ; i < nTo; ++i )
{
aParentElement.removeChild( aElementList[i] );
aGroupElement.appendChild( aElementList[i] );
}
}

function initVisibilityProperty( aElement )
{
var nVisibility = VISIBLE;
var sVisibility = aElement.getAttribute( 'visibility' );
if( sVisibility ) nVisibility = aVisibilityValue[ sVisibility ];
return nVisibility;
}

function getSafeIndex( nIndex, nMin, nMax )
{
if( nIndex < nMin )
return nMin;
else if( nIndex > nMax )
return nMax;
else
return nIndex;
}
var aOOOAttrStartSlideNumber= 'start-slide-number';
var aOOOAttrNumberingType = 'page-numbering-type';
var aOOOAttrListItemNumberingType= 'numbering-type';
var aOOOAttrUsePositionedChars = 'use-positioned-chars';

var aOOOAttrSlide = 'slide';
var aOOOAttrMaster = 'master';
var aOOOAttrDisplayName = 'display-name';
var aOOOAttrSlideDuration = 'slide-duration';
var aOOOAttrHasTransition = 'has-transition';
var aOOOAttrHasCustomBackground = 'has-custom-background';
var aOOOAttrBackgroundVisibility = 'background-visibility';
var aOOOAttrMasterObjectsVisibility = 'master-objects-visibility';
var aOOOAttrPageNumberVisibility = 'page-number-visibility';
var aOOOAttrDateTimeVisibility = 'date-time-visibility';
var aOOOAttrFooterVisibility = 'footer-visibility';
var aOOOAttrHeaderVisibility = 'header-visibility';
var aOOOAttrDateTimeField = 'date-time-field';
var aOOOAttrFooterField = 'footer-field';
var aOOOAttrHeaderField = 'header-field';

var aOOOAttrDateTimeFormat = 'date-time-format';

var aOOOAttrTextAdjust = 'text-adjust';

var aClipPathGroupClassName = 'ClipPathGroup';
var aPageClassName = 'Page';
var aSlideNumberClassName = 'Slide_Number';
var aDateTimeClassName = 'Date/Time';
var aFooterClassName = 'Footer';
var aHeaderClassName = 'Header';
var aDateClassName = 'Date';
var aTimeClassName = 'Time';
var aSlideNameClassName='SlideName';

var NSS = {};
NSS['svg']='http://www.w3.org/2000/svg';
NSS['rdf']='http://www.w3.org/1999/02/22-rdf-syntax-ns#';
NSS['xlink']='http://www.w3.org/1999/xlink';
NSS['xml']='http://www.w3.org/XML/1998/namespace';
NSS['ooo'] = 'http://xml.openoffice.org/svg/export';
NSS['presentation'] = 'http://sun.com/xmlns/staroffice/presentation';
NSS['smil'] = 'http://www.w3.org/2001/SMIL20/';
NSS['anim'] = 'urn:oasis:names:tc:opendocument:xmlns:animation:1.0';

var SLIDE_MODE = 1;
var INDEX_MODE = 2;

var MOUSE_UP = 1;
var MOUSE_DOWN = 2; // eslint-disable-line no-unused-vars
var MOUSE_MOVE = 3; // eslint-disable-line no-unused-vars
var MOUSE_WHEEL = 4;

var LEFT_KEY = 37;          // cursor left keycode
var UP_KEY = 38;            // cursor up keycode
var RIGHT_KEY = 39;         // cursor right keycode
var DOWN_KEY = 40;          // cursor down keycode
var PAGE_UP_KEY = 33;       // page up keycode
var PAGE_DOWN_KEY = 34;     // page down keycode
var HOME_KEY = 36;          // home keycode
var END_KEY = 35;           // end keycode
var ENTER_KEY = 13;
var SPACE_KEY = 32;
var ESCAPE_KEY = 27;
var Q_KEY = 81;

var HIDDEN = 0;
var VISIBLE = 1;
var INHERIT = 2;
var aVisibilityAttributeValue = [ 'hidden', 'visible', 'inherit' ];  // eslint-disable-line no-unused-vars
var aVisibilityValue = { 'hidden' : HIDDEN, 'visible' : VISIBLE, 'inherit' : INHERIT };

var ROOT_NODE = document.getElementsByTagNameNS( NSS['svg'], 'svg' )[0];
var WIDTH = 0;
var HEIGHT = 0;
var INDEX_COLUMNS_DEFAULT = 3;
var INDEX_OFFSET = 0;

var Detect = configureDetectionTools();
var theMetaDoc;
var theSlideIndexPage;
var currentMode = SLIDE_MODE;
var processingEffect = false;
var nCurSlide = undefined;
var bTextHasBeenSelected = false;
var sLastSelectedText = '';


var charCodeDictionary = getDefaultCharCodeDictionary();
var keyCodeDictionary = getDefaultKeyCodeDictionary();

var mouseHandlerDictionary = getDefaultMouseHandlerDictionary();


function object( aObject )
{
var F = function() {};
F.prototype = aObject;
return new F();
}


function extend( aSubType, aSuperType )
{
if (!aSuperType || !aSubType)
{
alert('extend failed, verify dependencies');
}
var OP = Object.prototype;
var sp = aSuperType.prototype;
var rp = object( sp );
aSubType.prototype = rp;

rp.constructor = aSubType;
aSubType.superclass = sp;

if (aSuperType != Object && sp.constructor == OP.constructor)
{
sp.constructor = aSuperType;
}

return aSubType;
}


function instantiate( TemplateClass, BaseType )
{
if( !TemplateClass.instanceSet )
TemplateClass.instanceSet = [];

var nSize = TemplateClass.instanceSet.length;

for( var i = 0; i < nSize; ++i )
{
if( TemplateClass.instanceSet[i].base === BaseType )
return TemplateClass.instanceSet[i].instance;
}

TemplateClass.instanceSet[ nSize ] = {};
TemplateClass.instanceSet[ nSize ].base = BaseType;
TemplateClass.instanceSet[ nSize ].instance = TemplateClass( BaseType );

return TemplateClass.instanceSet[ nSize ].instance;
}


function Rectangle( aSVGRectElem )
{
var x = parseInt( aSVGRectElem.getAttribute( 'x' ) );
var y = parseInt( aSVGRectElem.getAttribute( 'y' ) );
return null;
} else {
this._currentIndex++;
}

this._previousCommand = command;

switch (command) {
case window.SVGPathSeg.PATHSEG_MOVETO_REL:
return new window.SVGPathSegMovetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_MOVETO_ABS:
return new window.SVGPathSegMovetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_REL:
return new window.SVGPathSegLinetoRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_ABS:
return new window.SVGPathSegLinetoAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:
return new window.SVGPathSegLinetoHorizontalRel(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:
return new window.SVGPathSegLinetoHorizontalAbs(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:
return new window.SVGPathSegLinetoVerticalRel(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:
return new window.SVGPathSegLinetoVerticalAbs(owningPathSegList, this._parseNumber());
case window.SVGPathSeg.PATHSEG_CLOSEPATH:
this._skipOptionalSpaces();
return new window.SVGPathSegClosePath(owningPathSegList);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicSmoothRel(owningPathSegList, points.x, points.y, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
var points = {x2: this._parseNumber(), y2: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoCubicSmoothAbs(owningPathSegList, points.x, points.y, points.x2, points.y2);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoQuadraticRel(owningPathSegList, points.x, points.y, points.x1, points.y1);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegCurvetoQuadraticAbs(owningPathSegList, points.x, points.y, points.x1, points.y1);
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:
return new window.SVGPathSegCurvetoQuadraticSmoothRel(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:
return new window.SVGPathSegCurvetoQuadraticSmoothAbs(owningPathSegList, this._parseNumber(), this._parseNumber());
case window.SVGPathSeg.PATHSEG_ARC_REL:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegArcRel(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);
case window.SVGPathSeg.PATHSEG_ARC_ABS:
var points = {x1: this._parseNumber(), y1: this._parseNumber(), arcAngle: this._parseNumber(), arcLarge: this._parseArcFlag(), arcSweep: this._parseArcFlag(), x: this._parseNumber(), y: this._parseNumber()};
return new window.SVGPathSegArcAbs(owningPathSegList, points.x, points.y, points.x1, points.y1, points.arcAngle, points.arcLarge, points.arcSweep);
default:
throw 'Unknown path seg type.'
}
}

var builder = new Builder();
var source = new Source(string);

if (!source.initialCommandIsMoveTo())
return [];
while (source.hasMoreData()) {
var pathSeg = source.parseSegment();
if (!pathSeg)
return [];
builder.appendSegment(pathSeg);
}

return builder.pathSegList;
}
}
}());

/*****
* @svgpathend
*
*  The above code is a derivative work of some part of the SVGPathSeg API.
*
*  This API is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from
*  SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec
*  changes which were implemented in Firefox 43 and Chrome 46.
*
*  @source https://github.com/progers/pathseg
*/


/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code  of
* this page included between the '@libreofficestart' and the '@libreofficeend'
* notes.
*/

/*****  ******************************************************************
*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
*   Licensed to the Apache Software Foundation (ASF) under one or more
*   contributor license agreements. See the NOTICE file distributed
*   with this work for additional information regarding copyright
*   ownership. The ASF licenses this file to you under the Apache
*   License, Version 2.0 (the 'License'); you may not use this file
*   except in compliance with the License. You may obtain a copy of
*   the License at http://www.apache.org/licenses/LICENSE-2.0 .
*
************************************************************************/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code  of
* this page included between the '@libreofficestart' and the '@libreofficeend'
* notes.
*/


/*****
* @libreofficestart
*
* Several parts of the following code are the result of the porting,
* started on August 2011, of the C++ code included in the source
* files placed under the folder '/slideshow/source' and
* sub-folders. This got later rebased onto the AL2-licensed versions
* of those files in early 2013.
* @source https://cgit.freedesktop.org/libreoffice/core/tree/slideshow/source
*
*/


window.onload = init;


var aOOOElemMetaSlides = 'ooo:meta_slides';
var aOOOElemMetaSlide = 'ooo:meta_slide';
var aOOOElemTextField = 'ooo:text_field';
var aPresentationClipPathId = 'presentation_clip_path';
var aPresentationClipPathShrinkId = 'presentation_clip_path_shrink';

var aOOOAttrNumberOfSlides = 'number-of-slides';
case 'q':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL;
case 'A':
return window.SVGPathSeg.PATHSEG_ARC_ABS;
case 'a':
return window.SVGPathSeg.PATHSEG_ARC_REL;
case 'H':
return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS;
case 'h':
return window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL;
case 'V':
return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS;
case 'v':
return window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL;
case 'S':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS;
case 's':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL;
case 'T':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS;
case 't':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL;
default:
return window.SVGPathSeg.PATHSEG_UNKNOWN;
}
}

Source.prototype._nextCommandHelper = function(lookahead, previousCommand) {
if ((lookahead == '+' || lookahead == '-' || lookahead == '.' || (lookahead >= '0' && lookahead <= '9')) && previousCommand != window.SVGPathSeg.PATHSEG_CLOSEPATH) {
if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_ABS)
return window.SVGPathSeg.PATHSEG_LINETO_ABS;
if (previousCommand == window.SVGPathSeg.PATHSEG_MOVETO_REL)
return window.SVGPathSeg.PATHSEG_LINETO_REL;
return previousCommand;
}
return window.SVGPathSeg.PATHSEG_UNKNOWN;
}

Source.prototype.initialCommandIsMoveTo = function() {
if (!this.hasMoreData())
return true;
var command = this.peekSegmentType();
return command == window.SVGPathSeg.PATHSEG_MOVETO_ABS || command == window.SVGPathSeg.PATHSEG_MOVETO_REL;
}

Source.prototype._parseNumber = function() {
var exponent = 0;
var integer = 0;
var frac = 1;
var decimal = 0;
var sign = 1;
var expsign = 1;

var startIndex = this._currentIndex;

this._skipOptionalSpaces();

if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '+')
this._currentIndex++;
else if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '-') {
this._currentIndex++;
sign = -1;
}

if (this._currentIndex == this._endIndex || ((this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9') && this._string.charAt(this._currentIndex) != '.'))
return undefined;

var startIntPartIndex = this._currentIndex;
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9')
this._currentIndex++; // Advance to first non-digit.

if (this._currentIndex != startIntPartIndex) {
var scanIntPartIndex = this._currentIndex - 1;
var multiplier = 1;
while (scanIntPartIndex >= startIntPartIndex) {
integer += multiplier * (this._string.charAt(scanIntPartIndex--) - '0');
multiplier *= 10;
}
}

if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == '.') {
this._currentIndex++;

if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9')
return undefined;
while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') {
frac *= 10;
decimal += (this._string.charAt(this._currentIndex) - '0') / frac;
this._currentIndex += 1;
}
}

if (this._currentIndex != startIndex && this._currentIndex + 1 < this._endIndex && (this._string.charAt(this._currentIndex) == 'e' || this._string.charAt(this._currentIndex) == 'E') && (this._string.charAt(this._currentIndex + 1) != 'x' && this._string.charAt(this._currentIndex + 1) != 'm')) {
this._currentIndex++;

if (this._string.charAt(this._currentIndex) == '+') {
this._currentIndex++;
} else if (this._string.charAt(this._currentIndex) == '-') {
this._currentIndex++;
expsign = -1;
}

if (this._currentIndex >= this._endIndex || this._string.charAt(this._currentIndex) < '0' || this._string.charAt(this._currentIndex) > '9')
return undefined;

while (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) >= '0' && this._string.charAt(this._currentIndex) <= '9') {
exponent *= 10;
exponent += (this._string.charAt(this._currentIndex) - '0');
this._currentIndex++;
}
}

var number = integer + decimal;
number *= sign;

if (exponent)
number *= Math.pow(10, expsign * exponent);

if (startIndex == this._currentIndex)
return undefined;

this._skipOptionalSpacesOrDelimiter();

return number;
}

Source.prototype._parseArcFlag = function() {
if (this._currentIndex >= this._endIndex)
return undefined;
var flag = false;
var flagChar = this._string.charAt(this._currentIndex++);
if (flagChar == '0')
flag = false;
else if (flagChar == '1')
flag = true;
else
return undefined;

this._skipOptionalSpacesOrDelimiter();
return flag;
}

Source.prototype.parseSegment = function() {
var lookahead = this._string[this._currentIndex];
var command = this._pathSegTypeFromChar(lookahead);
if (command == window.SVGPathSeg.PATHSEG_UNKNOWN) {
if (this._previousCommand == window.SVGPathSeg.PATHSEG_UNKNOWN)
return null;
command = this._nextCommandHelper(lookahead, this._previousCommand);
if (command == window.SVGPathSeg.PATHSEG_UNKNOWN)
}
}

this._writeListToPath();
};

window.SVGPathSegList.prototype.changeOrientation = function() {
this._checkPathSynchronizedToList();

var aPathSegList = this._list;
var nLength = aPathSegList.length;
if( nLength == 0 ) return;

var nCurrentX = 0;
var nCurrentY = 0;

var aPathSeg = aPathSegList[0];
if( aPathSeg.pathSegTypeAsLetter == 'M' )
{
nCurrentX = aPathSeg.x;
nCurrentY = aPathSeg.y;
aPathSegList.shift();
--nLength;
}

var i;
for( i = 0; i < nLength; ++i )
{
aPathSeg = aPathSegList[i];
switch( aPathSeg.pathSegTypeAsLetter )
{
case 'C':
var nX = aPathSeg._x1;
aPathSeg._x1 = aPathSeg._x2;
aPathSeg._x2 = nX;
var nY = aPathSeg._y1;
aPathSeg._y1 = aPathSeg._y2;
aPathSeg._y2 = nY;
case 'M':
case 'L':
case 'Q':
var aPoint = { x: aPathSeg._x, y: aPathSeg._y };
aPathSeg._x = nCurrentX;
aPathSeg._y = nCurrentY;
nCurrentX = aPoint.x;
nCurrentY = aPoint.y;
break;
default:
log( 'SVGPathSegList.changeOrientation: unexpected path segment type: '
+ aPathSeg.pathSegTypeAsLetter );
}

}

aPathSegList.reverse();

var aMovePathSeg = new window.SVGPathSegMovetoAbs( this, nCurrentX, nCurrentY );
aPathSegList.unshift( aMovePathSeg );

this._writeListToPath();
};

window.SVGPathSegList._pathSegArrayAsString = function(pathSegArray) {
var string = '';
var first = true;
pathSegArray.forEach(function(pathSeg) {
if (first) {
first = false;
string += pathSeg._asPathString();
} else {
string += ' ' + pathSeg._asPathString();
}
});
return string;
}

window.SVGPathSegList.prototype._parsePath = function(string) {
if (!string || string.length == 0)
return [];

var owningPathSegList = this;

var Builder = function() {
this.pathSegList = [];
}

Builder.prototype.appendSegment = function(pathSeg) {
this.pathSegList.push(pathSeg);
}

var Source = function(string) {
this._string = string;
this._currentIndex = 0;
this._endIndex = this._string.length;
this._previousCommand = window.SVGPathSeg.PATHSEG_UNKNOWN;

this._skipOptionalSpaces();
}

Source.prototype._isCurrentSpace = function() {
var character = this._string[this._currentIndex];
return character <= ' ' && (character == ' ' || character == '\n' || character == '\t' || character == '\r' || character == '\f');
}

Source.prototype._skipOptionalSpaces = function() {
while (this._currentIndex < this._endIndex && this._isCurrentSpace())
this._currentIndex++;
return this._currentIndex < this._endIndex;
}

Source.prototype._skipOptionalSpacesOrDelimiter = function() {
if (this._currentIndex < this._endIndex && !this._isCurrentSpace() && this._string.charAt(this._currentIndex) != ',')
return false;
if (this._skipOptionalSpaces()) {
if (this._currentIndex < this._endIndex && this._string.charAt(this._currentIndex) == ',') {
this._currentIndex++;
this._skipOptionalSpaces();
}
}
return this._currentIndex < this._endIndex;
}

Source.prototype.hasMoreData = function() {
return this._currentIndex < this._endIndex;
}

Source.prototype.peekSegmentType = function() {
var lookahead = this._string[this._currentIndex];
return this._pathSegTypeFromChar(lookahead);
}

Source.prototype._pathSegTypeFromChar = function(lookahead) {
switch (lookahead) {
case 'Z':
case 'z':
return window.SVGPathSeg.PATHSEG_CLOSEPATH;
case 'M':
return window.SVGPathSeg.PATHSEG_MOVETO_ABS;
case 'm':
return window.SVGPathSeg.PATHSEG_MOVETO_REL;
case 'L':
return window.SVGPathSeg.PATHSEG_LINETO_ABS;
case 'l':
return window.SVGPathSeg.PATHSEG_LINETO_REL;
case 'C':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS;
case 'c':
return window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL;
case 'Q':
return window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS;
return this._list.length;
},
enumerable: true
});

Object.defineProperty(window.SVGPathElement.prototype, 'pathSegList', {
get: function() {
if (!this._pathSegList)
this._pathSegList = new window.SVGPathSegList(this);
return this._pathSegList;
},
enumerable: true
});
Object.defineProperty(window.SVGPathElement.prototype, 'normalizedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });
Object.defineProperty(window.SVGPathElement.prototype, 'animatedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });
Object.defineProperty(window.SVGPathElement.prototype, 'animatedNormalizedPathSegList', { get: function() { return this.pathSegList; }, enumerable: true });

window.SVGPathSegList.prototype._checkPathSynchronizedToList = function() {
this._updateListFromPathMutations(this._pathElementMutationObserver.takeRecords());
}

window.SVGPathSegList.prototype._updateListFromPathMutations = function(mutationRecords) {
if (!this._pathElement)
return;
var hasPathMutations = false;
mutationRecords.forEach(function(record) {
if (record.attributeName == 'd')
hasPathMutations = true;
});
if (hasPathMutations)
this._list = this._parsePath(this._pathElement.getAttribute('d'));
}

window.SVGPathSegList.prototype._writeListToPath = function() {
this._pathElementMutationObserver.disconnect();
this._pathElement.setAttribute('d', window.SVGPathSegList._pathSegArrayAsString(this._list));
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);
}

window.SVGPathSegList.prototype.segmentChanged = function(pathSeg) {
this._writeListToPath();
}

window.SVGPathSegList.prototype.clear = function() {
this._checkPathSynchronizedToList();

this._list.forEach(function(pathSeg) {
pathSeg._owningPathSegList = null;
});
this._list = [];
this._writeListToPath();
}

window.SVGPathSegList.prototype.initialize = function(newItem) {
this._checkPathSynchronizedToList();

this._list = [newItem];
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype._checkValidIndex = function(index) {
if (isNaN(index) || index < 0 || index >= this.numberOfItems)
throw 'INDEX_SIZE_ERR';
}

window.SVGPathSegList.prototype.getItem = function(index) {
this._checkPathSynchronizedToList();

this._checkValidIndex(index);
return this._list[index];
}

window.SVGPathSegList.prototype.insertItemBefore = function(newItem, index) {
this._checkPathSynchronizedToList();

if (index > this.numberOfItems)
index = this.numberOfItems;
if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._list.splice(index, 0, newItem);
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype.replaceItem = function(newItem, index) {
this._checkPathSynchronizedToList();

if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._checkValidIndex(index);
this._list[index] = newItem;
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
}

window.SVGPathSegList.prototype.removeItem = function(index) {
this._checkPathSynchronizedToList();

this._checkValidIndex(index);
var item = this._list[index];
this._list.splice(index, 1);
this._writeListToPath();
return item;
}

window.SVGPathSegList.prototype.appendItem = function(newItem) {
this._checkPathSynchronizedToList();

if (newItem._owningPathSegList) {
newItem = newItem.clone();
}
this._list.push(newItem);
newItem._owningPathSegList = this;
this._writeListToPath();
return newItem;
};

window.SVGPathSegList.prototype.matrixTransform = function(aSVGMatrix) {
this._checkPathSynchronizedToList();

var nLength = this._list.length;
for( var i = 0; i < nLength; ++i )
{
var nX;
var aPathSeg = this._list[i];
switch( aPathSeg.pathSegTypeAsLetter )
{
case 'C':
nX = aPathSeg._x2;
aPathSeg._x2 = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y2 + aSVGMatrix.e;
aPathSeg._y2 = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y2 + aSVGMatrix.f;
case 'Q':
nX = aPathSeg._x1;
aPathSeg._x1 = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y1 + aSVGMatrix.e;
aPathSeg._y1 = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y1 + aSVGMatrix.f;
case 'M':
case 'L':
nX = aPathSeg._x;
aPathSeg._x = aSVGMatrix.a * nX + aSVGMatrix.c * aPathSeg._y + aSVGMatrix.e;
aPathSeg._y = aSVGMatrix.b * nX + aSVGMatrix.d * aPathSeg._y + aSVGMatrix.f;
break;
default:
log( 'SVGPathSeg.matrixTransform: unexpected path segment type: '
+ aPathSeg.pathSegTypeAsLetter );
this._x = x;
}
window.SVGPathSegLinetoHorizontalRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoHorizontalRel.prototype.toString = function() { return '[object SVGPathSegLinetoHorizontalRel]'; }
window.SVGPathSegLinetoHorizontalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x; }
window.SVGPathSegLinetoHorizontalRel.prototype.clone = function() { return new window.SVGPathSegLinetoHorizontalRel(undefined, this._x); }
Object.defineProperty(window.SVGPathSegLinetoHorizontalRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoVerticalAbs = function(owningPathSegList, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS, 'V', owningPathSegList);
this._y = y;
}
window.SVGPathSegLinetoVerticalAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoVerticalAbs.prototype.toString = function() { return '[object SVGPathSegLinetoVerticalAbs]'; }
window.SVGPathSegLinetoVerticalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._y; }
window.SVGPathSegLinetoVerticalAbs.prototype.clone = function() { return new window.SVGPathSegLinetoVerticalAbs(undefined, this._y); }
Object.defineProperty(window.SVGPathSegLinetoVerticalAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoVerticalRel = function(owningPathSegList, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL, 'v', owningPathSegList);
this._y = y;
}
window.SVGPathSegLinetoVerticalRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoVerticalRel.prototype.toString = function() { return '[object SVGPathSegLinetoVerticalRel]'; }
window.SVGPathSegLinetoVerticalRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._y; }
window.SVGPathSegLinetoVerticalRel.prototype.clone = function() { return new window.SVGPathSegLinetoVerticalRel(undefined, this._y); }
Object.defineProperty(window.SVGPathSegLinetoVerticalRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicSmoothAbs = function(owningPathSegList, x, y, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS, 'S', owningPathSegList);
this._x = x;
this._y = y;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicSmoothAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicSmoothAbs]'; }
window.SVGPathSegCurvetoCubicSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicSmoothAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, this._x, this._y, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothAbs.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicSmoothRel = function(owningPathSegList, x, y, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL, 's', owningPathSegList);
this._x = x;
this._y = y;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicSmoothRel.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicSmoothRel]'; }
window.SVGPathSegCurvetoCubicSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicSmoothRel.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, this._x, this._y, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicSmoothRel.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticSmoothAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS, 'T', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticSmoothAbs]'; }
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticSmoothRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, 't', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticSmoothRel]'; }
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticSmoothRel.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticSmoothRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathElement.prototype.createSVGPathSegClosePath = function() { return new window.SVGPathSegClosePath(undefined); }
window.SVGPathElement.prototype.createSVGPathSegMovetoAbs = function(x, y) { return new window.SVGPathSegMovetoAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegMovetoRel = function(x, y) { return new window.SVGPathSegMovetoRel(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoAbs = function(x, y) { return new window.SVGPathSegLinetoAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoRel = function(x, y) { return new window.SVGPathSegLinetoRel(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicAbs = function(x, y, x1, y1, x2, y2) { return new window.SVGPathSegCurvetoCubicAbs(undefined, x, y, x1, y1, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicRel = function(x, y, x1, y1, x2, y2) { return new window.SVGPathSegCurvetoCubicRel(undefined, x, y, x1, y1, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticAbs = function(x, y, x1, y1) { return new window.SVGPathSegCurvetoQuadraticAbs(undefined, x, y, x1, y1); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticRel = function(x, y, x1, y1) { return new window.SVGPathSegCurvetoQuadraticRel(undefined, x, y, x1, y1); }
window.SVGPathElement.prototype.createSVGPathSegArcAbs = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new window.SVGPathSegArcAbs(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }
window.SVGPathElement.prototype.createSVGPathSegArcRel = function(x, y, r1, r2, angle, largeArcFlag, sweepFlag) { return new window.SVGPathSegArcRel(undefined, x, y, r1, r2, angle, largeArcFlag, sweepFlag); }
window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalAbs = function(x) { return new window.SVGPathSegLinetoHorizontalAbs(undefined, x); }
window.SVGPathElement.prototype.createSVGPathSegLinetoHorizontalRel = function(x) { return new window.SVGPathSegLinetoHorizontalRel(undefined, x); }
window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalAbs = function(y) { return new window.SVGPathSegLinetoVerticalAbs(undefined, y); }
window.SVGPathElement.prototype.createSVGPathSegLinetoVerticalRel = function(y) { return new window.SVGPathSegLinetoVerticalRel(undefined, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothAbs = function(x, y, x2, y2) { return new window.SVGPathSegCurvetoCubicSmoothAbs(undefined, x, y, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoCubicSmoothRel = function(x, y, x2, y2) { return new window.SVGPathSegCurvetoCubicSmoothRel(undefined, x, y, x2, y2); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothAbs = function(x, y) { return new window.SVGPathSegCurvetoQuadraticSmoothAbs(undefined, x, y); }
window.SVGPathElement.prototype.createSVGPathSegCurvetoQuadraticSmoothRel = function(x, y) { return new window.SVGPathSegCurvetoQuadraticSmoothRel(undefined, x, y); }

if (!('getPathSegAtLength' in window.SVGPathElement.prototype)) {
window.SVGPathElement.prototype.getPathSegAtLength = function(distance) {
if (distance === undefined || !isFinite(distance))
throw 'Invalid arguments.';

var measurementElement = document.createElementNS('http://www.w3.org/2000/svg', 'path');
measurementElement.setAttribute('d', this.getAttribute('d'));
var lastPathSegment = measurementElement.pathSegList.numberOfItems - 1;

if (lastPathSegment <= 0)
return 0;

do {
measurementElement.pathSegList.removeItem(lastPathSegment);
if (distance > measurementElement.getTotalLength())
break;
lastPathSegment--;
} while (lastPathSegment > 0);
return lastPathSegment;
}
}
}

if (!('SVGPathSegList' in window) || !('appendItem' in window.SVGPathSegList.prototype)) {
window.SVGPathSegList = function(pathElement) {
this._pathElement = pathElement;
this._list = this._parsePath(this._pathElement.getAttribute('d'));

this._mutationObserverConfig = { 'attributes': true, 'attributeFilter': ['d'] };
this._pathElementMutationObserver = new MutationObserver(this._updateListFromPathMutations.bind(this));
this._pathElementMutationObserver.observe(this._pathElement, this._mutationObserverConfig);
}

window.SVGPathSegList.prototype.classname = 'SVGPathSegList';

Object.defineProperty(window.SVGPathSegList.prototype, 'numberOfItems', {
get: function() {
this._checkPathSynchronizedToList();
return this._list.length;
},
enumerable: true
});

Object.defineProperty(window.SVGPathSegList.prototype, 'length', {
get: function() {
this._checkPathSynchronizedToList();
this._x = x;
this._y = y;
}
window.SVGPathSegLinetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoAbs.prototype.toString = function() { return '[object SVGPathSegLinetoAbs]'; }
window.SVGPathSegLinetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegLinetoAbs.prototype.clone = function() { return new window.SVGPathSegLinetoAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegLinetoAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_REL, 'l', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegLinetoRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoRel.prototype.toString = function() { return '[object SVGPathSegLinetoRel]'; }
window.SVGPathSegLinetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegLinetoRel.prototype.clone = function() { return new window.SVGPathSegLinetoRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegLinetoRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicAbs = function(owningPathSegList, x, y, x1, y1, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS, 'C', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicAbs]'; }
window.SVGPathSegCurvetoCubicAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicAbs(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicAbs.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoCubicRel = function(owningPathSegList, x, y, x1, y1, x2, y2) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL, 'c', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
this._x2 = x2;
this._y2 = y2;
}
window.SVGPathSegCurvetoCubicRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoCubicRel.prototype.toString = function() { return '[object SVGPathSegCurvetoCubicRel]'; }
window.SVGPathSegCurvetoCubicRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x2 + ' ' + this._y2 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoCubicRel.prototype.clone = function() { return new window.SVGPathSegCurvetoCubicRel(undefined, this._x, this._y, this._x1, this._y1, this._x2, this._y2); }
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'x2', { get: function() { return this._x2; }, set: function(x2) { this._x2 = x2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoCubicRel.prototype, 'y2', { get: function() { return this._y2; }, set: function(y2) { this._y2 = y2; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticAbs = function(owningPathSegList, x, y, x1, y1) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS, 'Q', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
}
window.SVGPathSegCurvetoQuadraticAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticAbs.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticAbs]'; }
window.SVGPathSegCurvetoQuadraticAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticAbs.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticAbs(undefined, this._x, this._y, this._x1, this._y1); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticAbs.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegCurvetoQuadraticRel = function(owningPathSegList, x, y, x1, y1) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL, 'q', owningPathSegList);
this._x = x;
this._y = y;
this._x1 = x1;
this._y1 = y1;
}
window.SVGPathSegCurvetoQuadraticRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegCurvetoQuadraticRel.prototype.toString = function() { return '[object SVGPathSegCurvetoQuadraticRel]'; }
window.SVGPathSegCurvetoQuadraticRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x1 + ' ' + this._y1 + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegCurvetoQuadraticRel.prototype.clone = function() { return new window.SVGPathSegCurvetoQuadraticRel(undefined, this._x, this._y, this._x1, this._y1); }
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'x1', { get: function() { return this._x1; }, set: function(x1) { this._x1 = x1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegCurvetoQuadraticRel.prototype, 'y1', { get: function() { return this._y1; }, set: function(y1) { this._y1 = y1; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegArcAbs = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_ABS, 'A', owningPathSegList);
this._x = x;
this._y = y;
this._r1 = r1;
this._r2 = r2;
this._angle = angle;
this._largeArcFlag = largeArcFlag;
this._sweepFlag = sweepFlag;
}
window.SVGPathSegArcAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegArcAbs.prototype.toString = function() { return '[object SVGPathSegArcAbs]'; }
window.SVGPathSegArcAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegArcAbs.prototype.clone = function() { return new window.SVGPathSegArcAbs(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r1', { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'r2', { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'angle', { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'largeArcFlag', { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcAbs.prototype, 'sweepFlag', { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegArcRel = function(owningPathSegList, x, y, r1, r2, angle, largeArcFlag, sweepFlag) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_ARC_REL, 'a', owningPathSegList);
this._x = x;
this._y = y;
this._r1 = r1;
this._r2 = r2;
this._angle = angle;
this._largeArcFlag = largeArcFlag;
this._sweepFlag = sweepFlag;
}
window.SVGPathSegArcRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegArcRel.prototype.toString = function() { return '[object SVGPathSegArcRel]'; }
window.SVGPathSegArcRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._r1 + ' ' + this._r2 + ' ' + this._angle + ' ' + (this._largeArcFlag ? '1' : '0') + ' ' + (this._sweepFlag ? '1' : '0') + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegArcRel.prototype.clone = function() { return new window.SVGPathSegArcRel(undefined, this._x, this._y, this._r1, this._r2, this._angle, this._largeArcFlag, this._sweepFlag); }
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r1', { get: function() { return this._r1; }, set: function(r1) { this._r1 = r1; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'r2', { get: function() { return this._r2; }, set: function(r2) { this._r2 = r2; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'angle', { get: function() { return this._angle; }, set: function(angle) { this._angle = angle; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'largeArcFlag', { get: function() { return this._largeArcFlag; }, set: function(largeArcFlag) { this._largeArcFlag = largeArcFlag; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegArcRel.prototype, 'sweepFlag', { get: function() { return this._sweepFlag; }, set: function(sweepFlag) { this._sweepFlag = sweepFlag; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoHorizontalAbs = function(owningPathSegList, x) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS, 'H', owningPathSegList);
this._x = x;
}
window.SVGPathSegLinetoHorizontalAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegLinetoHorizontalAbs.prototype.toString = function() { return '[object SVGPathSegLinetoHorizontalAbs]'; }
window.SVGPathSegLinetoHorizontalAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x; }
window.SVGPathSegLinetoHorizontalAbs.prototype.clone = function() { return new window.SVGPathSegLinetoHorizontalAbs(undefined, this._x); }
Object.defineProperty(window.SVGPathSegLinetoHorizontalAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoHorizontalRel = function(owningPathSegList, x) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL, 'h', owningPathSegList);
isAndroid: has('android'),

isWii: has('wii'),

isQuirks: has('quirks'),

isAir: has('air')
};
return detect;
}

/*****
* @dojoend
*
*  The above code is a derivative work of some part of the dojox.gfx library.
*  @source http://svn.dojotoolkit.org/src/dojox/trunk/_base/sniff.js
*/

/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* file included between the '@svgpathstart' and the '@svgpathend' notes.
*/

/*****  **********************************************************************
*
*   Copyright 2015 The Chromium Authors. All rights reserved.
*
*   The Chromium Authors can be found at
*   http://src.chromium.org/svn/trunk/src/AUTHORS
*
*   Redistribution and use in source and binary forms, with or without
*   modification, are permitted provided that the following conditions are
*   met:
*
*   * Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
*   * Redistributions in binary form must reproduce the above
*   copyright notice, this list of conditions and the following disclaimer
*   in the documentation and/or other materials provided with the
*   distribution.
*   * Neither the name of Google Inc. nor the names of its
*   contributors may be used to endorse or promote products derived from
*   this software without specific prior written permission.
*
*   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
*   'AS IS' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
*   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
*   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
*   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
*   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
*   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
*   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
*   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* file included between the '@svgpathstart' and the '@svgpathend' notes.
*/


/*****
* @svgpathstart
*
*  The following code is a derivative work of some part of the SVGPathSeg API.
*
*  This API is a drop-in replacement for the SVGPathSeg and SVGPathSegList APIs that were removed from
*  SVG2 (https://lists.w3.org/Archives/Public/www-svg/2015Jun/0044.html), including the latest spec
*  changes which were implemented in Firefox 43 and Chrome 46.
*
*  @source https://github.com/progers/pathseg
*/

(function() { 'use strict';
if (!('SVGPathSeg' in window)) {
window.SVGPathSeg = function(type, typeAsLetter, owningPathSegList) {
this.pathSegType = type;
this.pathSegTypeAsLetter = typeAsLetter;
this._owningPathSegList = owningPathSegList;
}

window.SVGPathSeg.prototype.classname = 'SVGPathSeg';

window.SVGPathSeg.PATHSEG_UNKNOWN = 0;
window.SVGPathSeg.PATHSEG_CLOSEPATH = 1;
window.SVGPathSeg.PATHSEG_MOVETO_ABS = 2;
window.SVGPathSeg.PATHSEG_MOVETO_REL = 3;
window.SVGPathSeg.PATHSEG_LINETO_ABS = 4;
window.SVGPathSeg.PATHSEG_LINETO_REL = 5;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS = 6;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL = 7;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS = 8;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL = 9;
window.SVGPathSeg.PATHSEG_ARC_ABS = 10;
window.SVGPathSeg.PATHSEG_ARC_REL = 11;
window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS = 12;
window.SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL = 13;
window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS = 14;
window.SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL = 15;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16;
window.SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18;
window.SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19;

window.SVGPathSeg.prototype._segmentChanged = function() {
if (this._owningPathSegList)
this._owningPathSegList.segmentChanged(this);
}

window.SVGPathSegClosePath = function(owningPathSegList) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_CLOSEPATH, 'z', owningPathSegList);
}
window.SVGPathSegClosePath.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegClosePath.prototype.toString = function() { return '[object SVGPathSegClosePath]'; }
window.SVGPathSegClosePath.prototype._asPathString = function() { return this.pathSegTypeAsLetter; }
window.SVGPathSegClosePath.prototype.clone = function() { return new window.SVGPathSegClosePath(undefined); }

window.SVGPathSegMovetoAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_ABS, 'M', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegMovetoAbs.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegMovetoAbs.prototype.toString = function() { return '[object SVGPathSegMovetoAbs]'; }
window.SVGPathSegMovetoAbs.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegMovetoAbs.prototype.clone = function() { return new window.SVGPathSegMovetoAbs(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegMovetoAbs.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegMovetoRel = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_MOVETO_REL, 'm', owningPathSegList);
this._x = x;
this._y = y;
}
window.SVGPathSegMovetoRel.prototype = Object.create(window.SVGPathSeg.prototype);
window.SVGPathSegMovetoRel.prototype.toString = function() { return '[object SVGPathSegMovetoRel]'; }
window.SVGPathSegMovetoRel.prototype._asPathString = function() { return this.pathSegTypeAsLetter + ' ' + this._x + ' ' + this._y; }
window.SVGPathSegMovetoRel.prototype.clone = function() { return new window.SVGPathSegMovetoRel(undefined, this._x, this._y); }
Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'x', { get: function() { return this._x; }, set: function(x) { this._x = x; this._segmentChanged(); }, enumerable: true });
Object.defineProperty(window.SVGPathSegMovetoRel.prototype, 'y', { get: function() { return this._y; }, set: function(y) { this._y = y; this._segmentChanged(); }, enumerable: true });

window.SVGPathSegLinetoAbs = function(owningPathSegList, x, y) {
window.SVGPathSeg.call(this, window.SVGPathSeg.PATHSEG_LINETO_ABS, 'L', owningPathSegList);
}


/*****
* @jessyinkend
*
*  The above code is a derivative work of some parts of the JessyInk project.
*  @source http://code.google.com/p/jessyink/
*/


/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* page included between the '@dojostart' and the '@dojoend' notes.
*/

/*****  **********************************************************************
*
*  The 'New' BSD License:
*  **********************
*  Copyright (c) 2005-2012, The Dojo Foundation
*  All rights reserved.
*
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions are met:
*
*    * Redistributions of source code must retain the above copyright notice,
*      this list of conditions and the following disclaimer.
*    * Redistributions in binary form must reproduce the above copyright notice,
*      this list of conditions and the following disclaimer in the documentation
*      and/or other materials provided with the distribution.
*    * Neither the name of the Dojo Foundation nor the names of its contributors
*      may be used to endorse or promote products derived from this software
*      without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
*  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
*  DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
*  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
*  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
*  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
*  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
*  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
*  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/


/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* page included between the '@dojostart' and the '@dojoend' notes.
*/


/*****
* @dojostart
*
*  The following code is a derivative work of some part of the dojox.gfx library.
*  @source http://svn.dojotoolkit.org/src/dojox/trunk/_base/sniff.js
*/

function has( name )
{
return has.cache[name];
}

has.cache = {};

has.add = function( name, test )
{
has.cache[name] = test;
};

function configureDetectionTools()
{
if( !navigator )
{
log( 'error: configureDetectionTools: configuration failed' );
return null;
}

var n = navigator,
dua = n.userAgent,
dav = n.appVersion,
tv = parseFloat(dav);

has.add('air', dua.indexOf('AdobeAIR') >= 0);
has.add('khtml', dav.indexOf('Konqueror') >= 0 ? tv : undefined);
has.add('webkit', parseFloat(dua.split('WebKit/')[1]) || undefined);
has.add('chrome', parseFloat(dua.split('Chrome/')[1]) || undefined);
has.add('safari', dav.indexOf('Safari')>=0 && !has('chrome') ? parseFloat(dav.split('Version/')[1]) : undefined);
has.add('mac', dav.indexOf('Macintosh') >= 0);
has.add('quirks', document.compatMode == 'BackCompat');
has.add('ios', /iPhone|iPod|iPad/.test(dua));
has.add('android', parseFloat(dua.split('Android ')[1]) || undefined);

if(!has('webkit')){
if(dua.indexOf('Opera') >= 0){
has.add('opera', tv >= 9.8 ? parseFloat(dua.split('Version/')[1]) || tv : tv);
}

if(dua.indexOf('Gecko') >= 0 && !has('khtml') && !has('webkit')){
has.add('mozilla', tv);
}
if(has('mozilla')){
has.add('ff', parseFloat(dua.split('Firefox/')[1] || dua.split('Minefield/')[1]) || undefined);
}

if(document.all && !has('opera')){
var isIE = parseFloat(dav.split('MSIE ')[1]) || undefined;

var mode = document.documentMode;
if(mode && mode != 5 && Math.floor(isIE) != mode){
isIE = mode;
}

has.add('ie', isIE);
}

has.add('wii', typeof opera != 'undefined' && opera.wiiremote);
}

var detect =
{
isFF: has('ff'),

isIE: has('ie'),

isKhtml: has('khtml'),

isWebKit: has('webkit'),

isMozilla: has('mozilla'),
isMoz: has('mozilla'),

isOpera: has('opera'),

isSafari: has('safari'),

isChrome: has('chrome'),

isMac: has('mac'),

isIos: has('ios'),

function slideOnMouseWheel(aEvt)
{
var delta = 0;

if (!aEvt)
aEvt = window.event;

if (aEvt.wheelDelta)
{ // IE Opera
delta = aEvt.wheelDelta/120;
}
else if (aEvt.detail)
{ // MOZ
delta = -aEvt.detail/3;
}

if (delta > 0)
skipEffects(-1);
else if (delta < 0)
skipEffects(1);

if (aEvt.preventDefault)
aEvt.preventDefault();

aEvt.returnValue = false;
}

if( window.addEventListener )
{
window.addEventListener( 'DOMMouseScroll', function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_WHEEL ); }, false );
}

window.onmousewheel
= function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_WHEEL ); };

function mouseHandlerDispatch( aEvt, anAction )
{
if( !aEvt )
aEvt = window.event;

var retVal = true;

if ( mouseHandlerDictionary[currentMode] && mouseHandlerDictionary[currentMode][anAction] )
{
var subRetVal = mouseHandlerDictionary[currentMode][anAction]( aEvt );

if( subRetVal != null && subRetVal != undefined )
retVal = subRetVal;
}

if( aEvt.preventDefault && !retVal )
aEvt.preventDefault();

aEvt.returnValue = retVal;

return retVal;
}

document.onmouseup = function( aEvt ) { return mouseHandlerDispatch( aEvt, MOUSE_UP ); };


function mouseClickHelper( aEvt )
{
if( !Detect.isMozilla )
{
var aWindowObject = document.defaultView;
if( aWindowObject )
{
var aTextSelection = aWindowObject.getSelection();
var sSelectedText =  aTextSelection.toString();
if( sSelectedText )
{
DBGLOG( 'text selection: ' + sSelectedText );
if( sLastSelectedText !== sSelectedText )
{
bTextHasBeenSelected = true;
sLastSelectedText = sSelectedText;
}
else
{
bTextHasBeenSelected = false;
}
return null;
}
else if( bTextHasBeenSelected )
{
bTextHasBeenSelected = false;
sLastSelectedText = '';
return null;
}
}
else
{
log( 'error: HyperlinkElement.handleClick: invalid window object.' );
}
}

var aSlideAnimationsHandler = theMetaDoc.aMetaSlideSet[nCurSlide].aSlideAnimationsHandler;
if( aSlideAnimationsHandler )
{
var aCurrentEventMultiplexer = aSlideAnimationsHandler.aEventMultiplexer;
if( aCurrentEventMultiplexer )
{
if( aCurrentEventMultiplexer.hasRegisteredMouseClickHandlers() )
{
return aCurrentEventMultiplexer.notifyMouseClick( aEvt );
}
}
}
return slideOnMouseUp( aEvt );
}


function getDefaultMouseHandlerDictionary()
{
var mouseHandlerDict = {};

mouseHandlerDict[SLIDE_MODE] = {};
mouseHandlerDict[INDEX_MODE] = {};

mouseHandlerDict[SLIDE_MODE][MOUSE_UP]
= mouseClickHelper;

mouseHandlerDict[SLIDE_MODE][MOUSE_WHEEL]
= function( aEvt ) { return slideOnMouseWheel( aEvt ); };

mouseHandlerDict[INDEX_MODE][MOUSE_UP]
= function( ) { return toggleSlideIndex(); };

return mouseHandlerDict;
}

function indexSetPageSlide( nIndex )
{
var aMetaSlideSet = theMetaDoc.aMetaSlideSet;
nIndex = getSafeIndex( nIndex, 0, aMetaSlideSet.length - 1 );

var nSelectedThumbnailIndex = nIndex % theSlideIndexPage.getTotalThumbnails();
var offset = nIndex - nSelectedThumbnailIndex;

if( offset < 0 )
offset = 0;

if( offset != INDEX_OFFSET )
{
INDEX_OFFSET = offset;
displayIndex( INDEX_OFFSET );
}

theSlideIndexPage.setSelection( nSelectedThumbnailIndex );

var code = aEvt.keyCode || aEvt.charCode;


if (code == 0 && aEvt.key != undefined) {
switch (aEvt.key) {
case 'UIKeyInputLeftArrow':
code = LEFT_KEY;
break;
case 'UIKeyInputUpArrow':
code = UP_KEY;
break;
case 'UIKeyInputRightArrow':
code = RIGHT_KEY;
break;
case 'UIKeyInputDownArrow':
code = DOWN_KEY;
break;
}

}

if( !processingEffect && keyCodeDictionary[currentMode] && keyCodeDictionary[currentMode][code] )
{
return keyCodeDictionary[currentMode][code]();
}
else
{
document.onkeypress = onKeyPress;
return null;
}
}
document.onkeydown = onKeyDown;

function onKeyPress( aEvt )
{
document.onkeypress = null;

if ( !aEvt )
aEvt = window.event;

var str = String.fromCharCode( aEvt.keyCode || aEvt.charCode );

if ( !processingEffect && charCodeDictionary[currentMode] && charCodeDictionary[currentMode][str] )
return charCodeDictionary[currentMode][str]();

return null;
}

function getDefaultKeyCodeDictionary()
{
var keyCodeDict = {};

keyCodeDict[SLIDE_MODE] = {};
keyCodeDict[INDEX_MODE] = {};

keyCodeDict[SLIDE_MODE][LEFT_KEY]
= function() { return aSlideShow.rewindEffect(); };
keyCodeDict[SLIDE_MODE][RIGHT_KEY]
= function() { return dispatchEffects(1); };
keyCodeDict[SLIDE_MODE][UP_KEY]
= function() { return aSlideShow.rewindEffect(); };
keyCodeDict[SLIDE_MODE][DOWN_KEY]
= function() { return skipEffects(1); };
keyCodeDict[SLIDE_MODE][PAGE_UP_KEY]
= function() { return aSlideShow.rewindAllEffects(); };
keyCodeDict[SLIDE_MODE][PAGE_DOWN_KEY]
= function() { return skipAllEffects(); };
keyCodeDict[SLIDE_MODE][HOME_KEY]
= function() { return aSlideShow.displaySlide( 0, true ); };
keyCodeDict[SLIDE_MODE][END_KEY]
= function() { return aSlideShow.displaySlide( theMetaDoc.nNumberOfSlides - 1, true ); };
keyCodeDict[SLIDE_MODE][SPACE_KEY]
= function() { return dispatchEffects(1); };
keyCodeDict[SLIDE_MODE][ESCAPE_KEY]
= function() { return aSlideShow.exitSlideShowInApp(); };
keyCodeDict[SLIDE_MODE][Q_KEY]
= function() { return aSlideShow.exitSlideShowInApp(); };

keyCodeDict[INDEX_MODE][LEFT_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - 1 ); };
keyCodeDict[INDEX_MODE][RIGHT_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + 1 ); };
keyCodeDict[INDEX_MODE][UP_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - theSlideIndexPage.indexColumns ); };
keyCodeDict[INDEX_MODE][DOWN_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + theSlideIndexPage.indexColumns ); };
keyCodeDict[INDEX_MODE][PAGE_UP_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex - theSlideIndexPage.getTotalThumbnails() ); };
keyCodeDict[INDEX_MODE][PAGE_DOWN_KEY]
= function() { return indexSetPageSlide( theSlideIndexPage.selectedSlideIndex + theSlideIndexPage.getTotalThumbnails() ); };
keyCodeDict[INDEX_MODE][HOME_KEY]
= function() { return indexSetPageSlide( 0 ); };
keyCodeDict[INDEX_MODE][END_KEY]
= function() { return indexSetPageSlide( theMetaDoc.nNumberOfSlides - 1 ); };
keyCodeDict[INDEX_MODE][ENTER_KEY]
= function() { return toggleSlideIndex(); };
keyCodeDict[INDEX_MODE][SPACE_KEY]
= function() { return toggleSlideIndex(); };
keyCodeDict[INDEX_MODE][ESCAPE_KEY]
= function() { return abandonIndexMode(); };

return keyCodeDict;
}

function getDefaultCharCodeDictionary()
{
var charCodeDict = {};

charCodeDict[SLIDE_MODE] = {};
charCodeDict[INDEX_MODE] = {};

charCodeDict[SLIDE_MODE]['i']
= function () { return toggleSlideIndex(); };

charCodeDict[INDEX_MODE]['i']
= function () { return toggleSlideIndex(); };
charCodeDict[INDEX_MODE]['-']
= function () { return theSlideIndexPage.decreaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['=']
= function () { return theSlideIndexPage.increaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['+']
= function () { return theSlideIndexPage.increaseNumberOfColumns(); };
charCodeDict[INDEX_MODE]['0']
= function () { return theSlideIndexPage.resetNumberOfColumns(); };

return charCodeDict;
}


function slideOnMouseUp( aEvt )
{
if (!aEvt)
aEvt = window.event;

var nOffset = 0;

if( aEvt.button == 0 )
nOffset = 1;
else if( aEvt.button == 2 )
nOffset = -1;

if( 0 != nOffset )
dispatchEffects( nOffset );
return true; // the click has been handled
}

document.handleClick = slideOnMouseUp;


}

function triggerDomEvent(event, data) {
var gestureEvent = document.createEvent('Event');
gestureEvent.initEvent(event, true, true);
gestureEvent.gesture = data;
data.target.dispatchEvent(gestureEvent);
}

assign(Hammer, {
INPUT_START: INPUT_START,
INPUT_MOVE: INPUT_MOVE,
INPUT_END: INPUT_END,
INPUT_CANCEL: INPUT_CANCEL,

STATE_POSSIBLE: STATE_POSSIBLE,
STATE_BEGAN: STATE_BEGAN,
STATE_CHANGED: STATE_CHANGED,
STATE_ENDED: STATE_ENDED,
STATE_RECOGNIZED: STATE_RECOGNIZED,
STATE_CANCELLED: STATE_CANCELLED,
STATE_FAILED: STATE_FAILED,

DIRECTION_NONE: DIRECTION_NONE,
DIRECTION_LEFT: DIRECTION_LEFT,
DIRECTION_RIGHT: DIRECTION_RIGHT,
DIRECTION_UP: DIRECTION_UP,
DIRECTION_DOWN: DIRECTION_DOWN,
DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,
DIRECTION_VERTICAL: DIRECTION_VERTICAL,
DIRECTION_ALL: DIRECTION_ALL,

Manager: Manager,
Input: Input,
TouchAction: TouchAction,

TouchInput: TouchInput,
MouseInput: MouseInput,
PointerEventInput: PointerEventInput,
TouchMouseInput: TouchMouseInput,
SingleTouchInput: SingleTouchInput,

Recognizer: Recognizer,
AttrRecognizer: AttrRecognizer,
Tap: TapRecognizer,
Pan: PanRecognizer,
Swipe: SwipeRecognizer,
Pinch: PinchRecognizer,
Rotate: RotateRecognizer,
Press: PressRecognizer,

on: addEventListeners,
off: removeEventListeners,
each: each,
merge: merge,
extend: extend,
assign: assign,
inherit: inherit,
bindFn: bindFn,
prefixed: prefixed
});

var freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line
freeGlobal.Hammer = Hammer;

if (typeof define === 'function' && define.amd) {
define(function() {
return Hammer;
});
} else if (typeof module != 'undefined' && module.exports) {
module.exports = Hammer;
} else {
window[exportName] = Hammer;
}

})(window, document, 'Hammer');

/*****
* @licstart
*
* The following is the license notice for the part of JavaScript code of this
* page included between the '@jessyinkstart' and the '@jessyinkend' notes.
*/

/*****  ******************************************************************
*
* Copyright 2008-2013 Hannes Hochreiner
*
* The JavaScript code included between the start note '@jessyinkstart'
* and the end note '@jessyinkend' is subject to the terms of the Mozilla
* Public License, v. 2.0. If a copy of the MPL was not distributed with
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Alternatively, you can redistribute and/or that part of this file
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see http://www.gnu.org/licenses/.
*/

/*****
*  You can find the complete source code of the JessyInk project at:
*  @source http://code.google.com/p/jessyink/
*/

/*****
* @licend
*
* The above is the license notice for the part of JavaScript code of this
* page included between the '@jessyinkstart' and the '@jessyinkend' notes.
*/


/*****
* @jessyinkstart
*
*  The following code is a derivative work of some parts of the JessyInk
*  project.
*  @source http://code.google.com/p/jessyink/
*/

function getElementsByProperty( node, name )
{
var elements = [];

if( node.getAttribute( name ) )
elements.push( node );

for( var counter = 0; counter < node.childNodes.length; ++counter )
{
if( node.childNodes[counter].nodeType == 1 )
{
var subElements = getElementsByProperty( node.childNodes[counter], name );
elements = elements.concat( subElements );
}
}
return elements;
}

function onKeyDown( aEvt )
{
if ( !aEvt )
aEvt = window.event;
recognizer = recognizers[i];

if (session.stopped !== FORCED_STOP && ( // 1
!curRecognizer || recognizer == curRecognizer || // 2
recognizer.canRecognizeWith(curRecognizer))) { // 3
recognizer.recognize(inputData);
} else {
recognizer.reset();
}

if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {
curRecognizer = session.curRecognizer = recognizer;
}
i++;
}
},

get: function(recognizer) {
if (recognizer instanceof Recognizer) {
return recognizer;
}

var recognizers = this.recognizers;
for (var i = 0; i < recognizers.length; i++) {
if (recognizers[i].options.event == recognizer) {
return recognizers[i];
}
}
return null;
},

add: function(recognizer) {
if (invokeArrayArg(recognizer, 'add', this)) {
return this;
}

var existing = this.get(recognizer.options.event);
if (existing) {
this.remove(existing);
}

this.recognizers.push(recognizer);
recognizer.manager = this;

this.touchAction.update();
return recognizer;
},

remove: function(recognizer) {
if (invokeArrayArg(recognizer, 'remove', this)) {
return this;
}

recognizer = this.get(recognizer);

if (recognizer) {
var recognizers = this.recognizers;
var index = inArray(recognizers, recognizer);

if (index !== -1) {
recognizers.splice(index, 1);
this.touchAction.update();
}
}

return this;
},

on: function(events, handler) {
if (events === undefined) {
return;
}
if (handler === undefined) {
return;
}

var handlers = this.handlers;
each(splitStr(events), function(event) {
handlers[event] = handlers[event] || [];
handlers[event].push(handler);
});
return this;
},

off: function(events, handler) {
if (events === undefined) {
return;
}

var handlers = this.handlers;
each(splitStr(events), function(event) {
if (!handler) {
delete handlers[event];
} else {
handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);
}
});
return this;
},

emit: function(event, data) {
if (this.options.domEvents) {
triggerDomEvent(event, data);
}

var handlers = this.handlers[event] && this.handlers[event].slice();
if (!handlers || !handlers.length) {
return;
}

data.type = event;
data.preventDefault = function() {
data.srcEvent.preventDefault();
};

var i = 0;
while (i < handlers.length) {
handlers[i](data);
i++;
}
},

destroy: function() {
this.element && toggleCssProps(this, false);

this.handlers = {};
this.session = {};
this.input.destroy();
this.element = null;
}
};

function toggleCssProps(manager, add) {
var element = manager.element;
if (!element.style) {
return;
}
var prop;
each(manager.options.cssProps, function(value, name) {
prop = prefixed(element.style, name);
if (add) {
manager.oldCssProps[prop] = element.style[prop];
element.style[prop] = value;
} else {
element.style[prop] = manager.oldCssProps[prop] || '';
}
});
if (!add) {
manager.oldCssProps = {};
}
this.count = 1;
} else {
this.count += 1;
}

this._input = input;

var tapCount = this.count % options.taps;
if (tapCount === 0) {
if (!this.hasRequireFailures()) {
return STATE_RECOGNIZED;
} else {
this._timer = setTimeoutContext(function() {
this.state = STATE_RECOGNIZED;
this.tryEmit();
}, options.interval, this);
return STATE_BEGAN;
}
}
}
return STATE_FAILED;
},

failTimeout: function() {
this._timer = setTimeoutContext(function() {
this.state = STATE_FAILED;
}, this.options.interval, this);
return STATE_FAILED;
},

reset: function() {
clearTimeout(this._timer);
},

emit: function() {
if (this.state == STATE_RECOGNIZED) {
this._input.tapCount = this.count;
this.manager.emit(this.options.event, this._input);
}
}
});

function Hammer(element, options) {
options = options || {};
options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);
return new Manager(element, options);
}

Hammer.VERSION = '2.0.7';

Hammer.defaults = {
domEvents: false,

touchAction: TOUCH_ACTION_COMPUTE,

enable: true,

inputTarget: null,

inputClass: null,

preset: [
[RotateRecognizer, {enable: false}],
[PinchRecognizer, {enable: false}, ['rotate']],
[SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],
[PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],
[TapRecognizer],
[TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],
[PressRecognizer]
],

cssProps: {
userSelect: 'none',

touchSelect: 'none',

touchCallout: 'none',

contentZooming: 'none',

userDrag: 'none',

tapHighlightColor: 'rgba(0,0,0,0)'
}
};

var STOP = 1;
var FORCED_STOP = 2;

function Manager(element, options) {
this.options = assign({}, Hammer.defaults, options || {});

this.options.inputTarget = this.options.inputTarget || element;

this.handlers = {};
this.session = {};
this.recognizers = [];
this.oldCssProps = {};

this.element = element;
this.input = createInputInstance(this);
this.touchAction = new TouchAction(this, this.options.touchAction);

toggleCssProps(this, true);

each(this.options.recognizers, function(item) {
var recognizer = this.add(new (item[0])(item[1]));
item[2] && recognizer.recognizeWith(item[2]);
item[3] && recognizer.requireFailure(item[3]);
}, this);
}

Manager.prototype = {
set: function(options) {
assign(this.options, options);

if (options.touchAction) {
this.touchAction.update();
}
if (options.inputTarget) {
this.input.destroy();
this.input.target = options.inputTarget;
this.input.init();
}
return this;
},

stop: function(force) {
this.session.stopped = force ? FORCED_STOP : STOP;
},

recognize: function(inputData) {
var session = this.session;
if (session.stopped) {
return;
}

this.touchAction.preventDefaults(inputData);

var recognizer;
var recognizers = this.recognizers;

var curRecognizer = session.curRecognizer;

if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {
curRecognizer = session.curRecognizer = null;
}

var i = 0;
while (i < recognizers.length) {
if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {
this.reset();
} else if (input.eventType & INPUT_START) {
this.reset();
this._timer = setTimeoutContext(function() {
this.state = STATE_RECOGNIZED;
this.tryEmit();
}, options.time, this);
} else if (input.eventType & INPUT_END) {
return STATE_RECOGNIZED;
}
return STATE_FAILED;
},

reset: function() {
clearTimeout(this._timer);
},

emit: function(input) {
if (this.state !== STATE_RECOGNIZED) {
return;
}

if (input && (input.eventType & INPUT_END)) {
this.manager.emit(this.options.event + 'up', input);
} else {
this._input.timeStamp = now();
this.manager.emit(this.options.event, this._input);
}
}
});

function RotateRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(RotateRecognizer, AttrRecognizer, {
defaults: {
event: 'rotate',
threshold: 0,
pointers: 2
},

getTouchAction: function() {
return [TOUCH_ACTION_NONE];
},

attrTest: function(input) {
return this._super.attrTest.call(this, input) &&
(Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);
}
});

function SwipeRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(SwipeRecognizer, AttrRecognizer, {
defaults: {
event: 'swipe',
threshold: 10,
velocity: 0.3,
direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,
pointers: 1
},

getTouchAction: function() {
return PanRecognizer.prototype.getTouchAction.call(this);
},

attrTest: function(input) {
var direction = this.options.direction;
var velocity;

if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {
velocity = input.overallVelocity;
} else if (direction & DIRECTION_HORIZONTAL) {
velocity = input.overallVelocityX;
} else if (direction & DIRECTION_VERTICAL) {
velocity = input.overallVelocityY;
}

return this._super.attrTest.call(this, input) &&
direction & input.offsetDirection &&
input.distance > this.options.threshold &&
input.maxPointers == this.options.pointers &&
abs(velocity) > this.options.velocity && input.eventType & INPUT_END;
},

emit: function(input) {
var direction = directionStr(input.offsetDirection);
if (direction) {
this.manager.emit(this.options.event + direction, input);
}

this.manager.emit(this.options.event, input);
}
});

function TapRecognizer() {
Recognizer.apply(this, arguments);

this.pTime = false;
this.pCenter = false;

this._timer = null;
this._input = null;
this.count = 0;
}

inherit(TapRecognizer, Recognizer, {
defaults: {
event: 'tap',
pointers: 1,
taps: 1,
interval: 300, // max time between the multi-tap taps
time: 250, // max time of the pointer to be down (like finger on the screen)
threshold: 9, // a minimal movement is ok, but keep it low
posThreshold: 10 // a multi-tap can be a bit off the initial position
},

getTouchAction: function() {
return [TOUCH_ACTION_MANIPULATION];
},

process: function(input) {
var options = this.options;

var validPointers = input.pointers.length === options.pointers;
var validMovement = input.distance < options.threshold;
var validTouchTime = input.deltaTime < options.time;

this.reset();

if ((input.eventType & INPUT_START) && (this.count === 0)) {
return this.failTimeout();
}

if (validMovement && validTouchTime && validPointers) {
if (input.eventType != INPUT_END) {
return this.failTimeout();
}

var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;
var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;

this.pTime = input.timeStamp;
this.pCenter = input.center;

if (!validMultiTap || !validInterval) {
var optionPointers = this.options.pointers;
return optionPointers === 0 || input.pointers.length === optionPointers;
},

process: function(input) {
var state = this.state;
var eventType = input.eventType;

var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);
var isValid = this.attrTest(input);

if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {
return state | STATE_CANCELLED;
} else if (isRecognized || isValid) {
if (eventType & INPUT_END) {
return state | STATE_ENDED;
} else if (!(state & STATE_BEGAN)) {
return STATE_BEGAN;
}
return state | STATE_CHANGED;
}
return STATE_FAILED;
}
});

function PanRecognizer() {
AttrRecognizer.apply(this, arguments);

this.pX = null;
this.pY = null;
}

inherit(PanRecognizer, AttrRecognizer, {
defaults: {
event: 'pan',
threshold: 10,
pointers: 1,
direction: DIRECTION_ALL
},

getTouchAction: function() {
var direction = this.options.direction;
var actions = [];
if (direction & DIRECTION_HORIZONTAL) {
actions.push(TOUCH_ACTION_PAN_Y);
}
if (direction & DIRECTION_VERTICAL) {
actions.push(TOUCH_ACTION_PAN_X);
}
return actions;
},

directionTest: function(input) {
var options = this.options;
var hasMoved = true;
var distance = input.distance;
var direction = input.direction;
var x = input.deltaX;
var y = input.deltaY;

if (!(direction & options.direction)) {
if (options.direction & DIRECTION_HORIZONTAL) {
direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;
hasMoved = x != this.pX;
distance = Math.abs(input.deltaX);
} else {
direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;
hasMoved = y != this.pY;
distance = Math.abs(input.deltaY);
}
}
input.direction = direction;
return hasMoved && distance > options.threshold && direction & options.direction;
},

attrTest: function(input) {
return AttrRecognizer.prototype.attrTest.call(this, input) &&
(this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));
},

emit: function(input) {

this.pX = input.deltaX;
this.pY = input.deltaY;

var direction = directionStr(input.direction);

if (direction) {
input.additionalEvent = this.options.event + direction;
}
this._super.emit.call(this, input);
}
});

function PinchRecognizer() {
AttrRecognizer.apply(this, arguments);
}

inherit(PinchRecognizer, AttrRecognizer, {
defaults: {
event: 'pinch',
threshold: 0,
pointers: 2
},

getTouchAction: function() {
return [TOUCH_ACTION_NONE];
},

attrTest: function(input) {
return this._super.attrTest.call(this, input) &&
(Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);
},

emit: function(input) {
if (input.scale !== 1) {
var inOut = input.scale < 1 ? 'in' : 'out';
input.additionalEvent = this.options.event + inOut;
}
this._super.emit.call(this, input);
}
});

function PressRecognizer() {
Recognizer.apply(this, arguments);

this._timer = null;
this._input = null;
}

inherit(PressRecognizer, Recognizer, {
defaults: {
event: 'press',
pointers: 1,
time: 251, // minimal time of the pointer to be pressed
threshold: 9 // a minimal movement is ok, but keep it low
},

getTouchAction: function() {
return [TOUCH_ACTION_AUTO];
},

process: function(input) {
var options = this.options;
var validPointers = input.pointers.length === options.pointers;
var validMovement = input.distance < options.threshold;
var validTime = input.deltaTime > options.time;

this._input = input;

return this;
},

requireFailure: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {
return this;
}

var requireFail = this.requireFail;
otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
if (inArray(requireFail, otherRecognizer) === -1) {
requireFail.push(otherRecognizer);
otherRecognizer.requireFailure(this);
}
return this;
},

dropRequireFailure: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {
return this;
}

otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
var index = inArray(this.requireFail, otherRecognizer);
if (index > -1) {
this.requireFail.splice(index, 1);
}
return this;
},

hasRequireFailures: function() {
return this.requireFail.length > 0;
},

canRecognizeWith: function(otherRecognizer) {
return !!this.simultaneous[otherRecognizer.id];
},

emit: function(input) {
var self = this;
var state = this.state;

function emit(event) {
self.manager.emit(event, input);
}

if (state < STATE_ENDED) {
emit(self.options.event + stateStr(state));
}

emit(self.options.event); // simple 'eventName' events

if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)
emit(input.additionalEvent);
}

if (state >= STATE_ENDED) {
emit(self.options.event + stateStr(state));
}
},

tryEmit: function(input) {
if (this.canEmit()) {
return this.emit(input);
}
this.state = STATE_FAILED;
},

canEmit: function() {
var i = 0;
while (i < this.requireFail.length) {
if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {
return false;
}
i++;
}
return true;
},

recognize: function(inputData) {
var inputDataClone = assign({}, inputData);

if (!boolOrFn(this.options.enable, [this, inputDataClone])) {
this.reset();
this.state = STATE_FAILED;
return;
}

if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {
this.state = STATE_POSSIBLE;
}

this.state = this.process(inputDataClone);

if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {
this.tryEmit(inputDataClone);
}
},

process: function(inputData) { }, // jshint ignore:line

getTouchAction: function() { },

reset: function() { }
};

function stateStr(state) {
if (state & STATE_CANCELLED) {
return 'cancel';
} else if (state & STATE_ENDED) {
return 'end';
} else if (state & STATE_CHANGED) {
return 'move';
} else if (state & STATE_BEGAN) {
return 'start';
}
return '';
}

function directionStr(direction) {
if (direction == DIRECTION_DOWN) {
return 'down';
} else if (direction == DIRECTION_UP) {
return 'up';
} else if (direction == DIRECTION_LEFT) {
return 'left';
} else if (direction == DIRECTION_RIGHT) {
return 'right';
}
return '';
}

function getRecognizerByNameIfManager(otherRecognizer, recognizer) {
var manager = recognizer.manager;
if (manager) {
return manager.get(otherRecognizer);
}
return otherRecognizer;
}

function AttrRecognizer() {
Recognizer.apply(this, arguments);
}

inherit(AttrRecognizer, Recognizer, {
defaults: {
pointers: 1
},

attrTest: function(input) {
}
this.actions = value.toLowerCase().trim();
},

update: function() {
this.set(this.manager.options.touchAction);
},

compute: function() {
var actions = [];
each(this.manager.recognizers, function(recognizer) {
if (boolOrFn(recognizer.options.enable, [recognizer])) {
actions = actions.concat(recognizer.getTouchAction());
}
});
return cleanTouchActions(actions.join(' '));
},

preventDefaults: function(input) {
var srcEvent = input.srcEvent;
var direction = input.offsetDirection;

if (this.manager.session.prevented) {
srcEvent.preventDefault();
return;
}

var actions = this.actions;
var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];
var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];
var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];

if (hasNone) {

var isTapPointer = input.pointers.length === 1;
var isTapMovement = input.distance < 2;
var isTapTouchTime = input.deltaTime < 250;

if (isTapPointer && isTapMovement && isTapTouchTime) {
return;
}
}

if (hasPanX && hasPanY) {
return;
}

if (hasNone ||
(hasPanY && direction & DIRECTION_HORIZONTAL) ||
(hasPanX && direction & DIRECTION_VERTICAL)) {
return this.preventSrc(srcEvent);
}
},

preventSrc: function(srcEvent) {
this.manager.session.prevented = true;
srcEvent.preventDefault();
}
};

function cleanTouchActions(actions) {
if (inStr(actions, TOUCH_ACTION_NONE)) {
return TOUCH_ACTION_NONE;
}

var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);
var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);

if (hasPanX && hasPanY) {
return TOUCH_ACTION_NONE;
}

if (hasPanX || hasPanY) {
return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;
}

if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {
return TOUCH_ACTION_MANIPULATION;
}

return TOUCH_ACTION_AUTO;
}

function getTouchActionProps() {
if (!NATIVE_TOUCH_ACTION) {
return false;
}
var touchMap = {};
var cssSupports = window.CSS && window.CSS.supports;
['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {

touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;
});
return touchMap;
}

var STATE_POSSIBLE = 1;
var STATE_BEGAN = 2;
var STATE_CHANGED = 4;
var STATE_ENDED = 8;
var STATE_RECOGNIZED = STATE_ENDED;
var STATE_CANCELLED = 16;
var STATE_FAILED = 32;

function Recognizer(options) {
this.options = assign({}, this.defaults, options || {});

this.id = uniqueId();

this.manager = null;

this.options.enable = ifUndefined(this.options.enable, true);

this.state = STATE_POSSIBLE;

this.simultaneous = {};
this.requireFail = [];
}

Recognizer.prototype = {
defaults: {},

set: function(options) {
assign(this.options, options);

this.manager && this.manager.touchAction.update();
return this;
},

recognizeWith: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {
return this;
}

var simultaneous = this.simultaneous;
otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
if (!simultaneous[otherRecognizer.id]) {
simultaneous[otherRecognizer.id] = otherRecognizer;
otherRecognizer.recognizeWith(this);
}
return this;
},

dropRecognizeWith: function(otherRecognizer) {
if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {
return this;
}

otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);
delete this.simultaneous[otherRecognizer.id];
function getTouches(ev, type) {
var allTouches = toArray(ev.touches);
var targetIds = this.targetIds;

if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {
targetIds[allTouches[0].identifier] = true;
return [allTouches, allTouches];
}

var i,
targetTouches,
changedTouches = toArray(ev.changedTouches),
changedTargetTouches = [],
target = this.target;

targetTouches = allTouches.filter(function(touch) {
return hasParent(touch.target, target);
});

if (type === INPUT_START) {
i = 0;
while (i < targetTouches.length) {
targetIds[targetTouches[i].identifier] = true;
i++;
}
}

i = 0;
while (i < changedTouches.length) {
if (targetIds[changedTouches[i].identifier]) {
changedTargetTouches.push(changedTouches[i]);
}

if (type & (INPUT_END | INPUT_CANCEL)) {
delete targetIds[changedTouches[i].identifier];
}
i++;
}

if (!changedTargetTouches.length) {
return;
}

return [
uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),
changedTargetTouches
];
}


var DEDUP_TIMEOUT = 2500;
var DEDUP_DISTANCE = 25;

function TouchMouseInput() {
Input.apply(this, arguments);

var handler = bindFn(this.handler, this);
this.touch = new TouchInput(this.manager, handler);
this.mouse = new MouseInput(this.manager, handler);

this.primaryTouch = null;
this.lastTouches = [];
}

inherit(TouchMouseInput, Input, {
handler: function TMEhandler(manager, inputEvent, inputData) {
var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),
isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);

if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {
return;
}

if (isTouch) {
recordTouches.call(this, inputEvent, inputData);
} else if (isMouse && isSyntheticEvent.call(this, inputData)) {
return;
}

this.callback(manager, inputEvent, inputData);
},

destroy: function destroy() {
this.touch.destroy();
this.mouse.destroy();
}
});

function recordTouches(eventType, eventData) {
if (eventType & INPUT_START) {
this.primaryTouch = eventData.changedPointers[0].identifier;
setLastTouch.call(this, eventData);
} else if (eventType & (INPUT_END | INPUT_CANCEL)) {
setLastTouch.call(this, eventData);
}
}

function setLastTouch(eventData) {
var touch = eventData.changedPointers[0];

if (touch.identifier === this.primaryTouch) {
var lastTouch = {x: touch.clientX, y: touch.clientY};
this.lastTouches.push(lastTouch);
var lts = this.lastTouches;
var removeLastTouch = function() {
var i = lts.indexOf(lastTouch);
if (i > -1) {
lts.splice(i, 1);
}
};
setTimeout(removeLastTouch, DEDUP_TIMEOUT);
}
}

function isSyntheticEvent(eventData) {
var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;
for (var i = 0; i < this.lastTouches.length; i++) {
var t = this.lastTouches[i];
var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);
if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {
return true;
}
}
return false;
}

var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');
var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;

var TOUCH_ACTION_COMPUTE = 'compute';
var TOUCH_ACTION_AUTO = 'auto';
var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented
var TOUCH_ACTION_NONE = 'none';
var TOUCH_ACTION_PAN_X = 'pan-x';
var TOUCH_ACTION_PAN_Y = 'pan-y';
var TOUCH_ACTION_MAP = getTouchActionProps();

function TouchAction(manager, value) {
this.manager = manager;
this.set(value);
}

TouchAction.prototype = {
set: function(value) {
if (value == TOUCH_ACTION_COMPUTE) {
value = this.compute();
}

if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {
this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;
5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816
};

var POINTER_ELEMENT_EVENTS = 'pointerdown';
var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';

if (window.MSPointerEvent && !window.PointerEvent) {
POINTER_ELEMENT_EVENTS = 'MSPointerDown';
POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';
}

function PointerEventInput() {
this.evEl = POINTER_ELEMENT_EVENTS;
this.evWin = POINTER_WINDOW_EVENTS;

Input.apply(this, arguments);

this.store = (this.manager.session.pointerEvents = []);
}

inherit(PointerEventInput, Input, {
handler: function PEhandler(ev) {
var store = this.store;
var removePointer = false;

var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');
var eventType = POINTER_INPUT_MAP[eventTypeNormalized];
var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;

var isTouch = (pointerType == INPUT_TYPE_TOUCH);

var storeIndex = inArray(store, ev.pointerId, 'pointerId');

if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {
if (storeIndex < 0) {
store.push(ev);
storeIndex = store.length - 1;
}
} else if (eventType & (INPUT_END | INPUT_CANCEL)) {
removePointer = true;
}

if (storeIndex < 0) {
return;
}

store[storeIndex] = ev;

this.callback(this.manager, eventType, {
pointers: store,
changedPointers: [ev],
pointerType: pointerType,
srcEvent: ev
});

if (removePointer) {
store.splice(storeIndex, 1);
}
}
});

var SINGLE_TOUCH_INPUT_MAP = {
touchstart: INPUT_START,
touchmove: INPUT_MOVE,
touchend: INPUT_END,
touchcancel: INPUT_CANCEL
};

var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';
var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';

function SingleTouchInput() {
this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;
this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;
this.started = false;

Input.apply(this, arguments);
}

inherit(SingleTouchInput, Input, {
handler: function TEhandler(ev) {
var type = SINGLE_TOUCH_INPUT_MAP[ev.type];

if (type === INPUT_START) {
this.started = true;
}

if (!this.started) {
return;
}

var touches = normalizeSingleTouches.call(this, ev, type);

if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {
this.started = false;
}

this.callback(this.manager, type, {
pointers: touches[0],
changedPointers: touches[1],
pointerType: INPUT_TYPE_TOUCH,
srcEvent: ev
});
}
});

function normalizeSingleTouches(ev, type) {
var all = toArray(ev.touches);
var changed = toArray(ev.changedTouches);

if (type & (INPUT_END | INPUT_CANCEL)) {
all = uniqueArray(all.concat(changed), 'identifier', true);
}

return [all, changed];
}

var TOUCH_INPUT_MAP = {
touchstart: INPUT_START,
touchmove: INPUT_MOVE,
touchend: INPUT_END,
touchcancel: INPUT_CANCEL
};

var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';

function TouchInput() {
this.evTarget = TOUCH_TARGET_EVENTS;
this.targetIds = {};

Input.apply(this, arguments);
}

inherit(TouchInput, Input, {
handler: function MTEhandler(ev) {
var type = TOUCH_INPUT_MAP[ev.type];
var touches = getTouches.call(this, ev, type);
if (!touches) {
return;
}

this.callback(this.manager, type, {
pointers: touches[0],
changedPointers: touches[1],
pointerType: INPUT_TYPE_TOUCH,
srcEvent: ev
});
}
});

input.direction = direction;
}

function simpleCloneInputData(input) {
var pointers = [];
var i = 0;
while (i < input.pointers.length) {
pointers[i] = {
clientX: round(input.pointers[i].clientX),
clientY: round(input.pointers[i].clientY)
};
i++;
}

return {
timeStamp: now(),
pointers: pointers,
center: getCenter(pointers),
deltaX: input.deltaX,
deltaY: input.deltaY
};
}

function getCenter(pointers) {
var pointersLength = pointers.length;

if (pointersLength === 1) {
return {
x: round(pointers[0].clientX),
y: round(pointers[0].clientY)
};
}

var x = 0, y = 0, i = 0;
while (i < pointersLength) {
x += pointers[i].clientX;
y += pointers[i].clientY;
i++;
}

return {
x: round(x / pointersLength),
y: round(y / pointersLength)
};
}

function getVelocity(deltaTime, x, y) {
return {
x: x / deltaTime || 0,
y: y / deltaTime || 0
};
}

function getDirection(x, y) {
if (x === y) {
return DIRECTION_NONE;
}

if (abs(x) >= abs(y)) {
return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;
}
return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;
}

function getDistance(p1, p2, props) {
if (!props) {
props = PROPS_XY;
}
var x = p2[props[0]] - p1[props[0]],
y = p2[props[1]] - p1[props[1]];

return Math.sqrt((x * x) + (y * y));
}

function getAngle(p1, p2, props) {
if (!props) {
props = PROPS_XY;
}
var x = p2[props[0]] - p1[props[0]],
y = p2[props[1]] - p1[props[1]];
return Math.atan2(y, x) * 180 / Math.PI;
}

function getRotation(start, end) {
return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);
}

function getScale(start, end) {
return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);
}

var MOUSE_INPUT_MAP = {
mousedown: INPUT_START,
mousemove: INPUT_MOVE,
mouseup: INPUT_END
};

var MOUSE_ELEMENT_EVENTS = 'mousedown';
var MOUSE_WINDOW_EVENTS = 'mousemove mouseup';

function MouseInput() {
this.evEl = MOUSE_ELEMENT_EVENTS;
this.evWin = MOUSE_WINDOW_EVENTS;

this.pressed = false; // mousedown state

Input.apply(this, arguments);
}

inherit(MouseInput, Input, {
handler: function MEhandler(ev) {
var eventType = MOUSE_INPUT_MAP[ev.type];

if (eventType & INPUT_START && ev.button === 0) {
this.pressed = true;
}

if (eventType & INPUT_MOVE && ev.which !== 1) {
eventType = INPUT_END;
}

if (!this.pressed) {
return;
}

if (eventType & INPUT_END) {
this.pressed = false;
}

this.callback(this.manager, eventType, {
pointers: [ev],
changedPointers: [ev],
pointerType: INPUT_TYPE_MOUSE,
srcEvent: ev
});
}
});

var POINTER_INPUT_MAP = {
pointerdown: INPUT_START,
pointermove: INPUT_MOVE,
pointerup: INPUT_END,
pointercancel: INPUT_CANCEL,
pointerout: INPUT_CANCEL
};

var IE10_POINTER_TYPE_ENUM = {
2: INPUT_TYPE_TOUCH,
3: INPUT_TYPE_PEN,
4: INPUT_TYPE_MOUSE,
this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);
this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);
this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
},

destroy: function() {
this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);
this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);
this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);
}
};

function createInputInstance(manager) {
var Type;
var inputClass = manager.options.inputClass;

if (inputClass) {
Type = inputClass;
} else if (!SUPPORT_TOUCH && SUPPORT_POINTER_EVENTS) {
Type = PointerEventInput;
} else if (SUPPORT_ONLY_TOUCH) {
Type = TouchInput;
} else if (!SUPPORT_TOUCH) {
Type = MouseInput;
} else {
Type = TouchMouseInput;
}
return new (Type)(manager, inputHandler);
}

function inputHandler(manager, eventType, input) {
var pointersLen = input.pointers.length;
var changedPointersLen = input.changedPointers.length;
var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));
var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));

input.isFirst = !!isFirst;
input.isFinal = !!isFinal;

if (isFirst) {
manager.session = {};
}

input.eventType = eventType;

computeInputData(manager, input);

manager.emit('hammer.input', input);

manager.recognize(input);
manager.session.prevInput = input;
}

function computeInputData(manager, input) {
var session = manager.session;
var pointers = input.pointers;
var pointersLength = pointers.length;

if (!session.firstInput) {
session.firstInput = simpleCloneInputData(input);
}

if (pointersLength > 1 && !session.firstMultiple) {
session.firstMultiple = simpleCloneInputData(input);
} else if (pointersLength === 1) {
session.firstMultiple = false;
}

var firstInput = session.firstInput;
var firstMultiple = session.firstMultiple;
var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;

var center = input.center = getCenter(pointers);
input.timeStamp = now();
input.deltaTime = input.timeStamp - firstInput.timeStamp;

input.angle = getAngle(offsetCenter, center);
input.distance = getDistance(offsetCenter, center);

computeDeltaXY(session, input);
input.offsetDirection = getDirection(input.deltaX, input.deltaY);

var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);
input.overallVelocityX = overallVelocity.x;
input.overallVelocityY = overallVelocity.y;
input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;

input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;
input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;

input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >
session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);

computeIntervalInputData(session, input);

var target = manager.element;
if (hasParent(input.srcEvent.target, target)) {
target = input.srcEvent.target;
}
input.target = target;
}

function computeDeltaXY(session, input) {
var center = input.center;
var offset = session.offsetDelta || {};
var prevDelta = session.prevDelta || {};
var prevInput = session.prevInput || {};

if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {
prevDelta = session.prevDelta = {
x: prevInput.deltaX || 0,
y: prevInput.deltaY || 0
};

offset = session.offsetDelta = {
x: center.x,
y: center.y
};
}

input.deltaX = prevDelta.x + (center.x - offset.x);
input.deltaY = prevDelta.y + (center.y - offset.y);
}

function computeIntervalInputData(session, input) {
var last = session.lastInterval || input,
deltaTime = input.timeStamp - last.timeStamp,
velocity, velocityX, velocityY, direction;

if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {
var deltaX = input.deltaX - last.deltaX;
var deltaY = input.deltaY - last.deltaY;

var v = getVelocity(deltaTime, deltaX, deltaY);
velocityX = v.x;
velocityY = v.y;
velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;
direction = getDirection(deltaX, deltaY);

session.lastInterval = input;
} else {
velocity = last.velocity;
velocityX = last.velocityX;
velocityY = last.velocityY;
direction = last.direction;
}

input.velocity = velocity;
input.velocityX = velocityX;
input.velocityY = velocityY;
});
}

function hasParent(node, parent) {
while (node) {
if (node == parent) {
return true;
}
node = node.parentNode;
}
return false;
}

function inStr(str, find) {
return str.indexOf(find) > -1;
}

function splitStr(str) {
return str.trim().split(/\s+/g);
}

function inArray(src, find, findByKey) {
if (src.indexOf && !findByKey) {
return src.indexOf(find);
} else {
var i = 0;
while (i < src.length) {
if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {
return i;
}
i++;
}
return -1;
}
}

function toArray(obj) {
return Array.prototype.slice.call(obj, 0);
}

function uniqueArray(src, key, sort) {
var results = [];
var values = [];
var i = 0;

while (i < src.length) {
var val = key ? src[i][key] : src[i];
if (inArray(values, val) < 0) {
results.push(src[i]);
}
values[i] = val;
i++;
}

if (sort) {
if (!key) {
results = results.sort();
} else {
results = results.sort(function sortUniqueArray(a, b) {
return a[key] > b[key];
});
}
}

return results;
}

function prefixed(obj, property) {
if (obj === undefined) {
return undefined;
}

var prefix, prop;
var camelProp = property[0].toUpperCase() + property.slice(1);

var i = 0;
while (i < VENDOR_PREFIXES.length) {
prefix = VENDOR_PREFIXES[i];
prop = (prefix) ? prefix + camelProp : property;

if (prop in obj) {
return prop;
}
i++;
}
return undefined;
}

var _uniqueId = 1;
function uniqueId() {
return _uniqueId++;
}

function getWindowForElement(element) {
var doc = element.ownerDocument || element;
return (doc.defaultView || doc.parentWindow || window);
}

var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;

var SUPPORT_TOUCH = ('ontouchstart' in window);
var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;
var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);

var INPUT_TYPE_TOUCH = 'touch';
var INPUT_TYPE_PEN = 'pen';
var INPUT_TYPE_MOUSE = 'mouse';
var INPUT_TYPE_KINECT = 'kinect';

var COMPUTE_INTERVAL = 25;

var INPUT_START = 1;
var INPUT_MOVE = 2;
var INPUT_END = 4;
var INPUT_CANCEL = 8;

var DIRECTION_NONE = 1;
var DIRECTION_LEFT = 2;
var DIRECTION_RIGHT = 4;
var DIRECTION_UP = 8;
var DIRECTION_DOWN = 16;

var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;
var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;
var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;

var PROPS_XY = ['x', 'y'];
var PROPS_CLIENT_XY = ['clientX', 'clientY'];

function Input(manager, callback) {
var self = this;
this.manager = manager;
this.callback = callback;
this.element = manager.element;
this.target = manager.options.inputTarget;

this.domHandler = function(ev) {
if (boolOrFn(manager.options.enable, [manager])) {
self.handler(ev);
}
};

this.init();

}

Input.prototype = {
handler: function() { },

init: function() {
<![CDATA[


(function(window, document, exportName, undefined) {
'use strict';

var VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];
var TEST_ELEMENT = document.createElement('div');

var TYPE_FUNCTION = 'function';

var round = Math.round;
var abs = Math.abs;
var now = Date.now;

if (!Math.trunc) {
Math.trunc = function (v) {
return v < 0 ? Math.ceil(v) : Math.floor(v);
};
}

function setTimeoutContext(fn, timeout, context) {
return setTimeout(bindFn(fn, context), timeout);
}

function invokeArrayArg(arg, fn, context) {
if (Array.isArray(arg)) {
each(arg, context[fn], context);
return true;
}
return false;
}

function each(obj, iterator, context) {
var i;

if (!obj) {
return;
}

if (obj.forEach) {
obj.forEach(iterator, context);
} else if (obj.length !== undefined) {
i = 0;
while (i < obj.length) {
iterator.call(context, obj[i], i, obj);
i++;
}
} else {
for (i in obj) {
obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);
}
}
}

function deprecate(method, name, message) {
var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\n' + message + ' AT \n';
return function() {
var e = new Error('get-stack-trace');
var stack = e && e.stack ? e.stack.replace(/^[^\(]+?[\n$]/gm, '')
.replace(/^\s+at\s+/gm, '')
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';

var log = window.console && (window.console.warn || window.console.log);
if (log) {
log.call(window.console, deprecationMessage, stack);
}
return method.apply(this, arguments);
};
}

var assign;
if (typeof Object.assign !== 'function') {
assign = function assign(target) {
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}

var output = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source !== undefined && source !== null) {
for (var nextKey in source) {
if (source.hasOwnProperty(nextKey)) {
output[nextKey] = source[nextKey];
}
}
}
}
return output;
};
} else {
assign = Object.assign;
}

var extend = deprecate(function extend(dest, src, merge) {
var keys = Object.keys(src);
var i = 0;
while (i < keys.length) {
if (!merge || (merge && dest[keys[i]] === undefined)) {
dest[keys[i]] = src[keys[i]];
}
i++;
}
return dest;
}, 'extend', 'Use `assign`.');

var merge = deprecate(function merge(dest, src) {
return extend(dest, src, true);
}, 'merge', 'Use `assign`.');

function inherit(child, base, properties) {
var baseP = base.prototype,
childP;

childP = child.prototype = Object.create(baseP);
childP.constructor = child;
childP._super = baseP;

if (properties) {
assign(childP, properties);
}
}

function bindFn(fn, context) {
return function boundFn() {
return fn.apply(context, arguments);
};
}

function boolOrFn(val, args) {
if (typeof val == TYPE_FUNCTION) {
return val.apply(args ? args[0] || undefined : undefined, args);
}
return val;
}

function ifUndefined(val1, val2) {
return (val1 === undefined) ? val2 : val1;
}

function addEventListeners(target, types, handler) {
each(splitStr(types), function(type) {
target.addEventListener(type, handler, false);
});
}

function removeEventListeners(target, types, handler) {
each(splitStr(types), function(type) {
target.removeEventListener(type, handler, false);
9SVGExport@<[:isPlaceholder:]>{�G�z�?F���8<@�?@?�������ooo:date-time-fiooo:textunicodehoriz-adv-x embeddedEmbeddedFont_fontboldnormalitalicfont-familyunits-per-emfont-weightfont-styleascentdescentfont-facemissing-glyph�com.sun.star.comp.Draw.SVGWritercom.sun.star.text.XTextContentcom.sun.star.container.XIndexReplacecom.sun.star.svg.XSVGWritercom.sun.star.svg.SVGWriterGradient_radialGradientfill-opacitystroke-opacity, monospace, serif, sans-serifobliqueunderline line-through XTEXT_EOPunderlineline-throughTextPositionHyperlinkIdListC L  Zellipsemiterbevelsquarestroke-dasharraystop-color:gradientfill:url(#com.sun.star.text.ParagraphNumberingLevelNumberingRulesNumberingIsNumberNumberingTypeBulletCharcom.sun.star.text.Tablecom.sun.star.text.XTextRangeTextParagraph<date><time>TextPortionTypecom.sun.star.text.XTextFieldDateTimeIsFixedIsDatePageNumberPageNamePageCountbullet-styleimage-stylenumber-styleooo:numbering-typeListItemSVGTextShaperotate(bullet-char-translate(#bullet-char-template-embedded-bitmap(EmbeddedBitmap.bpBulletPlaceholderPlaceholderTextUrlField<white-space: pre<number><slide-name>
data:image/jpeg;base64,data:image/png;base64,imageXGRAD_SEQ_BEGINXPATHFILL_SEQ_BEGINXGRAD_SEQ_ENDXPATHSTROKE_SEQ_BEGINXPATHFILL_SEQ_ENDXPATHSTROKE_SEQ_ENDXTEXT_EOLopacity: maskmask:url(#bitmap-placeholder(BitmapPlaceholdercannot create std::deque larger than max_size() ���Ȋ��@�������������8���8���8������8���X�������8���p�������І������(�������@���h�������������������������������������������������������������������(���@�������������������������h���H������H������H���H�������H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H���H�������d�,���X� �@ @stroke-linecap@stroke-linejoin@
stop-color@offset@
gradientUnits@
xlink:href@font-weight@
font-style@	font-size@font-family@fill@stroke-width@height@width@ry@rx@cy@cx@y2@x2@y1@x1@y@x@style@	transform@stop@linearGradient@text�������N3com3sun4star3svg10XSVGWriterEN4cppu14WeakImplHelperIJN3com3sun4star3svg10XSVGWriterENS3_4lang12XServiceInfoEEEE9SVGWriter@�@0C�o@{�G�zt?Y@���������������?�p=
ף�?ffffff@�������;!�d�0�y�X�y�p���D��F��a������,���� (��"ƒ�#���#���t%ʘ��%���P&��&.��'ę�4(^��+���+���,��-��@0"��0v��1М�|1��2���2��34��p3T��3���<8ء��8��L9���8:Ȣ��:���\;̨�<>���<���=f��?���x?���t@\��8Cέ�D$��FL��F\���FR��dG����G��DJ:��LKL���Kh��<L���|M���N��O>���O���xP���Q��Qt�� R��RZ��S����T���<U��X ���Xx��`Y����Y���Z���Z��\\��\����_���b���c8��c����c���hd���dn��f���g����g^��hh���i���(j���j���kN��k���kf��hl���l2��Tm����m0��0n\��n���o���xp����p���Xq����q��\r���(t���t���Hu*��u���v���v���wz��lwb��@xR��x���y���y,��Lzp��z���4{���{���8|���|B��p}����}���x~���~>��\P���`��d�������`�������p�����0 ��4p��h���|������P��t���d���������X���P���P�� `���!�	��,"�	���"/��D#01���#@1���P1���`1���p1����1����1����1����1����1����1����1����1��2��x2��� 2���02���@2���P2���`2���p2���2��D�2��X�2��l�2����2���2�� �2��(�3��� 4���4��<`5��x6����6���@7���8���`8����8��9��,P9����9���:����:��H0;��,P;��Hp;��@@����F����F���H��L�K����L���`N���N��(�N��<0P���@Q��PV��HpV��\�V��p�V����V����W���X��P X��d@X��x�X��� Z��� \��D�\�� ]�� �^���  _��$!``��d!�b��@"�d���"�e��D$ f��`$Pf��|$�f���$�f���$�f���$g��<%�g���%h���%ph���%m��<&@m��d&�m��p'�n���'@o��(�o��l(�p���(`q���( r��)�r���*�s��8+�u���+@v���+`v���+�w��@,z���,P���(.�����.���/���0����`0p����00���41P����1@���,2p���H2����d2����2p����2д�� 3`���8 ����8 ����8�����9����\:���(;��;���<����H=����>���8?@���?���(@`���B���`C���lD0"���Ep;��$F=���F�F��G�M���GpY���I����J���pK�����K ���@M���M ����M�����M����@NP����O���P����P���4Q`���Q@��DR0��R���#���#��$�$�0$ ��$0�%��4)p�p)��)���)P�$*��`*���*0��&���&���&@�'��' �D'���-0��/P�1��$4��84��L4��|4��4��4`���5p���l5p����5�����5 ���(60����60���6P���6���H7����7�
���7��\80��p8P��p9p���9���9 ���:@��;`��;���8<0
��p<�
���<p���=����=@��(>���\>����?P���@����@���,A���tA@���A���Bp��<B����B���tC���C@!���C�"��D@$���Dp&��4E�'��tEp)��H�*��XHp,���HP-���H�.��<I 0���I�1��hJ�1��|J03���J 4��`L`5���Lp5���L�5���L�5���L�5���L�5��M�5��M�5��,M�5��8O 8��@Sp:���S;���SP=��T�=��XTP>��lT�>���T�B��U�C��<X�G���X@L��Y�U���Y�V��\U�V��pUX���U�X���U�Y��XV�Z���V \���V�\��(W�]���W`^���W`_���Y�_��xZ�_��[@d��P[�d���[�d��\e��,\�e��x\�e��<]f���^�f���^g���^�h��_0q��`�w���`�����a����a����a0����a`���bЎ��$b���8b���b����<c����c`���d���� d`����d@���ep���e����8eа��Te���peб���e����e`���Pf�����fp���@g���tg�����gн��h� hP����h�����h����h@����h����i���`i`���i���Lj@���j`���j��0k`���k`�� l����l���mp��xm���m�Pn@�pn���n�� oP�4o�Ho��,p0����p���� q�����q���r���s@��Dt���u���hup���u ��dv +���v-��,w�.���w 1��dx3���x�:��@y0;��hyG���y�K��pz�]���z�c��X{�x���{�\|@����|����}��}���~p����~��������Z���[���[ ���[0��(Z����]p��^��D^���dZ���x[����[����[����Z@�� ]����]��X]����] ���o���p����p����p��q ���q@���q`���r0���r@��s`��Xs���ls����s0���t���8v@���wzRx�$HS� FJw�?:*3$"D@h�\8h�t�������
����
��������
����	����	T ��	8� ���F�B�E �D(�G@G
(D BBBGP���)F�bzPLRx���,$�$����lF�A�DPd
DBK����
�$%��Dd_�\%��Dd_�%��Dd_�%��Dd_0t{�1AAF4�8��?lF�O�D �D@�
 DABAR{�Tl@�������
����L����B�P�B �B(�A0�A8�G��
8D0A(B BBBK���04��
D0��
X,��
l��
���
���
����
����
����
����
����
���
0 ���GE�A�G j
AAGDAAT��	h���)F�b��#��RM�`
C(�T$���F�D�D0~
DBF0����OE�A�G p
AAIDAA0���OE�A�G p
AAIDAA(4P$���F�D�D0~
DBF0`���GE�A�G j
AAGDAA�#��RM�`
C8�����F�B�E �E(�G@G
(D BBBF8����F�B�E �E(�G@G
(D BBBF8(|���F�B�E �E(�G@G
(D BBBF8d����F�B�E �E(�G@G
(D BBBF8�D���F�B�E �E(�G@G
(D BBBF8�����F�B�E �E(�G@G
(D BBBF�"�� E�V4#�� E�VHP4��GB�B�B �B(�A0�A8�D`.8A0A(B BBBH�8��F�I�B �E(�A0�A8�D@
8A0A(B BBBE�|��E�L�P"���F�B�B �B(�A0�A8�D�G
8D0A(B BBBJ��G�I�F�B�B�N�h�R�B�B�S���B�B�B�S����&��aF�B�B �B(�A0�A8�G�J
8D0A(B BBBD�G�I�F�B�B�N�}�R�B�B�S��J�F�G�S���B�B�B�S�0�@��WeM�B�A ��
BBI�t�,e ���,0��eF�A�D0b
DBA`}t��d0���	�+��<��+����dF�B�A �D(�J��
(A ABBI\8
L-��F�B�A �A(�Dxl�D�D�Ppk
(A ABBE�
(D ABBO0�
�/��F�A�A �D@s
 HABF0d	�0���dE�C
G�����. x
AD2��P2��`(\2���F�B�B �B(�D0�D8�D`{
8A0A(B BBBC�
8A0A(B BBBF`��3��F�B�B �E(�D0�A8�D@e
8A0A(B BBBI�
8A0A(B BBBD@�
44��cE�C
D��I�E�K�K
H). v.�. r.49��H9��\9��p$9��,09���bF�A�D@l
DBC�:��L`l����bB�B�B �B(�A0�A8�G�K
8A0A(B BBBJ �Lq�9Pb�������<
�9��P
�9��4d
�9���F�E�A �A(�D0o(A ABB@4:��H�aI�F�B �D(�D0��
(A BBBALx$;����aF�B�B �B(�D0�D8�Dp
8A0A(B BBBG00�<���E�D ^
AHA
AF|Ad���
x|��
�x��
�t��
�p��
�l��
�h��
��<��!t�<���U�B�B �B(�A0�D8�GPI8A0A(B BBBF������HP�������
8A0A(B BBBA0���	O`E�C
D��K��K��
H0H�n�n�`������g. t.T. t.(��=��nF�D�A �MAT<��=��=K`F�B�A �D(�G0�
(A ABBBL��>��'`F�B�B �E(�A0�D8�D`�
8D0A(B BBBBP8���m�_F�E�B �B(�D0�A8�G�M
8D0A(B BBBK �p��_����������
P�8@��&�_F�B�B �B(�A0�A8�D�N
8D0A(B BBBC<B��=s_F�B�A �D(�G0�
(A ABBB8X��(%O_E�C
P������

FE.�.0��o��'aA�������. s.. s.\����+aF�B�E �A(�D0�D@B
0G(A BBBJ�
0D(A BBBB (�t��`@������`
��
���������������0�A��)F�bL�A��)F�bh�A��)F�b��A��)F�b��A��)F�b�B��)F�b�,���8�(����F�B�E �D(�G@G
(D BBBG4��A���K_F�B�A �J@|
 ABBA�2s� _@����$B��7E�q�HB��eE�w
D[��r�1AAFL�|B���B�P�B �B(�A0�A8�G��
8D0A(B BBBK(�F��"<�r�A,��F��G;^B�A�L e
DBAfr�+^ ���x��RM�`
C����RM�`
C���Dd_�8��Dd_(p���F�D�D0~
DBF(0����F�D�D0~
DBF<�F��W]B�E�A �D(�G0�
(A ABBD4vq�/]0����4��F���F�K�A �t
EBKAAB(�0G���F�K�A �~DG4 �q�I�A�A �}
EBEAAB4XlG���M�D�A ��
EBKAAB4��G���M�D�A ��
EBKAAB(�|H���M�D�A ��DG(�I���M�D�A ��DG8 �����F�B�E �E(�G@G
(D BBBF8\�����F�B�E �E(�G@G
(D BBBF8�\����F�B�E �E(�G@G
(D BBBF8������F�B�E �E(�G@G
(D BBBF8$����F�B�E �E(�G@G
(D BBBF8L�����F�B�E �E(�G@G
(D BBBF8����F�B�E �E(�G@G
(D BBBF<\H���ZF�B�A �G(�G`�
(A ABBA�>o�,�Y`����H$�H���B�B�B �B(�A0�A8�D`�8A0A(B BBB0J����YM�A�D �s
DBE<�n�hY ����`J��E�LH�dJ��B�B�B �E(�I0�G8�G�]
8D0A(B BBBDP�8K��s�XF�I�B �B(�K0�A8�G��
8A0A(B BBBF 
n�L�X��������<@M��F�XB�B�B �B(�A0�A8�G�J
8D0A(B BBBH��G�I�F�B�B�N�X�M�B�B�S��G�I�F�B�B�N�1�U�B�B�]���B�B�B�]� fm��W�������|����sF�B�B �B(�A0�A8�G�P
8D0A(B BBBF��G�I�F�B�B�N���J�F�B�S�� T��aB�B�B �B(�A0�A8�G�J
8D0A(B BBBH�G�I�F�B�B�N�}�R�B�B�S��J�F�G�S���B�B�B�S���Y��B�B�B �B(�A0�A8�G�P
8D0A(B BBBBJ�G�I�I�B�B�Q�f�B�B�B�Y���G�D�B�Y���I�M�B�Y�2�G�L�B�Y�M�G�L�B�Y�M�G�L�B�Y�I�G�L�B�Y��P����n��<��n���\UF�B�D �A(�D0v
(D ABBH��j�)U0����P�Ho���
UF�E�B �B(�A0�A8�J��
8A0A(B BBBF 8fj�S!U�������4\�y���UE�C
P�����z
F.l. �^k�Z�T������D��|���TF�I�G �D(�F0�JP�
0D(A BBBE Lk��TP�����0� ����OE�A�G q
AAHDAA4Xt}���CTF�D�A �G0�
 DABG��j�T0���!���)K�P�4! ���E�P4�$���~�SF�B�D �DP�
 DBBH  Vj��SP����!L���S,T ����[sSF�E�A �r
BBA� j�SS ���L� �����NSF�B�A �D(�G0{
(A ABBKK
(A ABBA� �i� S0�����|"�i�lB�B�B �B(�A0�A8�D���F�B�F�B�B�N���J�J�B�S���J�J�B�S�e8D0A(B BBB#t���$#����,8#�����N�A�G SH�A�V ��h#���|#���`�#$����F�B�B �B(�D0�D8�D`{
8A0A(B BBBC�
8A0A(B BBBK`�#P���F�B�B �E(�D0�A8�D@e
8A0A(B BBBI�
8A0A(B BBBA@�"�����3QE�C
D��I�E�K�K
H). v.�. r.�$���`�$����F�B�B �B(�D0�D8�D`{
8A0A(B BBBC�
8A0A(B BBBK`%���F�B�B �E(�D0�A8�D@e
8A0A(B BBBI�
8A0A(B BBBA@$����_PE�C
D��I�E�K�K
H). v.�. r.�%X��`�%d���F�B�B �B(�D0�D8�D`{
8A0A(B BBBC�
8A0A(B BBBK`4&���F�B�B �E(�D0�A8�D@e
8A0A(B BBBI�
8A0A(B BBBA@0%<����OE�C
D��I�E�K�K
H). v.�. r.�&���4�%T}���OF�B�D �D@�
 DBBA�%|i�^O@���H'���\'���P&�}���1OF�B�B �B(�D0�A8�D��
8A0A(B BBBD \&�h��N�������L�&��k�NF�B�B �B(�A0�A8�J��
8A0A(B BBBF �&�h��N�������\(���Hp(����F�E�A �A(�D0V
(D DBBMD(A ABB�((��Ph'����>NF�P�B �B(�A0�A8�G�
8A0A(B BBBA �'Fh�B
N�������h�'L����MF�B�B �B(�A0�A8�J�1
8A0A(B BBBE�
8A0A(B BBBF L(�g��oN��������),���)8��*D��0�(����7	NE�Q
D��M����
F0�(Xj��NA������e. p.[. p.�)h�����NF�B�B �B(�H0�A8�G�G�L�b�B���[�n�A�i�[�n�A��
8D0A(B BBBF �)�l�q�N�������4$+@���F�E�A �A(�D0�(A ABB\+���gL*d����SNF�B�B �B(�A0�A8�G�{
8A0A(B BBBF X*bm�u�N�������L|*����sNF�B�B �B(�N0�A8�D`K
8A0A(B BBBD8�*`���-_NE�C
B�I���D��.�
Fc. +(n��N������H�,���+F�B�A �A(�D0�
(I ABBED(A ABB0�,����E�A�D y
IAKDAA0-���F�A�G K
AHFoJB`H-����F�B�B �E(�A0�D8�D@L
8I0A(B BBBJD
8C0A(B BBBHPD,����MF�B�B �B(�I0�F8�J�{
8A0A(B BBBF �,Jm�ZYM�������<�,p���=MF�P�B �A(�G`D
(A BBBA�,@m�6M`����@�.����F�B�B �A(�C0�N@Y
0A(A BBBCH�.����F�B�B �B(�A0�A8�D@~
8D0A(B BBBCH�-���tjLF�E�E �E(�A0�G��
0A(B BBBF �-zl�f:L������P.���&LF�B�B �B(�A0�A8�D�N
8D0A(B BBBC<p.���=�KF�B�A �D(�G0�
(A ABBBD�.�����KF�D�B �D(�A0�G`T
0A(A BBBDH`0���F�B�B �B(�A0�A8�D@~
8D0A(B BBBC<D/x��=_KF�B�A �D(�G0�
(A ABBB8�0x���F�E�G �D(�K@a
(D ABBED�/,��&�JF�B�B �A(�D0�GPh
0A(A BBBJD0��1�JF�B�E �B(�A0�GPh
0A(B BBBHhP0����	�JF�B�B �B(�A0�D8�G�M
8D0A(B BBBFp
8A0A(B BBBF$�0j�r�JA�������L2x��	`2d��!P1���&SJF�B�B �B(�A0�A8�D�N
8D0A(B BBBC<`1\��=JF�B�A �D(�G0�
(A ABBBL�1\����IF�D�B �B(�A0�D8�GPT
8D0A(B BBBEL�1|��=�IF�B�B �B(�A0�A8�D�q
8A0A(B BBBC @2
i�V�I�������Pd2X��&�IF�B�B �B(�A0�A8�D�N
8D0A(B BBBC<�24�=oIF�B�A �D(�G0�
(A ABBBD�24��KIF�D�B �D(�A0�G@T
0A(A BBBD@@3l��:/IE�C
H����D��
K�.U.�.�. �3h�'J������`�3D����JF�F�E �B(�A0�A8�D���L�W�D�r
8A0A(B BBBA 4�i��I�������<04L����	�IE�C
B�E�I�F���
D�.r. p4hi��I������P�4�����IF�E�E �B(�D0�A8�G��
8A0A(B BBBG �4�i�f�I�������h5`����IF�B�B �B(�A0�D8�G��
8N0A(B BBBO�
8A0A(B BBBF x5�i�c�I�������<�5P�=�IF�B�A �D(�G0�
(A ABBBD�5P���IF�G�B �A(�A0�G@�
0A(A BBBH8�7���F�B�A �D(�G0�
(D DBBJ\�7l�zF�F�D �D(�D0{
(A ABBGq
(C ABBGD
(G ABBHH(8��MF�B�E �F(�D0�D8�D@�
8E0A(B BBBAD7��\�HF�D�B �A(�D0�G@V
0D(A BBBGpT7����2�HF�B�B �B(�A0�A8�G�G
8A0A(B BBBJ�d�z�A�o�A�C�A� �7�h�J�������T9�g<8l�=�IF�B�A �D(�G0�
(A ABBB8�9l��F�E�G �D(�K@a
(D ABBEP|8A���sIF�B�B �B(�A0�A8�D�
8A0A(B BBBF �8�k�-I�������P�8�B���IF�B�E �B(�A0�A8�D�M
8A0A(B BBBA H9�k��H�������Pl9�C����HF�B�E �B(�A0�A8�D�M
8A0A(B BBBA �9$k�mH�������<�9��=SHF�B�A �D(�G0�
(A ABBB�;��	�;��
�;��
�;��
�;��
�;��
<��
<��
8�:�C����GB�A�G�|
DBDW
EBJ;j�aG����<@D��3E�U
FK(�<`D��mF�A�D \
ABF4h;�D��GE�C
P�����A
G.g. �;zi�tG��������;XJ����FF�E�B �B(�A0�A8�G��
8A0A(B BBBA�S�{�A�^�P�u�A���G�F�I�B�B�Y���G�G�B�c�=�G�A�B�c�V�B�A�B�a� �<�h�+*G�������L�<��2GF�B�B �B(�D0�C8�G`�
8D0A(B BBBE`=�d���GF�B�E �E(�A0�D8�G��
8D0A(B BBBF6�P�C�A�$p=Jj�R�GA�������`�=�t���tGF�B�E �B(�A0�A8�D���L�W�D�k
8D0A(B BBBA �=k�G�������p >�u��YGF�B�B �B(�A0�D8�D�`�[�j�A�h�I�p�A�M
8D0A(B BBBI �>�j�a�F�������t�>�y��z
�FF�B�B �B(�A0�A8�J�Q
8D0A(B BBBJ��I�`�A�|�I�u�A� 0?Nj�r�F�������LT?������FF�B�B �B(�A0�D8�Gp�
8D0A(B BBBI �?Lj�u�Fp������<�?���FF�B�A �D(�GPb
(D ABBA@^j�p�FP����p(@������FF�B�E �B(�A0�A8�D���J�X�A�d
8D0A(B BBBHa�Q�R�A�$�@:j�_MF�������H,B��GB�B�B �B(�A0�A8�D`.8A0A(B BBB<xB���G�B�D �A(�D0_(A ABBI����H�B,�GB�B�B �B(�A0�A8�D`.8A0A(B BBB<C0��K�B�D �A(�D0l(A ABBH����DC��`4XC���F�E�A �A(�D0e(A ABB8(B4���DE�C
D��J�J���. `.�
G dB�h�B�D������4�B����DF�L�A �G0H
 DABG�B�h�xD0���HDL��!D�Bh��LDF�A�D �D0�
 AABIT
 AABH8�D@���F�B�A �D(�G0�
(D DBBI`�D����F�B�B �E(�A0�D8�D@[
8I0A(B BBBKD
8C0A(B BBBH8DE`���F�B�A �D(�G0�
(D DBBJ\�E��zF�F�D �D(�D0{
(A ABBGq
(C ABBGD
(G ABBH0�E$���F�A�G H
AHAgJBlF����F�F�D �D(�D0F
(D ABBI{
(G ABBID
(F DBBFQ(D DBB0�F ���F�A�G H
AHAgJBl�F����F�F�D �D(�D0F
(D ABBI{
(G ABBID
(F DBBFQ(D DBBL�E<�X�AF�B�B �H(�E0�D8�Dp\
8A0A(B BBBK Fze�MAp������84F(�T1AE�C
P�����g.u.R
A pF,e�X3A������L�F(�4	AF�B�B �B(�A0�A8�G�{
8A0A(B BBBF �Fe�lA�������LG�)PAF�E�B �B(�A0�A8�D��
8A0A(B BBBA XG�e�A��������H`��)F�bI�g��	8Ih���F�B�E �D(�G@G
(D BBBGPIDj��	dI��
xI\j��Dd_�I�d�A�Q<�I�d�B�A�A �D@�
 DABEY AABL�I����B�P�B �B(�A0�A8�G��
8D0A(B BBBK$<J���1A�D�G ^AAdJ@i��
xJ<i��
�J8i��
�JDf��
�J@f��
�J<f��
$�J���bB�A�G HIBK���	,�I�����>F�P�G0k
EBA�Ild�F�>0��dK@	��
�xK�d�lB�B�B �B(�A0�A8�D���F�B�F�B�B�N���J�J�B�S���J�J�B�S�e8D0A(B BBBLh��RM�`
C(L���)F�b(DL�h���F�D�D0~
DBF(pLi���F�D�D0~
DBF�L�g��RM�`
C8�L�d���F�B�E �E(�G@G
(D BBBF8�L`e���F�B�E �E(�G@G
(D BBBF80M�e���F�B�E �E(�G@G
(D BBBF(lMx���F�H�G b
ABF�M,��E�LH�M0���B�G�B �B(�A0�D8�J��
8A0A(B BBBA��L�	��F�;B�B�B �B(�A0�A8�G�J
8D0A(B BBBH��G�I�F�B�B�N�X�M�B�B�S��G�I�F�B�B�N�1�U�B�B�]���B�B�B�]� dM�e�*;���������N$��aB�B�B �B(�A0�A8�G�J
8D0A(B BBBH�G�I�F�B�B�N�}�R�B�B�S��J�F�G�S���B�B�B�S��O���B�B�B �B(�A0�A8�G�P
8D0A(B BBBBJ�G�I�I�B�B�Q�f�B�B�B�Y���G�D�B�Y���I�M�B�Y�2�G�L�B�Y�M�G�L�B�Y�M�G�L�B�Y�I�G�L�B�Y��P,��4�P0,��	�P,,���P8,��*E�Z
IA�PH,��nQ�,��.L�O�,����8F�B�E �B(�D0�D8�G��
8A0A(B BBBF Pc��8�������h0P,.���x8F�B�B �E(�A0�A8�G�~

8D0A(B BBBM?
8A0A(B BBBG �P�b�69�������D�PLC��y9F�E�E �B(�A0�GP�
0A(B BBBH Q�d�]�8P�����4,Q`E��A�8F�A�A �G0�
 AABEdQ�d�B�80����RXF��2E�b
IAD�QxF���}8F�B�B �A(�A0�GP�
0A(A BBBG �Qhd�8Y8P�����LR�G���=8F�B�B �B(�D0�D8�G�D
8A0A(B BBBG `R,d�^18��������S8K��)K�O�TLK��E�O$TPK��9T�`D�@TtK��9T�`D�4\T�K���E�A�D@�
DAHT
AAA�T L��-��T<L��_F�E�L �B(�A0�A8�G@T
8A0A(B BBBHd
8A0A(B BBBJJ
8A0A(B BBBDN
8A0A(B BBBH<�SM��[�6F�B�A �H(�JP�
(A ABBFT�b��6P����h4TN����6F�B�B �E(�A0�A8�X�E
8A0A(B BBBHd
8G0A(B BBBL �Tfb�`M6�������0,V(S���E�A�G j
IAODAAP�T�S����5F�B�B �E(�A0�C8�J��
8A0A(B BBBC LUb�s�5��������V�U��2E�b
IA�V�U��D�U�U��]{5F�B�B �A(�A0�D`t
0A(A BBBD �U�a�5H5`�����xW�V��mH0_
A�WW��8I�n�W4W��8I�n0�WXW��8F�C�D �GP
 AABAHXdX���F�B�E �H(�A0�D8�F`�
8D0A(B BBBAL�VY���X4F�E�B �E(�D0�A8�D`�
8D0A(B BBBA 4W�`�4`������PXW�Y���3F�B�B �B(�A0�A8�J��
8A0A(B BBBH �Wt`��3�������4�W,_����3F�A�A �G�q
 DABIX*`�'m3�����Y�_��P<X�_���A3F�B�B �B(�D0�A8�W�@
8A0A(B BBBA �X�_�p3�������P�X�a��O�2F�B�B �B(�A0�A8�J�9
8A0A(B BBBE Y�_��2�������P,Y�e����2F�B�B �B(�A0�A8�T��
8A0A(B BBBA �Y�_�p�2�������D�Y8h��$|2F�B�B �A(�G0�G�q
0A(A BBBF �Y�_�`2������LZ�j��=E2F�B�E �J(�A0�D8�Fp�
8A0A(B BBBH `Z*`�$2p������P�Z�k����1F�B�B �B(�D0�I8�G�q
8A0A(B BBBE �Z�_��1�������P�Z�p��u�1F�G�B �E(�A0�D8�G��
8A0A(B BBBF P[`�O�1�������<t[�r��~1F�B�A �A(�D�l
(A ABBH�[�_�+T1�����<]�t��2E�b
IA4\]�t��xF�B�D �w
BBI_BBP,\u���0F�B�B �E(�A0�A8�J��
8A0A(B BBBJ �\X_��0�������^�v��h ^w���L�\�w��qk0F�B�B �B(�A0�G8�G�E
8A0A(B BBBF ]B_���0�������@�^\W���E�A�K l
AAAC
DAHd
DAG(�^�W���F�A�D �h
DBGH�]\����0M�A�D �t
ABGT(Z0M(A A
ABH�]0_��/ ���,^������/F�A�G0e
DBAL^�^��/0���_�W���_�W���_�W��4�^�����h/E�C
M�����1
J]
C(�^�^�^/������Z. p.p`�W��,_�*7/E�C
I������
D(L__�7�/�������. w.�`DW��P�_����;�/F�B�B �B(�A0�A8�J��
8A0A(B BBBF �_�`�~0�������Lla�V���F�B�B �A(�D0�o
(A BBBKM
(A BBBD@T`XW���/F�B�A �D(�J��
(A ABBC@�`$Z��u/F�B�A �D(�J��
(A ABBHDb]��!HXb]��\F�B�B �B(�A0�D8�G@�
8A0A(B BBBC<<a0_��=�.F�B�A �D(�G0�
(A ABBB,|a���3�.E�D�FP�
AAF�ah`��.P��P�a���.F�B�A �A(�GPq
(A ABBH�
(A ABBNb`�P.P����L<bp_���;.F�E�B �B(�A0�D8�D`�
8D0A(B BBBC<�b���.F�B�A �A(�G`�
(A ABBG�bv_�c.`����P�bp�����-F�B�B �B(�A0�D8�G�*
8D0A(B BBBI @cf_�W�-�������4dc������-F�D�A �G@r
 DABA�cb_�}-@���($e�`��qF�D�A �PATL�c����
9-F�B�B �B(�A0�A8�G�{
8A0A(B BBBF 8d�^�S-�������0\d@����7-F�A�A ��
ABA�d�_��- ���<�dܵ����,F�A�A �`
ABMA
ABA�d`���, ���`xf�_���F�B�B �E(�A0�A8�D`%
8A0A(F BBBEn8A0A(B BBBLte����sO,F�G�E �E(�A0�E8�G`�
8A0A(B BBBD �e`��?,`������D�e�����7,F�A�A �G0h
 IABMD
 AABA0f�`�s�+0���LPf<���f�+F�B�B �B(�A0�A8�J�D
8A0A(B BBBJ �f�`��+�������$,h8����F�A�G �DBP�f������+F�B�B �B(�D0�D8�J��
8A0A(B BBBH @g�`�,�������hdg����+F�B�B �B(�A0�A8�D��
8A0A(B BBBF�
8D0A(B BBBM �g�`�D�+�������D�g��H�+E�C
B�E�E�E�D�z.g.�
I.|. <h�`�u,������T`h���,E�C
B�E�E�E�H�.X
Kc..K.n.O.b.>.y. �h�a��+������`�h����+F�B�B �H(�D0�D8�J��
8A0A(B BBBH��A�@�A� @i2a��+�������Tdi���+,�+E�C
F���E�K�
Hg...�.
.�.�.i. �i\b�W
-������L�i�(��E	�,F�B�B �B(�A0�G8�G�O
8A0A(B BBBD 0j@d�N-�������H�kh1��mF�E�D �G(�F0Z
(J ABBKD(J FBBP�j�1��;�,F�E�B �E(�A0�D8�J�%
8A0A(B BBBH �j�d�z�,�������PkT7��{,F�B�H �B(�D0�A8�J��
8A0A(B BBBC lk�d�$L,�������h�k�;��p0,F�E�E �E(�D0�D8�Kp
8I0A(B BBBHl
8A0A(B BBBJ �k`d�8�+p������P l�>��-�+F�B�E �E(�A0�A8�J��
8A0A(B BBBA tl d�%�+�������D�l�A��9�+F�G�E �A(�A0�J��
0A(A BBBB �l�c�Gl+������lnXB��
��
<��!�`����).O��n�����'=yV����E�a����Aw�������I9D������8�����(���	�	�	�	}}4`(`��E���I�������[���0
&��%9e������}��%���������k��������
���
��
������
��
��
�[�
�1�t�
�
��
��g����������9���������{����-!;R���������}�^��	T�{}�^��������}t^��9���������5OD�F�X�F��F����F��F���F��F���F��G���F��G��H��H��H�!�	W�H�
�G�
��F����F��E��G���F���F��F��F���H� �H�,��F��G��J��I��F���I��F���F��I� � ��F�"�G�"+�%�F�&�I�&�F�'�(�G�*�I�*�I�*��I�-�G�-"�-�I�.�H�.�H�/�/�I�0H�G�1�H�1�J�2�J�3�3s�I�4�I�4�I�5��I�9�I�:�<�G�>"�G�?�?�I�@�A�F�A�A�I�B�G�C�I�E&�H��5,��������������
f������	3b�����-;��&��
*:��<��
qv���7f������!��V�����~�������5���!�
!�����	()Z�����`�������������	��
��
������
�����������!�������������1��H�����7�����L�������&C4O����E�a����#4~Br����Aw�������I9D������8�������	�	�	�	�	}}�Y�Y��I9D������8�������	�	�	�	�	}}PYDY��I9D������8�������	�	�	�	�	}}Y�X��8�E�V�����E���I����������Ed!�������������������!��	�� ������������+���{��-��-��*��,��,��+�	�*�
�,��,��-�
�-��-��-��-��-��+��+��-��+��,��+��+��.��-��-��,��,��,��+��,��,��+��+��+� ��#�+�$�,�&�+��1�������������������������������	��	��	��
��
�
���������������
��
�
��
���'}c��������������IU��������������<����������������#�������	��
��
��
��*�������������������������������	��
��������������������������.��9/���������������}���Mk��������������	��
��������
�������������������C����3~��$��������������+��|�������!��W�
��
���
�	�
��O��������}�S��9�������) >I���O�������9�������������������frF����������	0��
�����������$����V������"���)F��������}�R��9�������) @J���G�������4������������������)��������}�Q��9�������) >D���K��������7'��/��.��/����.��0��.�	�0�	�0�
�/��0��0��0�
�0��0��0��0��/���/� �0��2��2��.��1��1��1��1��1��1��1��1��1��1��2��2��1�6�!�/�"�.�"�/�#�$�/�$�.�$�/�%�&�1�(�0�(�0�*�/�����
B~������uY�R��3������������������	��
������������������k����
��
��
��
���
��
��
��
��
��
�	�
�	�
�
�
������
�����_W��������������������	��	�
��������
��
��������������@���9���������G����������}XN��9�������>J�G��������a��e��a��d���d�	�d�	�c�
�d��d��d��d��a�^�d�
��c��c��a��a��a��c��c��d��d��d��e��b��_� �b�!�`�"�`�#�`�$�a�'�a�'�b�(�`�(�)�_�)�_�*�*�_�+�_�+��0�`�0�1�`�2�`�3�a�5�d�6�a�7�a�8�_�8�d�:�`�;�`�;�b�<�b�=�b�>�b�>�c�@�c�A�c�C�c�D�c�F�b�H�`�I�b�J�b�K�b�L�b�N�`�N�`�O�_�P�`�Q�c�U�`�W�`�X�_�Z�b�\�`�^�b�^�`�_�`��t���9�������
{T����
���E��������E�������9�������
n������;����1������������	��	���33���NV�7o�6��7��4��6��W�4�	�6�	�7�
e��5��5�
�4��,�4��6��5��6���6���5��5��5��5�"�$�5�%�5�&�6�'�5�)�5�)�5�)�6�+�5�+�6�+�4�,�5�,�6�,�5�,�6�,�5�-�5�-�5�-��5�0�6�0�4��U�����5,1������
���������Be���4��� �� ��>� ��� ��!�� �� �	� �	� �	� �	� �
�� ���
�����z�1��� ������� �� ����������� �� ���� ���'����
/����
C������>W���������K�����������6+���T!�>����������������	�����$��������������������%��]T.q�����6����P������ ���@����	�
���Q-��1)*E�e�u�����$����L��.��	���	�������	����A��.CQ����������������#�������
k����/&�����
��:3T�b�������������������'1���fN�������������������l������������	��
��
��������
��
��
�������u��
%c�'�������).A���!�
!������h������S��'���(���'��'��'��'��*��*�
�*��+�
�+��+��(��*��*��*��(��*��*��*��*���)��)��)��*��)��)��)��)��(��(��)��)��(��)��(�G�(��)��(��'��(� �'� �'� �'�#�'�$�'�$�(��H���a��������� =��a���������&�� Ap�������@���!��@8�������������!������^���!��0`����H�����/<�������
���!�
��
�	�
��I��������������]�����������	8ES�����_�
���
��'C�\���"��!I.�����������Y��2m������������j�������+_�������������Y��()i�����������������8O����F�����F@NH�
����
�����
��
��
��
��
�	�
�
�
��+������������������������&��z���������)TO*��t8���������������������	��	��
�����������������1p��V�����*C\����E�a����Aw�������*Nw����������-���Z����/���>v���������������������������2�*����	��	����������������0���������,�����_�����l����?E��������4��'�%���������	�	� �
� �� ��������
�����������������x��GP���������JP���������9��������"������������-!����S�����}��'!
�����)�������� C��&<���c���������=��	.6:�����f�����&����������	��	����������
?���������n�����������
��H�����=5l�������������������*4�����w���n��R4��
��
�i�
�������.������	��	��
!�
�
���P���AT�����������������������	��	�
��
������
��
��
������������������"���������)��*����������������?���x���#���"��"��"��"��$��"���"�	�	*�"�
��$�
�#�
��$��#��"��"��$��$��"��"��#��$��#��#��$��#��#��#��#��#�"�#��J;��
RZ�
������I7�8�)��'�J�)��)��)��)�W�(��(��(�	�(�	�(�
�(��(��(��(����'�W�(��(��(�$�(�4�)��(��)��'��)���'���(�%�)��Z������sq��V��V���W��W��h�W��W�	���V���
�U��U�#�W����V��J�V��U�!�U��U�4�U���V��W����V��� �U� ��%�W�&W�'�V�(�U�(�U�(�U�)��-�U�-��U�/$�W�0�W�2�W�3N�W�5�5�V�5�X�5�X�59�X�6��W�=��?�V�?�@��W�A�W�B�W�B�W�F�G6�W�H�U�I��W�L��O�W��v���pB�������������������	��
��
��
����������
���.���;W��������������c�������>��!Ow��
���
����	��
��48��������������������"a{K����\����������IQ�a��������?�?�&
P������������&
����0���@��'
��`��� �@����B�7�% ����� � ����� � � �@w�[�!��
 �
 �
 �
`�
�
��
`r
�]
�M
`?
�1

 
��	��	��	�	��	`�	��	��	@�	�y	d	�@	`,	�	`	�������������`}�o�b`T�E8(@`
@�`�@���@�`�� ��w`e`U�B�1�$� ����@� �`���`��|�n�]�O�C�7�(��@����� ���@��}@p�k G�G�!
 H�!
`H�!
�H�!
�H�!
 I�!
`I�!
 �!
("
0 "
88"
@P"
H�Ih"
h"
��� ���P�������h"
 �@���@���������h"
�0�p��������h"
@�`�`��������h"
��P�P���������h"
��p�@���������h"
`� �0��"
��� ��J Q��P����?PG�Ga0@@@@�������"
 �@���@����������"
�0�p�Ќ�F��������"
@�`�`��G��������"
��P�P��F���������"
��p�@�pe���������"
`� �0� GGPAPO�fg�&
@g�&
pg�&
�g�&
�g�&
�&
�����&
������&
�A���@���0H�FpA�A�A�A�A�������&
PDp���H0G��������&
�D`����������&
0FP����������&
C@�Ѝ���������&
�E0������������&
pB ������������&
�C����Z�!
�Z�!
 x*
(P"
08[�*
�*
�P ��!@!�������*
� �0"� ��������*
pp ���������*
�` ��*
�P ������!@!@0�����������*
� �0"� ��������*
pp ����������*
�` �p���`�*?9?K?e?�?�?�?�?�?�?�@�
h4P
X
���o��)`
�@0
�0�p-	���o����o�m���o�o�j���ou-
0�@�P�`�p���������������� �0�@�P�`�p���������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0�@�P�`�p������������������� �0��:
@svg_Scalable_Vector_Graphics@!svg_Scalable_Vector_Graphics_Draw��(�0P�8��@�H� @InputStream@http://www.w3.org/2000/svg@ooo:slide-duration@ooo:master-objects-visibility@UseNativeTextDecoration@
EmbedFonts��(�0P�8PI@�GH�GP� @SLIDE_BACKGROUND@b<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">@$com.sun.star.presentation.TextField.@com.sun.star.text.textfield.@text-decoration@id@tspan@defs@g@
clip_path_� (�0� 7ea59b78b7509fef45012afc5c3ffac993a02e.debug�}v.shstrtab.note.gnu.property.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.got.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.gcc_except_table.init_array.fini_array.data.rel.ro.dynamic.got.plt.data.bss.gnu_debuglink�� ��$1���o��l;``p&C�)�)�@K���o�j�j4X���o�m�m@gpp-qB0�0��{��v � � �@�@��P�P��`�`�J�h4h4
�@@� ��[�[��l�l�n�8�8�I+�P
P

�X
X

�`
`

� �-

���/
�
`�0
 
�
�:
�*
H �@
�0
��0
41
"

Youez - 2016 - github.com/yon3zu
LinuXploit