
    \
jg              	          d dl Z d dlmZmZmZmZmZmZmZm	Z	 ddl
mZmZmZmZ ddl
mZmZ d dlmZmZmZmZ d dlmZmZmZ d dlmZmZmZ d d	lmZ e j        d
k    Z ed          Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7d Z8d!Z9d"Z:eZ;eZ<eZ=eZ>ereZ?neZ?e;e j@        _A        ee<ge j@        _B        ee jC        _A        eeege jC        _B        ee jD        _A        eee<ge jD        _B        ee jE        _A        eege jE        _B        ee jF        _A        g e jF        _B        e;e jG        _A        eeege jG        _B        e;e jH        _A        ee<ge jH        _B        de jI        _A        eeege jI        _B        de jJ        _A        eeege jJ        _B        de jK        _A        eeege jK        _B        de jL        _A        eeege jL        _B        e>e jM        _A        ege jM        _B        e?e jN        _A        ege jN        _B        ee jO        _A        ege jO        _B        ee jP        _A        ege jP        _B        ee jQ        _A        ege jQ        _B        ee jR        _A        ege jR        _B        ee jS        _A        ege jS        _B        ee jT        _A        ege jT        _B        ee jU        _A        ege jU        _B        ee jV        _A        ege jV        _B        e=e jW        _A        ege jW        _B        ee jX        _A        g e jX        _B        ee jY        _A        ege jY        _B        ee jZ        _A        ege jZ        _B        ee j[        _A        ege j[        _B        ee j\        _A        ege j\        _B        ee j]        _A        ege j]        _B        ee j^        _A        ege j^        _B        ee j_        _A        ege j_        _B        ee j`        _A        ege j`        _B        ee ja        _A        ege ja        _B        ee jb        _A        ege jb        _B        ee jc        _A        ege jc        _B        ee jd        _A        ee<ge jd        _B        ee je        _A        ege je        _B        ee jf        _A        g e jf        _B        de jg        _A        eeege jg        _B        ee jh        _A        eeege jh        _B        de ji        _A        eege ji        _B        ee jj        _A        ege jj        _B        ee jk        _A        ege jk        _B        ee jl        _A        ege jl        _B        e	e jm        _A        ege jm        _B        ee jn        _A        g e jn        _B         edeeee          Zo edeee          Zp edeeee          Zqi Zri Zs G d# d$          Zt G d% d&          Zu G d' d(          Zv G d) d*          Zweujx        ee F                                <   evjy        ee X                                <   d+d,d-d.d/d0d1d2d3Zzi e*e,fd4e*e-fd5e*e.fd6e*e/fd7e*e0fd8e*e1fd9e*e2fd:e*e3fd;e+e5fd<e+e6fd=e+e4fd>d?d@e+e7fdAe+e8fdBe+e9fdCe+e:fdDZ{ G dE dFe          Z| ew            Z}dJdGZ~dJdHZdJdIZdS )K    N)	CFUNCTYPEbyrefc_void_pc_intc_ubytec_boolc_uint32c_uint64   )DeviceAbsoluteAxisRelativeAxisButton)JoystickAppleRemote)CFSTRCFIndexCFTypeIDknown_cftypes)kCFRunLoopDefaultModeCFAllocatorRefcf)cfset_to_setcftype_to_valuecfarray_to_list)load_libraryl        IOKit)	framework            i  i                             @                     c                       e Zd Zd ZdS )HIDValuec                    |sJ t          j        |          t                                          k    sJ || _        t                              |          | _        t                              |          | _        | j        dk    r t          	                    |          | _
        nd | _
        t          t                              |                    }t                              |          | _        d S )Nr!   )r   CFGetTypeIDiokitIOHIDValueGetTypeIDvalueRefIOHIDValueGetTimeStamp	timestampIOHIDValueGetLengthlengthIOHIDValueGetIntegerValueintvaluer   IOHIDValueGetElementHIDDeviceElementget_elementelement)selfr9   
elementRefs      Q/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/input/darwin_hid.py__init__zHIDValue.__init__   s    x~h''5+D+D+F+FFFFF 55h??//99;!!;;HEEDMM
 !DMe88BBCC
