§
    580j3.  ã                   ó  — 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 d dlZd dlZd dlmZmZ d dlZ ede¦  «        Z ej        d¦  «        Ze                     d¦  «        e
d„ ¦   «         ¦   «         Ze                     d	¦  «        e
d
„ ¦   «         ¦   «         Ze                     dddg¬¦  «        e
ed„ ¦   «         ¦   «         ¦   «         Ze                     d¦  «        e
d„ ¦   «         ¦   «         Ze                     d¦  «        e
d„ ¦   «         ¦   «         Ze                     dddg¬¦  «        e
ed„ ¦   «         ¦   «         ¦   «         Ze                     d¦  «        e
d„ ¦   «         ¦   «         Ze                     d¦  «        e
d„ ¦   «         ¦   «         Ze                     d¦  «        e
d„ ¦   «         ¦   «         Ze                     d¦  «        d„ ¦   «         Ze                     d¦  «        e
d„ ¦   «         ¦   «         Z e                     d ¦  «        e
d!„ ¦   «         ¦   «         Z!e                     d"dg¬¦  «        e
d#„ ¦   «         ¦   «         Z"e                     d$dg¬¦  «        d%„ ¦   «         Z#e                     d&¦  «        d'„ ¦   «         Z$dS )(é    )Ú	BlueprintÚrender_templateÚsessionÚrequestÚredirectÚjsonifyÚurl_forÚcurrent_app)Úlogin_requiredÚadmin_requiredN)ÚdatetimeÚ	timedeltaÚmainzAsia/Taipeiú/c                  ód  — t          j        ¦   «         } t          j        dd¦  «        }|dk    r]|                      d¦  «        dk    r|                      dddd	d
œ¦  «         n|                      ddddd
œ¦  «         d| d<   d| d<   d| d<   d}	 t          j        ¦   «         }|                     ¦   «         5 }|                     dt          d         f¦  «         |                     ¦   «         }|r|d         }d d d ¦  «         n# 1 swxY w Y   n)# t          $ r}t          d|› �¦  «         Y d }~nd }~ww xY wdt          ¦   «         v r|r|                     ¦   «          n-# dt          ¦   «         v r|r|                     ¦   «          w w w xY wt          d| t          j        d¦  «        ||¬¦  «        S )NÚroleÚguestÚ	caregiverÚraw_activityÚnullu	   ä¸�åœ¨å®¶z#adb5bdu   ðŸšªu   ç›®å‰�ä¸�åœ¨å®¶)ÚtitleÚcolorÚiconÚdescõ   åœ¨å®¶z#28a745u   ðŸ� u   ç›®å‰�åœ¨å®¶ú---ÚxÚyõ   æœªçŸ¥Úzoneé   z3SELECT notify_enabled FROM users WHERE user_id = %sÚuser_idÚnotify_enabledu   è®€å�–é€šçŸ¥ç‹€æ…‹å¤±æ•—: Údbzdashboard.htmlÚname)ÚstateÚ	user_nameÚ	user_roler#   )ÚdatabaseÚget_current_ui_stater   ÚgetÚupdateÚget_db_connectionÚcursorÚexecuteÚfetchoneÚ	ExceptionÚprintÚlocalsÚcloser   )Úinitial_stater(   r#   r$   r.   ÚuserÚes          ú./home/mmwave/public_html/mmwave/routes/main.pyÚindexr9      s1  € õ Ô1Ñ3Ô3€MÝ”˜F GÑ,Ô,€Ið �KÒÐØ×Ò˜^Ñ,Ô,°Ò6Ð6Ø× Ò ¨;ÀÐTZÐduÐ!vÐ!vÑwÔwÐwÐwà× Ò ¨8¸iÐQWÐaoÐ!pÐ!pÑqÔqÐqØ"ˆ�cÑØ"ˆ�cÑØ (ˆ�fÑà€Nð	/ÝÔ'Ñ)Ô)ˆØ�YŠY‰[Œ[ð 	=˜FØ�NŠNÐPÕSZÐ[dÔSeÐRgÑhÔhÐhØ—?’?Ñ$Ô$ˆDØÐ< dÐ+;Ô&<�^ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=øøõ ð 0ð 0ð 0ÝÐ.¨1Ð.Ð.Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/øøøøð0øøøð •6‘8”8ÐÐ Ð B§H¢H¡J¤J Jøøˆ4•6‘8”8ÐÐ Ð B§H¢H¡J¤J J JÐÐøøøåÐ+°=ÍGÌKÐX^ÑL_ÔL_Ðktð  FTð  Uñ  Uô  Uð  UsU   Â'D Â6ADÃ7D ÄDÄD Ä
DÄD ÄE Ä
D5ÄD0Ä+E Ä0D5Ä5E Å*F	z/eventsc                  óè  — t           j                             ddt          ¬¦  «        } t           j                             dd¦  «        }t           j                             dd¦  «        }t           j                             dd¦  «        }t	          j        | d|||¦  «        \  }}t          d	|| t          j        |dz  ¦  «        |||t          j        d
¦  «        t          j        d¦  «        ¬¦	  «	        S )NÚpager!   )Útyper<   Ú ÚstartÚendé
   zevent_history.htmlr%   r   )Úeventsr;   Útotal_pagesÚcurrent_typeÚ
start_dateÚend_dater'   r(   )
r   Úargsr+   Úintr)   Ú
get_eventsr   ÚmathÚceilr   )r;   rC   rD   rE   rA   Útotal_counts         r8   Úevent_historyrL   +   sØ   € õ Œ<×Ò˜F A­CÐÑ0Ô0€DÝ”<×#Ò# F¨BÑ/Ô/€LÝ”×!Ò! '¨2Ñ.Ô.€JÝŒ|×Ò  rÑ*Ô*€Hå"Ô-¨d°B¸ÀjÐRZÑ[Ô[Ñ€FˆKÝÐ/Ø"(Ø $Ý'+¤y°¸rÑ1AÑ'BÔ'BØ(4Ø&0Ø$,Ý%,¤[°Ñ%8Ô%8Ý%,¤[°Ñ%8Ô%8ð:ñ :ô :ð :ó    z/devicesÚGETÚPOST)Úmethodsc                  óþ  — t           j        dk    r¦t           j                             dd¦  «                             ¦   «         } t           j                             dd¦  «        }t           j                             dd¦  «        }| r2t          j        | ||¦  «         t          t          d¦  «        ¦  «        S t          d	t          j
        ¦   «         t          j        d
¦  «        t          j        d¦  «        ¬¦  «        S )NrO   Údevice_namer=   Úroom_idr!   Údevice_roleÚallzmain.devices_managementzdevices.htmlr   r%   )Údevicesr(   r'   )r   ÚmethodÚformr+   Ústripr)   Ú
add_devicer   r	   r   Úget_all_devicesr   )r%   rS   r   s      r8   Údevices_managementr\   >   sí   € õ „~˜ÒÐÝŒ|×Ò ¨rÑ2Ô2×8Ò8Ñ:Ô:ˆÝ”,×"Ò" 9¨aÑ0Ô0ˆÝŒ|×Ò ¨uÑ5Ô5ˆØð 	@ÝÔ  g¨tÑ4Ô4Ð4Ý�GÐ$=Ñ>Ô>Ñ?Ô?Ð?Ý˜>µ8Ô3KÑ3MÔ3MÕY`ÔYdÐekÑYlÔYlÕxô  yDð  EKñ  yLô  yLð  Mñ  Mô  Mð  MrM   z/bindc            	      ó¶   — t          j        t          d         ¦  «        \  } }t          d| |t          j        d¦  «        t          j        d¦  «        ¬¦  «        S )Nr"   zbind_line.htmlr%   r   )r6   Ú
bound_listr'   r(   )r)   Úget_user_bind_infor   r   r+   )r6   r^   s     r8   Ú	bind_liner`   K   sn   € õ  Ô2µ7¸9Ô3EÑFÔFÑ€Dˆ*ÝÐ+°$À:ÕY`ÔYdÐekÑYlÔYlÕxô  yDð  EKñ  yLô  yLð  Mñ  Mô  Mð  MrM   z/statisticsc            	      ó˜  — t          j        d¦  «        dk    rt          d¦  «        S t          j        t
          ¦  «                             d¦  «        } t          j                             d| ¦  «        }t          j                             d| ¦  «        }t          d||t          j        d¦  «        t          j        d¦  «        ¬	¦  «        S )
Nr   r   ú./ú%Y-%m-%drD   rE   zstatistics.htmlr%   ©rD   rE   r'   r(   )
r   r+   r   r   ÚnowÚtw_tzÚstrftimer   rF   r   ©ÚtodayrD   rE   s      r8   Ú
statisticsrj   Q   sÅ   € õ „{�6ÑÔ˜kÒ)Ð)µ(¸4±.´.Ð+@ÝŒL�ÑÔ×(Ò(¨Ñ4Ô4€EÝ”×!Ò! ,°Ñ6Ô6€JÝŒ|×Ò 
¨EÑ2Ô2€Hõ Ð,¸ÈhÕbiÔbmÐntÑbuÔbuõ  BIô  BMð  NTñ  BUô  BUð  Vñ  Vô  Vð  VrM   z	/settingsc                  óx  — t           j        dk    rát           j                             d¦  «        } t           j                             d¦  «        }t           j                             dd¦  «        }t           j                             dd¦  «        }t	          j        d| ¦  «         t	          j        d	|¦  «         t	          j        d
|¦  «         t	          j        d|¦  «         t          d¦  «        S t	          j        ¦   «         }t          d|t          j        d¦  «        t          j        d¦  «        ¬¦  «        S )NrO   Úno_move_minÚno_home_minÚnight_startz00:00Ú	night_endz06:00Úthreshold_no_move_minÚthreshold_no_home_minÚnight_start_timeÚnight_end_timezsettings?msg=successzsettings.htmlr%   r   )Úsettingsr'   r(   )
r   rW   rX   r+   r)   Úupdate_system_settingsr   Úget_system_settingsr   r   )rl   rm   rn   ro   Úcurrent_settingss        r8   rt   rt   \   s'  € õ „~˜ÒÐå”l×&Ò& }Ñ5Ô5ˆÝ”l×&Ò& }Ñ5Ô5ˆÝ”l×&Ò& }°gÑ>Ô>ˆÝ”L×$Ò$ [°'Ñ:Ô:ˆ	õ 	Ô'Ð(?ÀÑMÔMÐMÝÔ'Ð(?ÀÑMÔMÐMÝÔ'Ð(:¸KÑHÔHÐHÝÔ'Ð(8¸)ÑDÔDÐDõ Ð.Ñ/Ô/Ð/õ  Ô3Ñ5Ô5ÐÝ˜?Ð5EÕQXÔQ\Ð]cÑQdÔQdÕpwÔp{ð  }Cñ  qDô  qDð  Eñ  Eô  Eð  ErM   z/spatialc            	      ó  — t          j        d¦  «        dk    rt          d¦  «        S t          j        t
          ¦  «                             d¦  «        } t          j                             dt          j        t
          ¦  «        t          d¬¦  «        z
                       d¦  «        ¦  «        }t          j                             d| ¦  «        }t          d	||t          j        d
¦  «        t          j        d¦  «        ¬¦  «        S )Nr   r   rb   rc   rD   é   )ÚdaysrE   zspatial_analysis.htmlr%   rd   )r   r+   r   r   re   rf   rg   r   rF   r   r   rh   s      r8   Úspatial_analysisr{   t   sÓ   € õ „{�6ÑÔ˜kÒ)Ð)µ(¸4±.´.Ð+@åŒL�ÑÔ×(Ò(¨Ñ4Ô4€EÝ”×!Ò! ,µ´½eÑ1DÔ1DÅyÐVWÐGXÑGXÔGXÑ1X×0bÒ0bÐcmÑ0nÔ0nÑoÔo€JÝŒ|×Ò 
¨EÑ2Ô2€HåÐ2Ø&0Ø$,Ý%,¤[°Ñ%8Ô%8Ý%,¤[°Ñ%8Ô%8ð	:ñ :ô :ð :rM   z/api/statistics_datac                  óà   — t           j                             d¦  «        dz   } t           j                             d¦  «        dz   }t          j        | |¦  «        \  }}t          d||dœ¦  «        S )Nr>   ú	 00:00:00r?   ú	 23:59:59Úsuccess)ÚstatusÚtimeline_datarA   )r   rF   r+   r)   Úget_statistics_datar   )rD   rE   r�   rA   s       r8   Úapi_statistics_datarƒ   „   st   € õ ”×!Ò! 'Ñ*Ô*¨[Ñ8€JÝŒ|×Ò Ñ&Ô&¨Ñ4€HÝ$Ô8¸ÀXÑNÔNÑ€M�6åØØ&Øðð ñ ô ð rM   z/api/spatial_datac                  óØ   — t           j                             d¦  «        dz   } t           j                             d¦  «        dz   }t          j        | |¦  «        }t          d|dœ¦  «        S )Nr>   r}   r?   r~   r   ©r€   Údata)r   rF   r+   r)   Úget_spatial_statisticsr   )rD   rE   r†   s      r8   Úapi_spatial_datarˆ   ‘   s`   € õ ”×!Ò! 'Ñ*Ô*¨[Ñ8€JÝŒ|×Ò Ñ&Ô&¨Ñ4€HÝÔ*¨:°xÑ@Ô@€DÝ˜i°Ð6Ð6Ñ7Ô7Ð7rM   z/api/trigger_ui_updatec                  óp   — t          j        ¦   «         } t          j                             d| d¬¦  «         dS )uN   ç•¶å¤–éƒ¨ç¨‹å¼�(å¦‚é›·é�”ç«¯)å¯«å…¥è³‡æ–™åº«å¾Œï¼Œæ‰‹å‹•è§¸ç™¼å‰�ç«¯ UI åˆ·æ–°Ú	ui_updater   ©Ú	namespaceÚ
UI_UPDATED)r)   r*   r
   ÚsocketioÚemit)r&   s    r8   Útrigger_ui_updater�   ™   s5   € õ Ô)Ñ+Ô+€EÝÔ×Ò˜k¨5¸CÐÑ@Ô@Ð@Øˆ<rM   z/api/stats_datac                  óà   — t          j        ¦   «         } t          t          | d                              ¦   «         ¦  «        t          | d                              ¦   «         ¦  «        dœ¦  «        S )NÚstats)Úlabelsr†   )r)   Úget_daily_summary_datar   ÚlistÚkeysÚvalues)Úsummarys    r8   Ú