'33J??    N)__name__
__module____qualname__rG    rH   rF   r4   r4      s(        @ @ @ @ @rH   r4   c                       e Zd Zed             Zd Zd Zd Zd ZddZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )	HIDDevicec                 d    |j         t          v rt          |j                  S t          |          }|S N)value_device_lookuprN   )cls	deviceRefdevices      rF   
get_devicezHIDDevice.get_device  s0     ?n,,!)/22y))FMrH   c                    |sJ t          j        |          t                                          k    sJ | t          |j        <   || _        |                     d          | _        |                     d          | _	        |                     d          | _
        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d          | _        |                     d	          | _        |                     d
          | _        |                     d          | _        |                                 | _        t+                      | _        t+                      | _        |                                 | _        |                                 | _        d S )N	TransportVendorIDVendorIDSource	ProductIDVersionNumberManufacturerProductSerialNumber
LocationIDPrimaryUsagePrimaryUsagePage)r   r6   r7   IOHIDDeviceGetTypeIDrR   rQ   rT   get_property	transportvendorIDvendorIDSource	productIDversionNumbermanufacturerproductserialNumber
locationIDprimaryUsageprimaryUsagePage_get_elementselementssetvalue_observersremoval_observers_register_removal_callbackremoval_callback_register_input_value_callbackvalue_callback)rD   rT   s     rF   rG   zHIDDevice.__init__  s   y~i((E,F,F,H,HHHHH*.y'"**;77))*55"//0@AA**;77!..?? --n==((33 --n==++L99 --n== $ 1 12D E E**,,"uu!$ $ ? ? A A"AACCrH   c                 V    dD ]%}t          | |          }t          |dz   |           &d S )N)rj   rk   re   rf   rg   rh   ri   rl   rm   rn   ro   :)getattrprint)rD   xrQ   s      rF   	dump_infozHIDDevice.dump_info.  sD    e 	" 	"AD!$$E!c'5!!!!	" 	"rH   c                 Z    | j         | j        | j        | j        | j        | j        | j        fS rP   )rj   rk   rf   rh   ri   rn   ro   rD   s    rF   unique_identifierzHIDDevice.unique_identifier4  s2     !4<"D$5t7LN 	NrH   c                     t          |          }t          t                              | j        |                    }t          j        |           t          |          S rP   )r   r   r7   IOHIDDeviceGetPropertyrT   r   	CFReleaser   )rD   namecfnamecfvalues       rF   rd   zHIDDevice.get_property:  sJ    t577OOPP
Vw'''rH   Fc                 ~    |rt           }nt          }t          t                              | j        |                    S rP   )kIOHIDOptionsTypeSeizeDevicekIOHIDOptionsTypeNoneboolr7   IOHIDDeviceOpenrT   )rD   exclusive_modeoptionss      rF   openzHIDDevice.open@  s6     	,2GG+GE))$.'BBCCCrH   c                 f    t          t                              | j        t                              S rP   )r   r7   IOHIDDeviceCloserT   r   r   s    rF   closezHIDDevice.closeG  s#    E**4>;PQQRRRrH   c                     t                               | j        t          t	          j                              t                     d S rP   )r7   IOHIDDeviceScheduleWithRunLooprT   r   r   CFRunLoopGetCurrentr   r   s    rF   schedule_with_run_loopz HIDDevice.schedule_with_run_loopJ  s@    ,,NR+--..!	# 	# 	# 	# 	#rH   c                     t                               | j        t          t	          j                              t                     d S rP   )r7    IOHIDDeviceUnscheduleFromRunLooprT   r   r   r   r   r   s    rF   unschedule_from_run_loopz"HIDDevice.unschedule_from_run_loopP  s@    ..NR+--..!	# 	# 	# 	# 	#rH   c                     t          t                              | j        d d                    }|sg S t	          |          }t          j        |           |S )Nr   )r   r7   IOHIDDeviceCopyMatchingElementsrT   r   r   r   )rD   cfarrayrq   s      rF   rp   zHIDDevice._get_elementsV  sT    5@@QUWXYYZZ 	I"7++
WrH   c                 ^    t          t                              | j        ||                    S rP   )r   r7   IOHIDDeviceConformsTorT   )rD   pageusages      rF   conforms_tozHIDDevice.conforms_toa  s$    E//eLLMMMrH   c                 .    |                      dd          S )Nr   r   r   s    rF   
is_pointerzHIDDevice.is_pointerd      d+++rH   c                 .    |                      dd          S )Nr   r   r   r   s    rF   is_mousezHIDDevice.is_mouseg  r   rH   c                 .    |                      dd          S )Nr   r!   r   r   s    rF   is_joystickzHIDDevice.is_joystickj  r   rH   c                 .    |                      dd          S )Nr      r   r   s    rF   
is_gamepadzHIDDevice.is_gamepadm  r   rH   c                 .    |                      dd          S )Nr      r   r   s    rF   is_keyboardzHIDDevice.is_keyboardp  r   rH   c                 .    |                      dd          S )Nr      r   r   s    rF   	is_keypadzHIDDevice.is_keypads  r   rH   c                 .    |                      dd          S )Nr      r   r   s    rF   is_multi_axiszHIDDevice.is_multi_axisv  r   rH   c                      t           |           j        D ]'}t          |d          r|                                (t           |=  fdt                                          D             }|D ]
}t          |= d S )Ndevice_removedc                 ,    g | ]\  }}|j         v |S rL   )rq   ).0kvrD   s      rF   
<listcomp>z1HIDDevice.py_removal_callback.<locals>.<listcomp>  s)    QQQ41aa4=>P>PQ>P>P>PrH   )rR   rt   hasattrr   _element_lookupitems)rD   contextresultsenderr}   	to_removekeys   `      rF   py_removal_callbackzHIDDevice.py_removal_callbacky  s    f%' 	' 	'Aq*++ '  &&&6"QQQQ?#8#8#:#:QQQ	 	% 	%C$$	% 	%rH   c                 p    t          | j                  }t                              | j        |d            |S rP   )HIDDeviceCallbackr   r7   "IOHIDDeviceRegisterRemovalCallbackrT   )rD   rv   s     rF   ru   z$HIDDevice._register_removal_callback  s5    ,T-EFF00AQSWXXXrH   c                 :    | j                             |           d S rP   )rt   addrD   observers     rF   add_removal_observerzHIDDevice.add_removal_observer  s    ""8,,,,,rH   c                     t          t          |                    }| j        D ](}t          |d          r|                    | |           )d S )Ndevice_value_changed)r4   r   rs   r   r   )rD   r   r   r   rQ   r   r}   s          rF   py_value_callbackzHIDDevice.py_value_callback  s[    Xe__%%% 	0 	0Aq011 0&&tQ///	0 	0rH   c                 p    t          | j                  }t                              | j        |d            |S rP   )HIDDeviceValueCallbackr   r7   %IOHIDDeviceRegisterInputValueCallbackrT   )rD   rx   s     rF   rw   z(HIDDevice._register_input_value_callback  s3    /0FGG33DNNTXYYYrH   c                 :    | j                             |           d S rP   )rs   r   r   s     rF   add_value_observerzHIDDevice.add_value_observer  s      *****rH   c                     t                      }t                              | j        |j        t          |                     |rt          |          S d S rP   )r   r7   IOHIDDeviceGetValuerT   rE   r   r4   )rD   rC   r9   s      rF   	get_valuezHIDDevice.get_value  sI    ::!!$.'2DeHooVVV 	H%%%4rH   N)F)rI   rJ   rK   classmethodrV   rG   r~   r   rd   r   r   r   r   rp   r   r   r   r   r   r   r   r   r   ru   r   r   rw   r   r   rL   rH   rF   rN   rN   
  s         [D D D4" " "N N N( ( (D D D DS S S# # ## # #  N N N, , ,, , ,, , ,, , ,, , ,, , ,, , ,% % %     
- - -0 0 0  
+ + +    rH   rN   c                   *    e Zd Zed             Zd ZdS )rA   c                 d    |j         t          v rt          |j                  S t          |          }|S rP   )rQ   r   rA   )rS   rE   rC   s      rF   rB   zHIDDeviceElement.get_element  s2     ..":#344&z22GNrH   c                    |sJ t          j        |          t                                          k    sJ | t          |j        <   || _        t                              |          | _        t          	                    |          | _
        | j
        t          k    r t                              |          | _        nd | _        t                              |          | _        t                              |          | _        t%          t                              |                    | _        t%          t                              |                    | _        t%          t                              |                    | _        t%          t                              |                    | _        t%          t                              |                    | _        t%          t                              |                    | _        t%          t                              |                    | _         tC          t          "                    |                    | _#        t          $                    |          | _%        t          &                    |          | _'        t          (                    |          | _)        t          *                    |          | _+        t          ,                    |          | _-        t          .                    |          | _/        t          0                    |          | _1        t          2                    |          | _3        t          4                    |          | _5        d S rP   )6r   r6   r7   IOHIDElementGetTypeIDr   rQ   rE   IOHIDElementGetCookiecookieIOHIDElementGetTypetypekIOHIDElementTypeCollectionIOHIDElementGetCollectionTypecollectionTypeIOHIDElementGetUsagePage	usagePageIOHIDElementGetUsager   r   IOHIDElementIsVirtual	isVirtualIOHIDElementIsRelative
isRelativeIOHIDElementIsWrapping
isWrappingIOHIDElementIsArrayisArrayIOHIDElementIsNonLinearisNonLinearIOHIDElementHasPreferredStatehasPreferredStateIOHIDElementHasNullStatehasNullStater   IOHIDElementGetNamer   IOHIDElementGetReportIDreportIDIOHIDElementGetReportSize
reportSizeIOHIDElementGetReportCountreportCountIOHIDElementGetUnitunitIOHIDElementGetUnitExponentunitExponentIOHIDElementGetLogicalMin
logicalMinIOHIDElementGetLogicalMax
logicalMaxIOHIDElementGetPhysicalMinphysicalMinIOHIDElementGetPhysicalMaxphysicalMax)rD   rE   s     rF   rG   zHIDDeviceElement.__init__  s}   z~j))U-H-H-J-JJJJJ,0
()$11*==--j99	9333"'"E"Ej"Q"QD"&D77
CC//
;;
e99*EEFFu;;JGGHHu;;JGGHHE55jAABB = =j I IJJ!%e&I&I*&U&U!V!V !?!?
!K!KLL#E$=$=j$I$IJJ	55jAA99*EE ;;JGG--j99	!==jII99*EE99*EE ;;JGG ;;JGGrH   N)rI   rJ   rK   r   rB   rG   rL   rH   rF   rA   rA     sA          [H H H H HrH   rA   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

HIDManagerc                    t          t                              d t                              | _        | j        sJ t          j        | j                  t                                          k    sJ |                                  t                      | _
        |                                 | _        |                                 | _        d S rP   )r   r7   IOHIDManagerCreater   
managerRefr   r6   IOHIDManagerGetTypeIDr   rr   matching_observers_register_matching_callbackmatching_callback_get_devicesdevicesr   s    rF   rG   zHIDManager.__init__  s    "5#;#;DBW#X#XYY~do..%2M2M2O2OOOOO##%%%"%%%!%!A!A!C!C((**rH   c                    	 t                               | j        d            t          t                               | j                            }t          |          }t          j        |           n#  t                      cY S xY w|S rP   )	r7   IOHIDManagerSetDeviceMatchingr  r   IOHIDManagerCopyDevicesr   r   r   rr   )rD   cfsetr  s      rF   r  zHIDManager._get_devices  sy    		 //FFFU::4?KKLLE"5))GL	55LLLs   A/A2 2Bc                 P    t                               | j        t                     d S rP   )r7   IOHIDManagerOpenr  r   r   s    rF   r   zHIDManager.open  s!    t0EFFFFFrH   c                 P    t                               | j        t                     d S rP   )r7   IOHIDManagerCloser  r   r   s    rF   r   zHIDManager.close  s!    1FGGGGGrH   c                     t                               | j        t          t	          j                              t                     d S rP   )r7   IOHIDManagerScheduleWithRunLoopr  r   r   r   r   r   s    rF   r   z!HIDManager.schedule_with_run_loop  s@    --OR+--..!	# 	# 	# 	# 	#rH   c                     t                               | j        t          t	          j                              t                     d S rP   )r7   !IOHIDManagerUnscheduleFromRunLoopr  r   r   r   r   r   s    rF   r   z#HIDManager.unschedule_from_run_loop  s@    //OR+--..!	# 	# 	# 	# 	#rH   c                     t                               t          |                    }|| j        vrI| j                            |           | j        D ])}t          |d          r|                    |           (d S d S )Ndevice_discovered)rN   rV   r   r  r   r  r   r!  )rD   r   r   r   rU   dr}   s          rF   _py_matching_callbackz HIDManager._py_matching_callback  s      &!1!122DL  LQ, + +1122 +''***	 ! + +rH   c                 p    t          | j                  }t                              | j        |d            |S rP   )HIDManagerCallbackr#  r7   *IOHIDManagerRegisterDeviceMatchingCallbackr  )rD   r  s     rF   r  z&HIDManager._register_matching_callback  s5    .t/IJJ88J[]abbb  rH   N)rI   rJ   rK   rG   r  r   r   r   r   r#  r  rL   rH   rF   r
  r
    s        + + +  G G GH H H# # ## # #+ + +! ! ! ! !rH   r
  r}   yzrxryrzwheelhat))r   0   )r   1   )r   2   )r   3   )r   4   )r   5   )r   8   )r   9   sleepwakeupmenuselectrightleftupdown
right_hold	left_hold	menu_hold)i  #   select_holdejectmute	volume_upvolume_downc                   X     e Zd Z fdZd fd	Z fdZd Zd Zd Zd	 Z	d
 Z
d Z xZS )PygletDevicec                    t          t          |                               ||j                   || _        | j                                        | _        | j                            |            | j                            |            |j	        
                    |            |                                  d| _        d| _        d S NF)superrH  rG   rk   rU   r   device_identifierr   r   r  r   _create_controls_is_open_is_exclusive)rD   displayrU   manager	__class__s       rF   rG   zPygletDevice.__init__5  s    lD!!**7FNCCC!%!>!>!@!@&&t,,,((..."&&t,,,"rH   NFc                    t          t          |                               ||           | j                            |           | j                                         d| _        || _        |                                  d S )NT)rK  rH  r   rU   r   rN  rO  _set_initial_control_values)rD   window	exclusiverR  s      rF   r   zPygletDevice.open@  st    lD!!&&vy999###**,,,&((*****rH   c                     t          t          |                                            | j                                         d| _        d S rJ  )rK  rH  r   rU   rN  )rD   rR  s    rF   r   zPygletDevice.closeH  s>    lD!!'')))rH   c                 N    t          | j                                                  S rP   )list	_controlsvaluesr   s    rF   get_controlszPygletDevice.get_controlsM  s    DN))++,,,rH   c                     d | _         d S rP   )rU   rD   
hid_devices     rF   r   zPygletDevice.device_removedP  s     rH   c                 N   | j         s| j        |                                k    r~|| _         | j                             |            | j                             |            | j        r>| j                             | j                   | j                                          d S d S d S d S rP   )	rU   rL  r   r   r   rN  r   rO  r   r^  s     rF   r!  zPygletDevice.device_discoveredV  s     { 	5t59U9U9W9WWW$DKK**4000K,,T222 } 5  !34442244444	5 	5WW5 5rH   c                 L    | j         |j        j                 }|j        |_        d S rP   )rZ  rC   r   r?   rQ   )rD   r_  	hid_valuecontrols       rF   r   z!PygletDevice.device_value_changedc  s"    .!2!9:!*rH   c                    i | _         | j        j        D ]}|j        pd|j        |j        fz  }|j        t          t          fv r[t          
                    |j        |j        f          }|j        rt          ||          }net          ||j        |j        |          }nH|j        t           k    r7t"          
                    |j        |j        f          }t%          ||          }n|j        |_        || j         |j        <   d S )Nz0x%x:%x)rZ  rU   rq   r   r   r   r   kIOHIDElementTypeInput_MisckIOHIDElementTypeInput_Axis_axis_namesgetr   r   r   r  r  kIOHIDElementTypeInput_Button_button_namesr   r   _cookie)rD   rC   raw_namer   rc  s        rF   rM  zPygletDevice._create_controlsh  s   {+ 	6 	6G|UyG4Ew}3U'UH| ;=XYYY"(97='IJJ% c*4::GG*41CWEWYabbGG!>>>$(('*;W])KLL x00%nGO.5DN7?++!	6 	6rH   c                     | j         j        D ]J}|j        | j        v r:| j        |j                 }| j                             |          }|r|j        |_        Kd S rP   )rU   rq   r   rZ  r   r?   rQ   )rD   rC   rc  rb  s       rF   rT  z(PygletDevice._set_initial_control_values|  se    {+ 	7 	7G~//.8 K11'::	 7$-$6GM	7 	7rH   rJ  )rI   rJ   rK   rG   r   r   r\  r   r!  r   rM  rT  __classcell__)rR  s   @rF   rH  rH  4  s        	# 	# 	# 	# 	#+ + + + + +    
- - -  5 5 5+ + +
6 6 6(7 7 7 7 7 7 7rH   rH  c                 4      fdt           j        D             S )Nc                 <    g | ]}t          |t                    S rL   )rH  _managerr   rU   rP  s     rF   r   zget_devices.<locals>.<listcomp>  s%    SSSL&(33SSSrH   rq  r  rP  s   `rF   get_devicesru    s     SSSS(BRSSSSrH   c                 4      fdt           j        D             S )Nc           	          g | ]a}|                                 s(|                                s|                                >t          t	          |t
                              bS rL   )r   r   r   r   rH  rq  rr  s     rF   r   z!get_joysticks.<locals>.<listcomp>  s~     V V V&!!##V'-'8'8':':V>D>R>R>T>TVH\'68<<== V V VrH   rs  rt  s   `rF   get_joysticksrx    s8    V V V VHL\ V V V VrH   c                     t           j        D ]2}|j        dk    r%t          t	          | |t                               c S 3d S )NzApple IR)rq  r  rk   r   rH  )rP  rU   s     rF   get_apple_remoterz    sT    " H H>Z''|GVXFFGGGGG (H HrH   rP   )sysctypesr   r   r   r   r   r   r	   r
   baser   r   r   r   r   r   pyglet.libs.darwin.cocoapyr   r   r   r   r   r   r   r   r   r   
pyglet.libr   maxsize__LP64__r7   r   r   re  ri  rf   kIOHIDElementTypeInput_ScanCodeskIOHIDElementTypeOutputkIOHIDElementTypeFeaturer   kHIDPage_GenericDesktopkHIDPage_ConsumerkHIDUsage_GD_SystemSleepkHIDUsage_GD_SystemWakeUpkHIDUsage_GD_SystemAppMenukHIDUsage_GD_SystemMenukHIDUsage_GD_SystemMenuRightkHIDUsage_GD_SystemMenuLeftkHIDUsage_GD_SystemMenuUpkHIDUsage_GD_SystemMenuDownkHIDUsage_Csmr_MenukHIDUsage_Csmr_FastForwardkHIDUsage_Csmr_RewindkHIDUsage_Csmr_EjectkHIDUsage_Csmr_MutekHIDUsage_Csmr_VolumeIncrementkHIDUsage_Csmr_VolumeDecrementIOReturnIOOptionBitsIOHIDElementTypeIOHIDElementCollectionTypeIOHIDElementCookier   restypeargtypesr   r   r   rc   r   r   r   r   r   r   r   r   r  r  r   r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r&  r  r  r@   r>   r<   r:   r8   r%  r   r   rR   r   r4   rN   rA   r
  rV   rB   rg  rj  rH  rq  ru  rx  rz  rL   rH   rF   <module>r     ss	  H 


 Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y < < < < < < < < < < < < ' ' ' ' ' ' ' ' N N N N N N N N N N N N P P P P P P P P P P U U U U U U U U U U # # # # # # K'! 	w''' " # #$ #$ #$ #$  #& #& #&  "& !% !% !% !% !% !% !% !% !% !% !% !% " ! !% !%   "  "!!!)  #+\":  &-  #(0(H'E  $08 % -2:Hl1S % .'/  $)18(<  %%-  "&(  #$,  !&.(%C  " (  "*L!9  6: + 38@(H7U + 437 ( 05=x4R ( 1/3 $ ,198X0N $ -15 & .3;Xx2P & /.H # +08z # ,&8  #(0z  $*1  ',4:  (*1  ',4:  ($,  !&.Z  "+2   (-5J   )+2   (-5J   )+3   (-5J   )(0  %*2  &*2  ',4:  ($4  !&.Z  "&.  #')  $$,  !&.Z  ",4 ! ).6Z ! *%-  "'/j  #)1  &+3*  ')/  &+3*  '.4 # +08z # ,$*  !&.Z  "(.  %*2  &'-  $)1
  %&,  #(0z  $'-  $)1
  %#+   %3\$B  !(0  %*2  &&.  #')  $;? 0 8=ExQY<Z 0 908 % -2:Hh1O % ..2 # +08(/C # ,%-  "'/j  #*1  ',4:  ($+  !&.Z  "'/  $)1
  %$,  !%'  " YtXuhII IdHeX>> "45(HMM  @ @ @ @ @ @ @ @&Z Z Z Z Z Z Z Zz)H )H )H )H )H )H )H )HX5! 5! 5! 5! 5! 5! 5! 5!v /8.Be((** +/?/Ke))++ , 	 	6778( 896 56	
 :;W 9:F 78$ 9:F 23\ -. +,k M ,-w +,f 67  67!(O7 O7 O7 O7 O76 O7 O7 O7h :<<T T T TV V V V
H H H H H HrH   