stats_datar™   ¡   sf   € õ Ô-Ñ/Ô/€GÝÝ�w˜wÔ'×,Ò,Ñ.Ô.Ñ/Ô/Ý�W˜WÔ%×,Ò,Ñ.Ô.Ñ/Ô/ðð ñ ô ð rM   z$/api/event_trajectory/<int:event_id>c                 óÀ   — 	 t          j        | ¦  «        }t          d|dœ¦  «        S # t          $ r+}t          dt	          |¦  «        dœ¦  «        dfcY d }~S d }~ww xY w)Nr   r…   Úerror©r€   Úmessageéô  )r)   Úget_event_trajectoryr   r1   Ústr)Úevent_idr†   r7   s      r8   Úapi_event_trajectoryr¢   ¬   s�   € ðDÝÔ,¨XÑ6Ô6ˆÝ )°TÐ:Ð:Ñ;Ô;Ð;øÝð Dð Dð DÝ 'µc¸!±f´fÐ=Ð=Ñ>Ô>ÀÐCÐCÐCÐCÐCÐCÐCøøøøðDøøøs   ‚%( ¨
A² AÁAÁAz/resolve_allc                  óZ  — t          j        dd¦  «        } t          j        | ¦  «        �rîddlm} 	 t          j        ¦   «         }|j                             d|d¬¦  «         n)# t          $ r}t          d|› �¦  «         Y d }~nd }~ww xY w	 dd	lm} dd
lm} t          j        ¦   «         }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «          |rÄd| › d|                     dd¦  «        › d|                     dd¦  «        › d|                     dd¦  «        › �}	|                     dd¦  «        dk    }
|
rdnd}d| › d|› d|                     dd¦  «        › �}|D ]8}|d         dk    r|n|	}|                     |d          ||¬¦  «        ¦  «         Œ9n)# t          $ r}t          d|› �¦  «         Y d }~nd }~ww xY wt+          dd d!œ¦  «        d"fS t+          d#d$d!œ¦  «        d%fS )&Nr%   u   å®¶å±¬r   )r
   rŠ   r   r‹   u   Socketå»£æ’­å¤±æ•—: )Úline_bot_api)ÚTextSendMessagezlSELECT line_user_id, role FROM users WHERE line_user_id IS NOT NULL AND notify_enabled = 1 AND is_active = 1u   ðŸ›¡ï¸� è­¦å ±å·²ç”± uR    è§£é™¤ï¼�
â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€
ã€�ç›®å‰�ç‹€æ…‹ã€‘
ç‹€æ…‹ï¼šr   r   u   
æ›´æ–°æ™‚é–“ï¼šÚlast_activity_timer   u
   
èªªæ˜Žï¼šr   u   ç„¡r   r   r   u   ä¸�åœ¨å®¶ / å¤–å‡ºr   r   Úline_user_id)Útextu*   ç¶²é �è§£é™¤è­¦å ±å¾Œï¼ŒLINEæŽ¨æ’­å¤±æ•—: r   u   è­¦å‘Šå·²è§£é™¤rœ   éÈ   r›   u   è§£é™¤å¤±æ•—rž   )r   r+   r)   Úresolve_all_eventsÚflaskr
   r*   rŽ   r�   r1   r2   Úroutes.liner¤   Úlinebot.modelsr¥   r-   r.   r/   Úfetchallr4   Úpush_messager   )Úusernamer
   r&   r7   r¤   r¥   r$   r.   Ú
recipientsÚ
reply_textÚ
cg_is_homeÚcg_status_textÚreply_text_cgÚrÚmsg_to_sends                  r8   Úresolve_allr¸   µ   sM  € õ Œ{˜6 8Ñ,Ô,€HÝÔ" 8Ñ,Ô,ñ .QØ%Ð%Ð%Ð%Ð%Ð%ð	.ÝÔ1Ñ3Ô3ˆEØÔ ×%Ò% k°5ÀCÐ%ÑHÔHÐHÐHøÝð 	.ð 	.ð 	.ÝÐ,¨Ð,Ð,Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-øøøøð	.øøøð$	DØ0Ð0Ð0Ð0Ð0Ð0Ø6Ð6Ð6Ð6Ð6Ð6åÔ+Ñ-Ô-ˆBØ—’‘”ð / Ø—’ð   Nñ  Oô  Oð  OØ#Ÿ_š_Ñ.Ô.�
ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð �HŠH‰JŒJˆJàð dð;¨Hð ;ð ;ð !&§	¢	¨'°8Ñ <Ô <ð;ð ;ð ',§i¢iÐ0DÀeÑ&LÔ&Lð	;ð ;ð
 !&§	¢	¨&°%Ñ 8Ô 8ð;ð ;ð ð #ŸYšY ~°vÑ>Ô>À&ÒH�
Ø-7Ð!Q  Ð=Q�ðO¨Hð Oð Oð !/ðOð Oð ',§i¢iÐ0DÀeÑ&LÔ&Lð	Oð Oð ð $ð dð d�AØ34°V´9ÀÒ3KÐ3K - -ÐQ[�KØ ×-Ò-¨a°Ô.?ÀÀÐVaÐAbÑAbÔAbÑcÔcÐcÐcøøåð 	Dð 	Dð 	DÝÐB¸qÐBÐBÑCÔCÐCÐCÐCÐCÐCÐCøøøøð	Døøøõ  )Ð8IÐJÐJÑKÔKÈSÐPÐPÝ˜g°.ÐAÐAÑBÔBÀCÐGÐGsT   ²0A# Á#
B	Á-BÂB	Â3G Ã *C6Ã*G Ã6C:Ã:G Ã=C:Ã>CG Ç
HÇ&G=Ç=Hz/toggle_notifyc                  ó  — dt           vrt          dddœ¦  «        dfS t          j        } |                      dd¦  «        }t           d         }	 t          j        ¦   «         }|                     ¦   «         5 }|rdnd	}|                     d
||f¦  «         | 	                    ¦   «          ddd¦  «         n# 1 swxY w Y   nd# t          $ rW}t          d|› �¦  «         t          ddi¦  «        dfcY d}~dt          ¦   «         v r|r|                     ¦   «          S S S d}~ww xY wdt          ¦   «         v r|r|                     ¦   «          n-# dt          ¦   «         v r|r|                     ¦   «          w w w xY wt          d|dœ¦  «        S )u!   æŽ¥æ”¶ç¶²é �çš„é€šçŸ¥é–‹é—œè¨­å®šr"   r›   u	   æœªç™»å…¥)r€   Úmsgi‘  ÚenabledTr!   r   z7UPDATE users SET notify_enabled = %s WHERE user_id = %sNu&   ç¶²é �è¨­å®šé€šçŸ¥é–‹é—œç™¼ç”ŸéŒ¯èª¤: r€   rž   r$   r   )r€   r»   )r   r   r   Újsonr+   r)   r-   r.   r/   Úcommitr1   r2   r3   r4   )r†   r»   r"   r$   r.   Úvalr7   s          r8   Útoggle_notifyr¿   ê   sí  € ð �ÐÐÝ '°+Ð>Ð>Ñ?Ô?ÀÐDÐDåŒ<€DØ�hŠh�y $Ñ'Ô'€GÝ�iÔ €GðÝÔ'Ñ)Ô)ˆØ�YŠY‰[Œ[ð 	˜FØÐ%�!�! AˆCØ�NŠNÐTÐWZÐ\cÐVdÑeÔeÐeØ�IŠI‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øøõ ð 1ð 1ð 1ÝÐ:°qÐ:Ð:Ñ;Ô;Ð;Ý˜ 'Ð*Ñ+Ô+¨SÐ0Ð0Ð0Ð0Ð0Ð0à•6‘8”8ÐÐ ÐØ�HŠH‰JŒJˆJˆJð Ðøøøøð	1øøøð •6‘8”8ÐÐ ÐØ�HŠH‰JŒJˆJøøð •6‘8”8ÐÐ ÐØ�HŠH‰JŒJˆJˆJð Ðøøøõ ˜i°GÐ<Ð<Ñ=Ô=Ð=sZ   Á'C  Á53B4Â(C  Â4B8Â8C  Â;B8Â<C  Â?E Ã 
D!Ã
$DÃ.D!Ã/E ÄD!Ä!E Å*E5z/api/test_check_alertsc                  ó  — 	 d} t          j        ¦   «         }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «         }|r|d         nd}ddd¦  «         n# 1 swxY w Y   |                     ¦   «          t          j        | |¦  «        }|rt          dd|› �dœ¦  «        S t          dd	dœ¦  «        S # t          $ r+}t          d
t          |¦  «        dœ¦  «        dfcY d}~S d}~ww xY w)u+   æ‰‹å‹•è§¸ç™¼è¶…æ™‚è­¦å ±æª¢æŸ¥çš„æ¸¬è©¦ APIr!   z1SELECT last_activity FROM rooms WHERE room_id = 1Úlast_activityÚlayNr   u   æˆ�åŠŸè§¸ç™¼è­¦å ±: rœ   u'   æª¢æŸ¥å®Œæˆ�ï¼Œç„¡è­¦å ±æ¢�ä»¶é�”æˆ�ã€‚r›   rž   )
r)   r-   r.   r/   r0   r4   Úcheck_timed_alertsr   r1   r    )Ú	device_idr$   r.   ÚroomÚcurrent_activityÚalertr7   s          r8   Útest_check_alertsrÈ     s{  € ðDØˆ	õ Ô'Ñ)Ô)ˆØ�YŠY‰[Œ[ð 	H˜FØ�NŠNÐNÑOÔOÐOØ—?’?Ñ$Ô$ˆDØ8<ÐG˜t OÔ4Ð4À%Ðð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 	�Š‰
Œ
ˆ
õ Ô+¨IÐ7GÑHÔHˆàð 	hÝ iÐ<ZÐSXÐ<ZÐ<ZÐ[Ð[Ñ\Ô\Ð\å iÐ<eÐfÐfÑgÔgÐgøÝð Dð Dð DÝ 'µc¸!±f´fÐ=Ð=Ñ>Ô>ÀÐCÐCÐCÐCÐCÐCÐCøøøøðDøøøsG   ‚)C
 «6A-Á!C
 Á-A1Á1C
 Á4A1Á5AC
 Â8C
 Ã

C?Ã C:Ã4C?Ã:C?)%r«   r   r   r   r   r   r   r	   r
   Úroutes.authr   r   r)   rI   r   r   ÚpytzÚ__name__Úmain_bpÚtimezonerf   Úrouter9   rL   r\   r`   rj   rt   r{   rƒ   rˆ   r�   r™   r¢   r¸   r¿   rÈ   © rM   r8   ú<module>rÐ      sÚ  ðØ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gÐ gØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø €€€Ø €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø €€€à
ˆ)�F˜HÑ
%Ô
%€ð 	ˆŒ�mÑ$Ô$€à‡‚ˆsÑÔØðUð Uñ „ñ ÔðUð8 	‡‚ˆyÑÔØð:ð :ñ „ñ Ôð:ð" 	‡‚ˆz E¨6 ?€Ñ3Ô3ØØðMð Mñ „ñ „ñ 4Ô3ðMð 	‡‚ˆwÑÔØðMð Mñ „ñ ÔðMð 	‡‚ˆ}ÑÔØðVð Vñ „ñ ÔðVð 	‡‚ˆ{ U¨F O€Ñ4Ô4ØØðEð Eñ „ñ „ñ 5Ô4ðEð* 	‡‚ˆzÑÔØð:ð :ñ „ñ Ôð:ð 	‡‚Ð%Ñ&Ô&Øð	ð 	ñ „ñ 'Ô&ð	ð 	‡‚Ð"Ñ#Ô#Øð8ð 8ñ „ñ $Ô#ð8ð 	‡‚Ð'Ñ(Ô(ðð ñ )Ô(ðð 	‡‚Ð Ñ!Ô!Øðð ñ „ñ "Ô!ðð 	‡‚Ð5Ñ6Ô6ØðDð Dñ „ñ 7Ô6ðDð 	‡‚ˆ~¨ x€Ñ0Ô0Øð1Hð 1Hñ „ñ 1Ô0ð1Hðf 	‡‚Ð¨&¨€Ñ2Ô2ð>ð >ñ 3Ô2ð>ð2 	‡‚Ð'Ñ(Ô(ðDð Dñ )Ô(ðDð Dð DrM   