§
    ÂYÄjÕ£  ã                  óH  — U d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZ d d	lmZmZmZ d d
lmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z) d dl*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZN  ejO        d¦  «        ZP e"ejQ         R                    d¦  «        ¬¦  «        ZS eTejQ         R                    d d!¦  «        ¦  «        ZUi ZVd"eWd#<    e ejQ         R                    d$d%¦  «        ¦  «        ZX e+ejQ         R                    d&d'¦  «        ¦  «        ZYejZ         [                    ejZ         \                    e]¦  «        d(d)¦  «        Z^ e)¦   «         Z_ e?ejQ         R                    d*d+¦  «        ¦  «        Z` eE¦   «         Za eI¦   «         Zb eKejQ         R                    d,d-¦  «        ¦  «        Zcd. eAe`e_eaeb¬/¦  «        iZdejQ         R                    d0d1¦  «        d2k    r eCe`eaeb¬/¦  «        edd3<   dÍd6„ZedÎd8„Zfe	 G d9„ d:¦  «        ¦   «         Zg G d;„ d<e¦  «        Zh G d=„ d>e¦  «        Zi G d?„ d@e¦  «        Zj G dA„ dBe¦  «        Zki ZldCeWdD<   dÏdI„ZmdJ„ Zn e/ e0¦   «         dK„ dL„ emendM„ dN„ dO„ dP„ dQ„ ¬R¦
  «
        ZodS„ Zp e3ejQ         R                    dTdU¦  «        ¦  «        Zq e2 e4¦   «          e5¦   «         eqdV„ emenep¦  «        ZrdWdWdXœdY„ZsdZ„ Ztd[„ Zud\„ ZvdÐd]„ZwdÑd^„ZxdÒdÓda„Zydb„ Zzdc„ Z{dd„ Z| G de„ df¦  «        Z} e}¦   «         Z~dg„ ZedÔdj„¦   «         Z€ edkdle€¬m¦  «        Z�e� ‚                    e:¦  «        dÕdp„¦   «         ZƒdÖds„Z„e� R                    dt¦  «        du„ ¦   «         Z…e� †                    dv¦  «        d×dy„¦   «         Z‡e� R                    dz¦  «        d{„ ¦   «         Zˆe� †                    dzd|¬}¦  «        dØd€„¦   «         Z‰e� Š                    d�d‚¬}¦  «        dÙd„„¦   «         Z‹e� R                    d…¦  «        d†„ ¦   «         ZŒe� R                    d‡¦  «        dÙdˆ„¦   «         Z�e� R                    d‰¦  «        dÚd‹„¦   «         ZŽe� †                    dŒ¦  «        dÚd�„¦   «         Z�e� †                    dŽd�¬}¦  «        dÛd‘„¦   «         Z�e� R                    d’¦  «        dÚd“„¦   «         Z‘e� †                    d’¦  «        dÜd•„¦   «         Z’e� R                    d–¦  «        dÝd—„¦   «         Z“e� R                    d˜d™¬š¦  «        dÞdœ„¦   «         Z”e� R                    d�d™¬š¦  «        dßdŸ„¦   «         Z•e� R                    d d™¬š¦  «        dßd¡„¦   «         Z–e� R                    d¢¦  «        dÝd£„¦   «         Z—e� R                    d¤¦  «        dàd¦„¦   «         Z˜e� R                    d§¦  «        dÝd¨„¦   «         Z™	 dÒdád«„Zš	 dÒdâd¬„Z›dãd¯„Zœd°„ Z�däd±„Zži ZŸd²„ Z e� †                    d³d™¬š¦  «         edW¬´¦  «        fdåd¶„¦   «         Z¡e� †                    d·¦  «        dædº„¦   «         Z¢e� †                    d»¦  «        dçd½„¦   «         Z£e� †                    d¾¦  «        dèdÀ„¦   «         Z¤ G dÁ„ dÂe¦  «        Z¥ G dÃ„ dÄe¦  «        Z¦e� †                    dÅ¦  «        dédÆ„¦   «         Z§e� †                    dÇ¦  «        dêdÈ„¦   «         Z¨e� ©                    dÉ¦  «        dëdÌ„¦   «         ZªdS )ìé    )ÚannotationsN)ÚasynccontextmanagerÚsuppress)Ú	dataclassÚfield)ÚdatetimeÚtimezone)ÚAnyÚLiteral)Úuuid4)ÚFastAPIÚHeaderÚHTTPExceptionÚ	WebSocketÚWebSocketDisconnect)ÚFileResponseÚRedirectResponseÚJSONResponse)Ú	BaseModelÚField)ÚDeviceCredentialStore)ÚSystemCollector)Ú
host_state)ÚServerSnapshot)ÚPiSessionEventÚPiSessionRegistry)ÚTargetStoreÚnormalize_targetÚsplit_target)ÚVoiceManagerÚconfigured_stt)ÚSpeechManagerÚSpeechPreferencesÚconfigured_ttsÚHaihubSummaryÚMODES)Úquick_catalog)ÚControlErrorÚInputÚProjectÚSettings)ÚProjectRegistry)Ú	PiAdapter)ÚCodexAdapter)ÚApprovalRegistry)ÚPiApprovalServer)Ú
UserInputs)Ú
Operations)Ú	NavigatorÚCAPABILITIESzuvicorn.error.device_gatewayÚGATEWAY_SERVER_NAME)ÚhostnameÚGATEWAY_SNAPSHOT_INTERVALÚ2zdict[str, str]Úhost_statesÚDEVICE_CREDENTIALS_FILEz*~/.config/esp32-device-gateway/device.jsonÚGATEWAY_STATE_FILEz+~/.config/esp32-device-gateway/targets.jsonÚstaticz
admin.htmlÚGATEWAY_PROJECTS_FILEz,~/.config/esp32-device-gateway/projects.jsonÚGATEWAY_OPERATIONS_FILEz0~/.config/esp32-device-gateway/operations.sqliteÚpi)Ú	approvalsÚuser_inputsÚGATEWAY_CODEX_ENABLEDÚ0Ú1ÚcodexÚreturnr   c                 ó>   — t          j        t          j        ¦  «        S ©N)r   Únowr	   Úutc© ó    úX/home/lighthouse/esp32-dev/.cache/watch-codex-quota-startup/server/device_gateway/app.pyÚutc_nowrN   @   s   € ÝŒ<�œÑ%Ô%Ð%rL   Úintc                 óº  — t           j                             d¦  «        } | �\	 t          | ¦  «        }n-# t          $ r  d}t
                               d| ¦  «         Y nw xY wt          dt          d|¦  «        ¦  «        S t          j
        ¦   «                              ¦   «                              ¦   «         }|�$t          |                     ¦   «         dz  ¦  «        ndS )NÚGATEWAY_TIMEZONE_OFFSET_MINUTESr   z5invalid GATEWAY_TIMEZONE_OFFSET_MINUTES=%r; using UTCi0ýÿÿiH  é<   )ÚosÚenvironÚgetrO   Ú
ValueErrorÚloggerÚwarningÚmaxÚminr   rI   Ú
astimezoneÚ	utcoffsetÚtotal_seconds)Ú
configuredÚvalueÚoffsets      rM   Úgateway_timezone_offset_minutesra   D   sÕ   € Ý”—’Ð AÑBÔB€JØÐð	`Ý˜
‘O”OˆEˆEøÝð 	`ð 	`ð 	`ØˆEÝ�NŠNÐRÐT^Ñ_Ô_Ð_Ð_Ð_ð	`øøøõ �4�˜S %™œÑ)Ô)Ð)ÝŒ\‰^Œ^×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€FØ06Ð0B�3ˆv×#Ò#Ñ%Ô%¨Ñ+Ñ,Ô,Ð,ÈÐIs   £3 ³'AÁAc                  ón  — e Zd ZU ded<   ded<   ded<   ded<    ed„ ¬¦  «        Zded	<   d
Zded<    ee¬¦  «        Zded<   dZ	ded<    ee
j        d¬¦  «        Zded<    edd¬¦  «        Zded<   dZded<   dZded<   dZded<    ee¬¦  «        Zd ed!<    ee
j        d¬¦  «        Zded"<   d&d%„ZdS )'ÚDeviceÚstrÚ	device_idÚboardÚfirmwarezWebSocket | NoneÚ	websocketc                 ó(   — t          ¦   «         j        S rH   )r   ÚhexrK   rL   rM   ú<lambda>zDevice.<lambda>W   s   € µu±w´w´{€ rL   )Údefault_factoryÚconnection_idTÚboolÚonliner   Ú	last_seenNzdict[str, Any] | NoneÚ
last_eventF)rl   Úreprzasyncio.LockÚsettings_lock)Údefaultrr   zasyncio.Task | NoneÚsettings_taskz
str | NoneÚsettings_idr   rO   Úsettings_generationÚ Úlast_agent_statezset[str]ÚcapabilitiesÚ	send_lockrF   údict[str, Any]c                óš   — | j         | j        | j        | j        t	          | j        ¦  «        | j                             ¦   «         | j        dœS )N)re   rf   rg   ro   rz   rp   rq   )	re   rf   rg   ro   Úsortedrz   rp   Ú	isoformatrq   ©Úselfs    rM   ÚpubliczDevice.publicc   sI   € àœØ”ZØœØ”kÝ" 4Ô#4Ñ5Ô5Øœ×1Ò1Ñ3Ô3Øœ/ð
ð 
ð 	
rL   ©rF   r|   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   rm   ro   rN   rp   rq   ÚasyncioÚLockrs   ru   rv   rw   ry   Úsetrz   r{   r‚   rK   rL   rM   rc   rc   Q   sj  € € € € € € à€N€N�NØ€J€J�JØ€M€M�MØÐÐÑØ˜Ð/BÐ/BÐCÑCÔC€MÐCÐCÐCÑCØ€FÐÐÐÑØ˜%°Ð8Ñ8Ô8€IÐ8Ð8Ð8Ñ8Ø(,€JÐ,Ð,Ð,Ñ,Ø"' %¸¼È5Ð"QÑ"QÔ"Q€MÐQÐQÐQÑQØ).¨°tÀ%Ð)HÑ)HÔ)H€MÐHÐHÐHÑHØ"€KÐ"Ð"Ð"Ñ"Ø ÐÐ Ð Ð Ñ ØÐÐÐÐÑØ"˜U°3Ð7Ñ7Ô7€LÐ7Ð7Ð7Ñ7Ø#˜e°G´LÀuÐMÑMÔM€IÐMÐMÐMÑMð	
ð 	
ð 	
ð 	
ð 	
ð 	
rL   rc   c                  ó4   — e Zd ZU  edd¬¦  «        Zded<   dS )ÚApprovalDecisioné   é(   ©Ú
min_lengthÚ
max_lengthrd   ÚdecisionN)r„   r…   r†   r   r’   r‡   rK   rL   rM   rŒ   rŒ   o   s2   € € € € € € Ø�E Q°"Ð5Ñ5Ô5€HÐ5Ð5Ð5Ñ5Ð5Ð5rL   rŒ   c                  óX   — e Zd ZU  edd¬¦  «        Zded<    edd¬¦  «        Zded<   dS )	ÚDisplayMessager�   éP   r�   rd   Útitleiô  ÚbodyN)r„   r…   r†   r   r–   r‡   r—   rK   rL   rM   r”   r”   s   sR   € € € € € € Ø� !°Ð3Ñ3Ô3€EÐ3Ð3Ð3Ñ3Ø� ¨sÐ3Ñ3Ô3€DÐ3Ð3Ð3Ñ3Ð3Ð3rL   r”   c                  ó2   — e Zd ZU  ed¬¦  «        Zded<   dS )ÚTargetSelectionz;^(server|(?:agent:(?:pi|codex)|pi):[A-Za-z0-9._:-]{1,160})$)Úpatternrd   ÚtargetN©r„   r…   r†   r   r›   r‡   rK   rL   rM   r™   r™   x   s1   € € € € € € Ø�%Ð ^Ð_Ñ_Ô_€FÐ_Ð_Ð_Ñ_Ð_Ð_rL   r™   c                  ó   — e Zd ZU ded<   dS )ÚNotificationTestzLiteral['done', 'failed']ÚkindN)r„   r…   r†   r‡   rK   rL   rM   rž   rž   |   s   € € € € € € Ø#Ð#Ð#Ñ#Ð#Ð#rL   rž   zdict[str, Device]ÚdevicesÚdeviceÚpayloadr|   ÚNonec              ƒ  ó  K  — | j         r| j        €t          d¦  «        ‚| j        4 ƒd {V —† t	          j        | j                             |¦  «        d¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Núdevice is offlineé   )ro   rh   ÚRuntimeErrorr{   rˆ   Úwait_forÚ	send_json)r¡   r¢   s     rM   Úsend_to_devicerª   ƒ   sJ  è è € ØŒ=ð 0˜FÔ,Ð4ÝÐ.Ñ/Ô/Ð/ØÔð Gð Gð Gð Gð Gð Gð Gð GÝÔ˜vÔ/×9Ò9¸'ÑBÔBÀAÑFÔFÐFÐFÐFÐFÐFÐFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs   ­4A4Á4
A>ÂA>c                ód   — t                                | j        ¦  «        | u o| j        o| j        d uS rH   )r    rU   re   ro   rh   ©r¡   s    rM   Úcurrent_devicer­   ‹   s1   € Ý�;Š;�vÔ'Ñ(Ô(¨FÐ2Ðe°v´}ÐeÈÔIYÐaeÐIeÐerL   c                ó6   — t                                | ¦  «        S rH   ©Útarget_storerU   ©Údids    rM   rk   rk   �   s   € µL×4DÒ4DÀSÑ4IÔ4I€ rL   c                ó    — t          | ¦  «        S rH   )Úadapter_for©Úagents    rM   rk   rk   �   s   € ÕYdÐejÑYkÔYk€ rL   c                 óN   — t          t                               ¦   «         ¦  «        S rH   )rn   r@   Úlist_pendingrK   rL   rM   rk   rk   �   s   € ­­i×.DÒ.DÑ.FÔ.FÑ)GÔ)G€ rL   c                ó6   — t                                | ¦  «        S rH   )r°   Ú
generationr±   s    rM   rk   rk   �   s   € Õbn×byÒbyÐz}Ñb~Ôb~€ rL   c                ó8   — t                                | |¦  «        S rH   )Ú	navigatorÚvoice_prepare)ÚdÚes     rM   rk   rk   ‘   s   € �y×6Ò6°q¸Ñ;Ô;€ rL   c                ó8   — t                                | |¦  «        S rH   )r¼   Úvoice_valid)r¾   Úcs     rM   rk   rk   ‘   s   € ÕU^×UjÒUjÐklÐmnÑUoÔUo€ rL   c                ó:   — t                                | ||¦  «        S rH   )r¼   Úvoice_submit)r¾   rÂ   Úts      rM   rk   rk   ‘   s<   € õ  MV÷  Mcò  Mcð  deð  fgð  hiñ  Mjô  Mj€ rL   )Úgeneration_forÚcontext_prepareÚcontext_validÚcontext_submitc                óÆ   — t           j                             | j        ¦  «        }t	          t
                               ¦   «         ¦  «        pt	          |o|j        dv ¦  «        S )N)Ú	RECORDINGÚTRANSCRIBINGÚAWAITING_CONFIRMATIONÚSENDING)ÚvoicesÚrequestsrU   rm   rn   r@   r¸   Ústate)r¡   Úvoices     rM   Úspeech_blockedrÓ   ”   sd   € ÝŒO×Ò Ô 4Ñ5Ô5€EÝ•	×&Ò&Ñ(Ô(Ñ)Ô)ð  N­T°%ð  3M¸E¼Kð  LMð  =Mñ  .Nô  .Nð  NrL   ÚGATEWAY_SPEECH_FILEz*~/.config/esp32-device-gateway/speech.jsonc                ó6   — t                                | ¦  «        S rH   r¯   r±   s    rM   rk   rk   ›   s   € •× Ò  Ñ%Ô%€ rL   rx   ©ÚnameÚlatest_activityc          
     ó˜   — t          t                               ¦   «         ¦  «        D ]"}t                               || |||||¦  «         Œ#d S rH   )Úlistr    ÚvaluesÚspeechesÚterminal)r¶   Ú
session_idrÑ   Ú
final_textr×   rØ   r¡   s          rM   Úon_agent_terminalrà   ž   sT   € Ý•w—~’~Ñ'Ô'Ñ(Ô(ð _ð _ˆÝ×Ò˜& %¨°U¸JÈÈoÑ^Ô^Ð^Ð^ð_ð _rL   c                ó(  — t                                ¦   «         rdt          t                               ¦   «         ¦  «        D ]=}t
                               |¦  «         t                               |¦  «         d |_        Œ>|  	                    ¦   «          d S rH   )
r@   r¸   rÚ   r    rÛ   rÜ   ÚcancelrÏ   rv   rŠ   )Úchangedr¡   s     rM   Úapprovals_changedrä   £   sw   € Ý×ÒÑÔð &Ý�7Ÿ>š>Ñ+Ô+Ñ,Ô,ð 	&ð 	&ˆFÝ�OŠO˜FÑ#Ô#Ð#Ý�MŠM˜&Ñ!Ô!Ð!Ø!%ˆFÔÐØ‡K‚K�M„M€M€M€MrL   c              ƒ  ó   K  — |d         dk    r'| j         |                     d¦  «        k    rd | _         d S | j        4 ƒd {V —† t          | |¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )NÚtypeÚsettings_cancelÚ
request_id)rv   rU   rs   Ú_device_settings)r¡   Úevents     rM   Údevice_settingsrë   ¬   s%  è è € ØˆV„}Ð)Ò)Ð)ØÔ §¢¨<Ñ!8Ô!8Ò8Ð8Èt¸&Ô:LØˆØÔ#ð .ð .ð .ð .ð .ð .ð .ð .Ý˜v uÑ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ÁA-Á-
A7Á:A7c              ƒ  óö  ‡ ‡‡‡K  — |                      d¦  «        Št          ‰t          ¦  «        rdt          ‰¦  «        cxk    rdk    sn d S |d         dk    r‰ j        ‰k    rd ‰ _        d S t
                                ‰ j        ¦  «        Št
                               ‰ j        ¦  «        Št          ‰¦  «        }|st          ‰ d‰ddœ¦  «        ƒ d {V —† d S t                               ¦   «         s(t                               ¦   «         st          ‰ ¦  «        sd S |d         d	k    r‰‰ _        ‰‰ _        n1‰ j        ‰k    s$‰ j        ‰k    s|                      d
¦  «        ‰k    rd S ˆ ˆˆˆfd„}	 |\  }}t!          |¦  «        }|                     |¦  «        ƒ d {V —†} |¦   «         sd S |d         dk    rE|                     |t'          j        |                      di ¦  «        ¦  «        |¬¦  «        ƒ d {V —†}nT|                     |¦  «        ƒ d {V —†}|                      d¦  «        r$|dk    r|                     |¦  «        ƒ d {V —†|d<    |¦   «         sd S |                     t0                                |j        ¦  «        ¦  «        ƒ d {V —†}	t5          |d„ t7          |	d„ d¬¦  «        D ¦   «         ¦  «        } |¦   «         rNt          ‰ t9          d|d         dk    rdnd‰‰‰|j        dœ|¤Ž¦  «        ƒ d {V —† |d         dk    rd ‰ _        d S d S d S # t<          $ rQ}
 |¦   «         r<t          ‰ d‰t          |
t>          ¦  «        r|
j         nddœ¦  «        ƒ d {V —† Y d }
~
d S Y d }
~
d S d }
~
ww xY w)Nrè   r�   é@   ræ   rç   Úsettings_errorzNO AGENT SELECTED©ræ   rè   ÚmessageÚsettings_getr›   c                 óø   •— t          ‰ ¦  «        oj‰ j        ‰k    o_t                               ‰ j        ¦  «        ‰k    o<t                               ‰ j        ¦  «        ‰k    ot                               ¦   «          S rH   )r­   rv   r°   rU   re   rº   r@   r¸   )r¡   rº   Úridr›   s   €€€€rM   Úvalidz_device_settings.<locals>.validÈ   s¹   ø€ Ý˜fÑ%Ô%ð  P¨&Ô*<ÀÒ*Cð  PÍ×HXÒHXÐY_ÔYiÑHjÔHjÐntÒHtð  Põ  zF÷  zQò  zQð  RXô  Rbñ  zcô  zcð  eoò  zoð  Põ  xA÷  xNò  xNñ  xPô  xPð  tPð  	PrL   Úsettings_applyÚsettings)Ústill_validÚinclude_permissionsrE   Úpermissionsc                ó*   — g | ]}|j         ¯	|j         ‘ŒS rK   )Úmodel)Ú.0Úss     rM   ú
<listcomp>z$_device_settings.<locals>.<listcomp>×   s8   € ð  ,Að  ,Að  ,A¸ÐxyÔxð  ,A¨A¬Gð  ,Að  ,Að  ,ArL   c                ó   — | j         S rH   )Ú
updated_at)rý   s    rM   rk   z"_device_settings.<locals>.<lambda>×   s
   € ÐYZÔYe€ rL   T)ÚkeyÚreverseÚsettings_updatedÚsettings_state)ræ   rè   r›   Útarget_generationr×   zUPDATE FAILEDrK   )!rU   Ú
isinstancerd   Úlenrv   r°   re   rº   r   rª   r@   r¸   rA   Úpendingr­   rw   r´   Úget_sessionÚupdate_settingsr+   Úmodel_validateÚget_settingsrù   Úlist_sessionsÚproject_registryÚ
project_idr'   r~   Údictr×   Ú	Exceptionr(   Údetail)r¡   rê   Úparsedrô   r¶   ÚsidÚadapterÚsessionrö   ÚrecentÚexcrº   ró   r›   s   `          @@@rM   ré   ré   ´   s  øøøøè è € Ø
�)Š)�LÑ
!Ô
!€CÝ�c�3ÑÔð  q­C°©H¬HÐ':Ð':Ò':Ð':¸Ò':Ð':Ð':Ð':ØˆØˆV„}Ð)Ò)Ð)ØÔ Ò$Ð$Ø!%ˆFÔØˆÝ×Ò˜fÔ.Ñ/Ô/€FÝ×&Ò& vÔ'7Ñ8Ô8€JÝ˜&Ñ!Ô!€FØð Ý˜VÐ-=È3ÐYlÐ%mÐ%mÑnÔnÐnÐnÐnÐnÐnÐnÐnØˆÝ×ÒÑÔð ¥;×#6Ò#6Ñ#8Ô#8ð ÅÈvÑ@VÔ@Vð ØˆØˆV„}˜Ò&Ð&Ø ˆÔ¸J Ô!;Ð!;Ø	Ô	˜sÒ	"Ð	" fÔ&@À*Ò&LÐ&LÐPU×PYÒPYÐZbÑPcÔPcÐgmÒPmÐPmØˆðPð Pð Pð Pð Pð Pð Pð Pð]Ø‰
ˆˆsÝ˜eÑ$Ô$ˆØ×+Ò+¨CÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆØˆu‰wŒwÐ˜˜Ø�Œ=Ð,Ò,Ð,à$×4Ò4°S½(Ô:QÐRW×R[ÒR[Ð\fÐhjÑRkÔRkÑ:lÔ:lÐzÐ4ñ  Aô  Að  Að  Að  Að  Að  Að  AˆHˆHà$×1Ò1°#Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6ˆHØ�yŠyÐ.Ñ/Ô/Ðy°E¸7²N°NÐah×atÒatÐuxÑayÔayÐ[yÐ[yÐ[yÐ[yÐ[yÐ[yÀ8ÈMÑCZØˆu‰wŒwÐ˜˜Ø×,Ò,Õ-=×-AÒ-AÀ'ÔBTÑ-UÔ-UÑVÔVÐVÐVÐVÐVÐVÐVˆÝ  ð  ,Að  ,A½VÀFÐPeÐPeÐosÐ=tÑ=tÔ=tð  ,Añ  ,Aô  ,Añ  Bô  BˆØˆ5‰7Œ7ð 	JÝ  ­ð *hÈÈvÌÐXhÒIhÐIhÐ3EÐ3EÐn~Ø f¸zÈwÌ|ð*hð *hØ^fð*hð *hñ iô ið ið ið ið ið ið ið ià�VŒ}Ð.Ò.Ð.ÀT°Ô0BÐ0BÐ0Bð	Jð 	Jð /Ð.øÝð ]ð ]ð ]Øˆ5‰7Œ7ð 	]Ý  Ð1AÈsÝ(2°3½Ñ(EÔ(EÐZ˜#œ*˜*È?ð*\ð *\ñ ]ô ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð	]ð 	]ð 	]ð 	]ð 	]ð 	]øøøøð]øøøs'   Å29L Æ-B/L ÉB9L Ì
M8Ì'A M3Í3M8c              ƒ  óx  K  — t          t                               ¦   «         ¦  «        D �]}|j        r|j        €Œ	 t          || ¦  «        ƒ d {V —† Œ*# t          $ rÚ t                               |dd¬¦  «         t                               |dd¬¦  «         d |_
        |j        rMt          t          ¦  «        5  |j                             d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t          ¦   «         |_        t                               d|j        ¦  «         Y �Œw xY wd S )NFT©ÚnotifyÚforgetéó  ©Úcodez4device %s disconnected while pushing server_snapshot)rÚ   r    rÛ   ro   rh   rª   r  rÜ   râ   rÏ   rv   r   ÚcloserN   rp   rW   rX   re   )r¢   r¡   s     rM   Úbroadcast_server_snapshotr!  â   s~  è è € Ý•w—~’~Ñ'Ô'Ñ(Ô(ð eñ eˆØŒ}ð 	 Ô 0Ð 8Øð	eÝ  ¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øÝð 		eð 		eð 		eÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�NŠNÐQÐSYÔScÑdÔdÐdÐdÑdð		eøøøðeð es7   ¼AÁA&D7Â9"C'ÃD7Ã'C+Ã+D7Ã.C+Ã/AD7Ä6D7c               ƒ  óæ   K  — 	 t                                ¦   «         } t          t          | ¦  «        ¦  «        ƒ d {V —† t	          ¦   «         ƒ d {V —† t          j        t          ¦  «        ƒ d {V —† ŒorH   )Úsystem_collectorÚcollectr!  Údevice_snapshot_payloadÚpush_agent_targetsrˆ   ÚsleepÚsnapshot_interval_seconds©Úsnapshots    rM   Úmonitor_systemr+  ô   s‹   è è € ð7Ý#×+Ò+Ñ-Ô-ˆÝ'Õ(?ÀÑ(IÔ(IÑJÔJÐJÐJÐJÐJÐJÐJÐJÝ Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ÝŒmÕ5Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ð	7rL   r*  úServerSnapshot | Nonec           	     óÄ  — | p$t           j        pt                                ¦   «         } |                      ¦   «         }t                               d¦  «        }t          | j        | j        ddt                               d¦  «        ¬¦  «        |d<   |d         t          d<   t          |dd¦  «        }|                     |�|                     ¦   «         ndd	ddd
œ¦  «         |S )zúExisting server snapshot plus derived glance fields.

    No new message type, no extra frame and no device-driven refresh: the same
    2 s frame simply carries a few more small fields. Account identity, plan
    and credits are never included.
    rE   TÚlast)rô   Úgateway_onlineÚpreviousr   ÚquotaNFr   )Úcodex_quota_validÚcodex_remaining_percentÚcodex_resets_atÚcodex_window_minutes)r#  Úlatestr$  Ú
model_dumpÚadaptersrU   r   Úcpu_percentÚmemory_percentr9   ÚgetattrÚupdateÚwire)r*  r¢   r  r1  s       rM   r%  r%  ü   sç   € ð ÐPÕ+Ô2ÐPÕ6F×6NÒ6NÑ6PÔ6P€HØ×!Ò!Ñ#Ô#€GÝ�lŠl˜7Ñ#Ô#€GÝ& xÔ';¸XÔ=TØ 4µ+·/²/À&Ñ2IÔ2IðKñ Kô K€GˆLÑà! ,Ô/…K�ÑÝ�G˜W dÑ+Ô+€EØ‡N‚N 5Ð#4�5—:’:‘<”<�<Ø.3ÐPQØ,0È$ðPð PñQô Qð Qð €NrL   c            
   ƒ  ó(	  K  — t          t                               ¦   «         ¦  «        D �]Z} | j        }| j        r| j        s!t          j                             |d ¦  «         Œ9	 t          j         	                    |¦  «        }t           	                    |¦  «        }|rP|�|j
        dk    rCt          | d||r|j
        nddœ¦  «        ƒ d {V —† t          j                             |d ¦  «         |t          j        vr³t                               ¦   «         }|r˜|d         }t                               | ¦  «         t                               | ¦  «         d | _        |j        t          j        |<   t%          j        t          | t                               |¦  «        ¦  «        d¦  «        ƒ d {V —† �Œˆ# t*          $ rÇ t          j                             |d ¦  «         t                               | dd¬	¦  «         t                               | dd¬	¦  «         d | _        d| _        | j        rMt-          t*          ¦  «        5  | j                             d
¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d | _        Y �ŒXw xY wt          t                               ¦   «         ¦  «        D �]�} | j        }t1          | ¦  «        s!t2          j                             |d ¦  «         Œ:d| j        vrŒDt2          j         	                    |¦  «        }t                               ¦   «         st2                               ¦   «         ng }|r|d         nd }|r"|d         |d         |d                  d         fnd }||k    rÎ|rlt                               | ¦  «         t          | t9          d|d         |d         ¬¦  «        ¦  «        ƒ d {V —† t2          j                             |d ¦  «         |r^t                               | ¦  «         d | _        |t2          j        |<   t          | t2                               |¦  «        ¦  «        ƒ d {V —† �ŒŸt          t:          j                             ¦   «         ¦  «        D ]}	t?          |	j         ¦  «        ƒ d {V —† Œd S )NÚPENDINGÚapproval_cancelledÚ	CANCELLED)ræ   Úapproval_idrÑ   r   r¦   FTr  r  r  únative-interactionrè   Ú	questionsÚindexÚidÚuser_input_cancelledr�   )ræ   rè   Úquestion_id)!rÚ   r    rÛ   rm   ro   rh   r@   ÚpresentationsÚpoprU   rÑ   rª   r¸   rÜ   râ   rÏ   rv   rB  rˆ   r¨   r=  r  r   r   r­   rA   rz   r  r  Úpi_sessionsÚsessionsÚpush_selected_pi_sessionrÞ   )
r¡   Ú
connectionÚ
current_idÚcurrentr  Úapprovalr0  ÚentryÚpresentationr  s
             rM   Úsynchronize_approvalsrT    s÷  è è € õ •w—~’~Ñ'Ô'Ñ(Ô(ð $ñ $ˆØÔ)ˆ
ØŒ}ð 	 FÔ$4ð 	ÝÔ#×'Ò'¨
°DÑ9Ô9Ð9Øð	$Ý"Ô0×4Ò4°ZÑ@Ô@ˆJÝ—m’m JÑ/Ô/ˆGØð >˜w˜°'´-À9Ò2LÐ2LÝ$ VÐ6JÐ[eØ.5ÐF˜Wœ]˜]¸;ð.Hð .Hñ Iô Ið Ið Ið Ið Ið Ið Ið IåÔ'×+Ò+¨J¸Ñ=Ô=Ð=Ø¥Ô!8Ð8Ð8Ý#×0Ò0Ñ2Ô2�Øð `Ø& qœz�HÝ—O’O FÑ+Ô+Ð+Ý—M’M &Ñ)Ô)Ð)Ø)-�FÔ&Ø:BÔ:N•IÔ+¨JÑ7Ý!Ô*­>¸&Å)Ç.Â.ÐQYÑBZÔBZÑ+[Ô+[Ð]^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_ùøÝð 		$ð 		$ð 		$ÝÔ#×'Ò'¨
°DÑ9Ô9Ð9Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØ!ˆFŒMØÔð <Ý�iÑ(Ô(ð <ð <Ø Ô*×0Ò0°dÐ0Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <à#ˆFÔÐÑð		$øøøõ •w—~’~Ñ'Ô'Ñ(Ô(ð Eñ EˆØÔ'ˆ
Ý˜fÑ%Ô%Ð]¥kÔ&?×&CÒ&CÀJÈtÑ&TÔ&TÐ&TÐU]Ø vÔ':Ð:Ð:¸8ÝÔ*×.Ò.¨zÑ:Ô:ˆÝ-6×-CÒ-CÑ-EÔ-EÐM•×#Ò#Ñ%Ô%Ð%È2ˆØ#Ð-ˆg�aŒjˆj¨ˆØW\Ðf�e˜LÔ)¨%°Ô*<¸UÀ7¼^Ô*LÈTÔ*RÐSÐSÐbfˆØ�\Ò!Ð!Øð ?Ý—’˜fÑ%Ô%Ð%Ý$ V­DÐ6LÐX`ÐabÔXcÐpxÐyzÔp{Ð,|Ñ,|Ô,|Ñ}Ô}Ð}Ð}Ð}Ð}Ð}Ð}Ð}ÝÔ)×-Ò-¨j¸Ñ>Ô>Ð>Øð EÝ—’˜fÑ%Ô%Ð%¸ fÔ&8Ø6B•Ô)¨*Ñ5Ý$ V­K×,<Ò,<¸UÑ,CÔ,CÑDÔDÐDÐDÐDÐDÐDÐDÐDùõ �Ô,×3Ò3Ñ5Ô5Ñ6Ô6ð ;ð ;ˆÝ& wÔ'9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð;ð ;s8   Á#EF1Æ1BJÈ>"I,É JÉ,I0É0JÉ3I0É4
JÊJc              ƒ  óŽ   K  — 	 |                       ¦   «         ƒ d {V —† |                      ¦   «          t          ¦   «         ƒ d {V —† ŒCrH   )ÚwaitÚclearrT  ©rã   s    rM   Úapproval_deliveryrY  I  s[   è è € ð&Ø�lŠl‰nŒnÐÐÐÐÐÐÐØ�Š‰ŒˆÝ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð&rL   c                óŠ   — t                                | ¦  «         t                               | ¦  «         d | _        d| _        d S )Nrx   )rÜ   râ   rÏ   rv   ry   r¬   s    rM   Úinvalidate_targetr[  P  s:   € Ý‡O‚O�FÑÔÐ�FŸMšM¨&Ñ1Ô1Ð1ÀT°&Ô2DÐbdÈ&ÔJaÐJaÐJarL   c                  ó   — e Zd Zd„ Zd„ ZdS )ÚDynamicNavigatorc                ó"   — d | _         d | _        d S rH   )ÚinstanceÚidentityr€   s    rM   Ú__init__zDynamicNavigator.__init__U  s   €  T�t”}¸¨$¬-¨-¨-rL   c                ó¤  — t          t          ¦  «        t          t          ¦  «        t          t          ¦  «        t          t          ¦  «        t          t
          ¦  «        f}| j        |k    rPt          t          t          t          t          t
          t          t          t          t          ¦	  «	        | _        || _        t          | j        |¦  «        S rH   )rF  r  r8  r°   Ú
operationsrA   r`  r3   rª   r­   Úagent_target_payloadr[  r_  r;  )r�   r×   r`  s      rM   Ú__getattr__zDynamicNavigator.__getattr__V  s    € ÝÕ%Ñ&Ô&¥r­(¡|¤|µBµ|Ñ4DÔ4DÅRÍ
Á^Ä^ÕTVÕWbÑTcÔTcÐdˆØŒ=˜(Ò"Ð"Ý#Õ$4µX½lÍ:ÕVaÕbpÕqõ  AUõ  Vgñ  hô  hˆDŒMð  wð  imô  ivÝ�t”} TÑ*Ô*Ð*rL   N)r„   r…   r†   ra  re  rK   rL   rM   r]  r]  T  s,   € € € € € Ø<Ð<Ð<ð+ð +ð +ð +ð +rL   r]  c              ƒ  óä   K  — 	 |                       ¦   «         ƒ d{V —† t                               d| j        j        ¦  «         dS # t
          $ r  t                               dd¬¦  «         Y dS w xY w)z9Warm Watch's quota once without delaying Gateway startup.Nz Codex quota initialized valid=%sz&Codex quota initialization unavailableT)Úexc_info)ÚreadyrW   Úinfor1  rô   r  rX   )r  s    rM   Úinitialize_codex_quotarj  ]  s�   è è € ðMØ�mŠm‰oŒoÐÐÐÐÐÐÐõ 	�ŠÐ6¸¼Ô8KÑLÔLÐLÐLÐLøõ ð Pð Pð PÝ�ŠÐ?È$ˆÑOÔOÐOÐOÐOÐOðPøøøs   „A Á&A/Á.A/Ú_r   c           	    óÎ  ‡K  — t          j        ¦   «         Šˆfd„t          _        ˆfd„t          _        dt
          v r.t          t
          d         _        t          t
          d         _	        t          t          t          ¦  «        }t          j        t          ‰¦  «        d¬¦  «        }t          j        t          ¦   «         d¬¦  «        }dt
          v r.t          j        t          t
          d         ¦  «        d¬¦  «        nd }	 d W V — |�M|                     ¦   «          t#          t           j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   t                               ¦   «          t                               ¦   «         D ]}t                               |¦  «         Œt*                               ¦   «         ƒ d {V —† t,                               ¦   «         ƒ d {V —† |                     ¦   «         ƒ d {V —† t          j        d„ t
                               ¦   «         D ¦   «         Ž ƒ d {V —† t3          ¦   «         ƒ d {V —† d t          _        d t          _        ||fD ]O}|                     ¦   «          t#          t           j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   ŒPd S # |�M|                     ¦   «          t#          t           j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   t                               ¦   «          t                               ¦   «         D ]}t                               |¦  «         Œt*                               ¦   «         ƒ d {V —† t,                               ¦   «         ƒ d {V —† |                     ¦   «         ƒ d {V —† t          j        d„ t
                               ¦   «         D ¦   «         Ž ƒ d {V —† t3          ¦   «         ƒ d {V —† d t          _        d t          _        ||fD ]O}|                     ¦   «          t#          t           j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   ŒPw xY w)	Nc                 ó"   •— t          ‰ ¦  «        S rH   )rä   rX  s   €rM   rk   zlifespan.<locals>.<lambda>j  s   ø€ Õ"3°GÑ"<Ô"<€ rL   c                 ó,   •— ‰                       ¦   «         S rH   )rŠ   rX  s   €rM   rk   zlifespan.<locals>.<lambda>k  s   ø€  §¢¡¤€ rL   rE   zapproval-delivery)r×   zsystem-monitorzcodex-quota-initializec              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rH   )r   )rü   r  s     rM   ú	<genexpr>zlifespan.<locals>.<genexpr>‚  s*   è è € ÐPÐP°7˜wŸ}š}™œÐPÐPÐPÐPÐPÐPrL   )rˆ   ÚEventr@   Ú	on_changerA   r8  Úqueue_codex_activityÚon_activityrà   Úon_terminalr0   r  Úcreate_taskrY  r+  rj  râ   r   ÚCancelledErrorr   r  rÜ   rÏ   ÚgatherrÛ   rT  )rk  Úapproval_serverÚdelivery_taskÚmonitor_taskÚ
quota_taskrR  Útaskrã   s          @rM   Úlifespanr~  g  s�  øè è € åŒm‰oŒo€GØ<Ð<Ð<Ð<…IÔØ.Ð.Ð.Ð.…KÔØ•(ÐÐÝ(<��ÔÔ%Ý(9��ÔÔ%Ý&¥yÕ2BÑCÔC€OåÔ'Õ(9¸'Ñ(BÔ(BÐI\Ð]Ñ]Ô]€MÝÔ&¥~Ñ'7Ô'7Ð>NÐOÑOÔO€Lð ¥Ð(Ð(õ Ô%Õ&<½XÀgÔ=NÑ&OÔ&OØ)AðCñ Cô Cð Cà.2ð ðØˆˆˆˆàÐ!Ø×ÒÑÔÐÝ�'Ô0Ñ1Ô1ð !ð !Ø Ð Ð Ð Ð Ð Ð Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !å�ŠÑÔÐÝ ×(Ò(Ñ*Ô*ÐDÐDˆE­;×+=Ò+=¸eÑ+DÔ+DÐ+DÐ+DÝ�nŠnÑÔÐÐÐÐÐÐÐÝ�lŠl‰nŒnÐÐÐÐÐÐÐØ×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ÝŒnÐPÐP½h¿oºoÑ>OÔ>OÐPÑPÔPÐQÐQÐQÐQÐQÐQÐQÐQÝ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø"�	ÔØ"�ÔØ! =Ð1ð 	ð 	ˆDØ�KŠK‰MŒMˆMÝ�'Ô0Ñ1Ô1ð ð Ø�
�
�
�
�
�
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	ð 	øð Ð!Ø×ÒÑÔÐÝ�'Ô0Ñ1Ô1ð !ð !Ø Ð Ð Ð Ð Ð Ð Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !å�ŠÑÔÐÝ ×(Ò(Ñ*Ô*ÐDÐDˆE­;×+=Ò+=¸eÑ+DÔ+DÐ+DÐ+DÝ�nŠnÑÔÐÐÐÐÐÐÐÝ�lŠl‰nŒnÐÐÐÐÐÐÐØ×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ÝŒnÐPÐP½h¿oºoÑ>OÔ>OÐPÑPÔPÐQÐQÐQÐQÐQÐQÐQÐQÝ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø"�	ÔØ"�ÔØ! =Ð1ð 	ð 	ˆDØ�KŠK‰MŒMˆMÝ�'Ô0Ñ1Ô1ð ð Ø�
�
�
�
�
�
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	øøøsy   ÄJ7 Ä9	EÅEÅEÊ	J)Ê)J-	Ê0J-	Ê70Q$Ë'	K<Ë0Q$Ë<L Ì Q$ÌL ÌD>Q$Ñ	Q	ÑQ$ÑQÑQ$ÑQÑQ$zDevice Lab Gatewayú0.5.0)r–   Úversionr~  r  r(   c              ƒ  ó@   K  — t          |j        d|j        i¬¦  «        S )Nr  )Ústatus_codeÚcontent)r   Ústatusr  )Úrequestr  s     rM   Úcontrol_error_handlerr†  �  s"   è è € å C¤J¸À3Ä:Ð8NÐOÑOÔOÐOrL   r¶   rd   c                óN   — | t           vrt          dd¦  «        ‚t           |          S )Nzagent adapter not enabledé”  )r8  r(   rµ   s    rM   r´   r´   ”  s(   € Ø•HÐÐÝÐ6¸Ñ<Ô<Ð<Ý�EŒ?ÐrL   z/api/approvalsc               ƒ  óL   K  — d„ t                                ¦   «         D ¦   «         S )Nc                ó:   — g | ]}|                      d ¬¦  «        ‘ŒS )Újson)Úmode)r7  )rü   rQ  s     rM   rþ   z"list_approvals.<locals>.<listcomp>œ  s)   € ÐVÐVÐV°ˆH×Ò VÐÑ,Ô,ÐVÐVÐVrL   )r@   r¸   rK   rL   rM   Úlist_approvalsr�  š  s&   è è € àVÐV½Y×=SÒ=SÑ=UÔ=UÐVÑVÔVÐVrL   z%/api/approvals/{approval_id}/decisionrB  r_   c              ƒ  ó®   K  — t                                | |j        ¦  «        st          dd¬¦  «        ‚d| t                                | ¦  «        j        dœS )Né™  z'approval is missing or already resolved©r‚  r  T)ÚacceptedrB  rÑ   )r@   Úresolver’   r   rU   rÑ   )rB  r_   s     rM   Údecide_approvalr“  Ÿ  sU   è è € å×Ò˜[¨%¬.Ñ9Ô9ð _Ý¨Ð4]Ð^Ñ^Ô^Ð^Ø¨[Å9Ç=Â=ÐQ\ÑC]ÔC]ÔCcÐdÐdÐdrL   z/api/projectsc               ƒ  ó8   K  — t                                ¦   «         S rH   )r  rÚ   rK   rL   rM   Úlist_projectsr•  ¦  s   è è € å× Ò Ñ"Ô"Ð"rL   éÉ   ©r‚  Úprojectr*   c              ƒ  ó:   K  — t                                | ¦  «        S rH   )r  Úadd)r˜  s    rM   Úadd_projectr›  «  s   è è € å×Ò Ñ(Ô(Ð(rL   z/api/projects/{project_id}éÌ   r  c              ƒ  ó>   K  — t                                | ¦  «         d S rH   )r  Údelete)r  s    rM   Údelete_projectrŸ  °  s    è è € å×Ò˜JÑ'Ô'Ð'Ð'Ð'rL   z/api/agentsc               ƒ  ó(   K  — d„ t           D ¦   «         S )Nc                ó   — g | ]	}|g d ¢dœ‘Œ
S ))r  Úresume_sessionÚ
send_inputr  Úlist_modelsr
  )r¶   rz   rK   )rü   r×   s     rM   rþ   zlist_agents.<locals>.<listcomp>·  sM   € ð  gð  gð  gð  VZ�dð  -Pð  -Pð  -Pð  Qð  Qð  gð  gð  grL   )r8  rK   rL   rM   Úlist_agentsr¥  µ  s1   è è € ð gð  gõ  ^fð  gñ  gô  gð  grL   z#/api/projects/{project_id}/sessionsc              ƒ  ó�  ‡K  — t                                | ¦  «        Šg i }}t          j        ˆfd„t                               ¦   «         D ¦   «         ddiŽƒ d {V —†}t          t          |¦  «        D ]Q\  }}t          |t          ¦  «        r"t          |t          ¦  «        r|j
        nd||<   Œ<|                     |¦  «         ŒR||dœS )Nc              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S rH   )r  )rü   r  r˜  s     €rM   rp  z#project_sessions.<locals>.<genexpr>¾  s1   øè è € Ð$eÐ$eÈ W×%:Ò%:¸7Ñ%CÔ%CÐ$eÐ$eÐ$eÐ$eÐ$eÐ$erL   Úreturn_exceptionsTzagent catalog unavailable)rL  Úerrors)r  rU   rˆ   rx  r8  rÛ   Úzipr  r  r(   r  Úextend)r  rL  r©  Úresultsr×   Úresultr˜  s         @rM   Úproject_sessionsr®  º  sß   øè è € å×"Ò" :Ñ.Ô.€GØ˜2ˆf€HÝ”NÐ$eÐ$eÐ$eÐ$eÕS[×SbÒSbÑSdÔSdÐ$eÑ$eÔ$eÐ~Ðy}Ð~Ð~Ð~Ð~Ð~Ð~Ð~Ð~€GÝ�H gÑ.Ô.ð $ð $‰ˆˆfÝ�f�iÑ(Ô(ð 	$Ý,6°v½|Ñ,LÔ,LÐm˜6œ=˜=ÐRmˆF�4‰LˆLà�OŠO˜FÑ#Ô#Ð#Ð#Ø ¨FÐ3Ð3Ð3rL   z)/api/agents/{agent}/sessions/{session_id}rÞ   c              ƒ  óV   K  — t          | ¦  «                             |¦  «        ƒ d {V —†S rH   )r´   r	  ©r¶   rÞ   s     rM   Úget_agent_sessionr±  Ç  s4   è è € å˜UÑ#Ô#×/Ò/°
Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;rL   z0/api/agents/{agent}/sessions/{session_id}/resumec              ƒ  ód   K  — t          | ¦  «                             |¦  «        ƒ d {V —†}d| ||dœS )NT)r‘  r¶   rÞ   Úresumed)r´   r¢  )r¶   rÞ   r³  s      rM   Úresume_agent_sessionr´  Ì  sF   è è € å Ñ&Ô&×5Ò5°jÑAÔAÐAÐAÐAÐAÐAÐA€GØ u¸JÐSZÐ[Ð[Ð[rL   z//api/agents/{agent}/sessions/{session_id}/inputéÊ   r)   c              ƒ  ób   K  — t          | ¦  «                             ||j        ¦  «        ƒ d {V —†S rH   )r´   r£  Útext©r¶   rÞ   r_   s      rM   Úagent_inputr¹  Ò  s8   è è € å˜UÑ#Ô#×.Ò.¨z¸5¼:ÑFÔFÐFÐFÐFÐFÐFÐFÐFrL   z2/api/agents/{agent}/sessions/{session_id}/settingsc              ƒ  óV   K  — t          | ¦  «                             |¦  «        ƒ d {V —†S rH   )r´   r  r°  s     rM   r  r  ×  s4   è è € å˜UÑ#Ô#×0Ò0°Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<rL   r+   c              ƒ  óX   K  — t          | ¦  «                             ||¦  «        ƒ d {V —†S rH   )r´   r
  r¸  s      rM   r
  r
  Ü  s6   è è € å˜UÑ#Ô#×3Ò3°JÀÑFÔFÐFÐFÐFÐFÐFÐFÐFrL   z/healthc               ƒ  ón   K  — ddt          d„ t                               ¦   «         D ¦   «         ¦  «        dœS )NÚokr  c              3  ó$   K  — | ]}|j         V — Œd S rH   )ro   )rü   r¾   s     rM   rp  zhealth.<locals>.<genexpr>ã  s%   è è € ÐMqÐMqÐ[\ÈaÌhÐMqÐMqÐMqÐMqÐMqÐMqrL   )r„  Úcontrol_versionÚonline_devices)Úsumr    rÛ   rK   rL   rM   ÚhealthrÂ  á  s:   è è € à¨wÍ#ÐMqÐMqÕ`g×`nÒ`nÑ`pÔ`pÐMqÑMqÔMqÑJqÔJqÐrÐrÐrrL   ú/F)Úinclude_in_schemar   c               ƒ  ó(   K  — t          dd¬¦  «        S )Nú/admini3  r—  )r   rK   rL   rM   ÚrootrÇ  æ  s   è è € å˜H°#Ð6Ñ6Ô6Ð6rL   rÆ  r   c               ƒ  ó2   K  — t          t          d¬¦  «        S )Nz	text/html©Ú
media_type)r   Úadmin_page_pathrK   rL   rM   Ú
admin_pagerÌ  ë  s   è è € å�°KÐ@Ñ@Ô@Ð@rL   z/api/admin.jsc               ƒ  ó¨   K  — t          t          j                             t          j                             t
          ¦  «        d¦  «        d¬¦  «        S )Nzadmin.jsztext/javascriptrÉ  )r   rS   ÚpathÚjoinÚdirnamerË  rK   rL   rM   Úadmin_scriptrÑ  ð  s8   è è € å�œŸš¥R¤W§_¢_µ_Ñ%EÔ%EÀzÑRÔRÐ_pÐqÑqÔqÐqrL   z/serverc               ƒ  óx   K  — t           j        pt                                ¦   «         } |                      ¦   «         S rH   )r#  r6  r$  r7  r)  s    rM   Úserver_statusrÓ  õ  s2   è è € åÔ&ÐDÕ*:×*BÒ*BÑ*DÔ*D€HØ×ÒÑ Ô Ð rL   z/devicesúlist[dict[str, Any]]c               ƒ  óX  K  — g } t          t                               ¦   «         d„ ¬¦  «        D ]{}|                     ¦   «         }t                               |j        ¦  «        |d<   t          j                             |j        |d         ¦  «        |d<   |  	                    |¦  «         Œ|| S )Nc                ó   — | j         S rH   )re   )r¾   s    rM   rk   zlist_devices.<locals>.<lambda>þ  s   € ¸¼€ rL   )r  r›   Úspeech_mode)
r~   r    rÛ   r‚   r°   rU   re   rÜ   ÚpreferencesÚappend)r­  r¡   Úitems      rM   Úlist_devicesrÛ  û  sš   è è € à€FÝ�ŸšÑ)Ô)Ð/DÐ/DÐEÑEÔEð ð ˆØ�}Š}‰ŒˆÝ%×)Ò)¨&Ô*:Ñ;Ô;ˆˆX‰Ý&Ô2×6Ò6°vÔ7GÈÈhÌÑXÔXˆˆ]ÑØ�Š�dÑÔÐÐØ€MrL   z/api/statusc               ƒ  ór  K  — t           j        pt                                ¦   «         } t                               ¦   «         }|D ]K}t
                               d|d         ¦  «        }|r&d|d<   |d         j        dz   |d         j        z   |d<   ŒL|  	                    ¦   «         t          ¦   «         ƒ d {V —†|dœS )	Nr?   rÞ   ÚWAITING_APPROVALrÑ   r   ú: Úwaiting_reason)Úserverr    rK  )r#  r6  r$  rK  r‚   r@   r¸   r–   r  r7  rÛ  )r*  rL  r  r  s       rM   Úadmin_statusrá    sÍ   è è € åÔ&ÐDÕ*:×*BÒ*BÑ*DÔ*D€HÝ×!Ò!Ñ#Ô#€HØð Tð TˆÝ×(Ò(¨¨w°|Ô/DÑEÔEˆØð 	TØ1ˆG�GÑØ(/°¬
Ô(8¸4Ñ(?À'È!Ä*ÔBSÑ(SˆGÐ$Ñ%øà×%Ò%Ñ'Ô'Ý%™œÐ'Ð'Ð'Ð'Ð'Ð'Øðð ð rL   Únotificationú Literal['done', 'failed'] | Nonec           
     ó.  — t                                | ¦  «        }|€ddd| › �| | dddd dœ	S ddd| › �dœ|                     d	¬
¦  «        ¥}t                               d| ¦  «        }|r&d|d<   |d         j        dz   |d         j        z   |d<   |�||d<   |S )NÚagent_stater?   ú	agent:pi:rx   ÚOFFLINEr   )	ræ   r¶   r›   rÞ   r×   ÚcwdrÑ   Úelapsed_secondsrß  )ræ   r¶   r›   T)Úinclude_historyrÝ  rÑ   rÞ  rß  râ  )rK  rU   r‚   r@   r¸   r–   r  )rÞ   râ  r  r¢   r  s        rM   Úpi_target_payloadrë    sã   € õ �oŠo˜jÑ)Ô)€GØ€à!¨DØ. *Ð.Ð.Ø$ØØØØ Ø"ð	
ð 	
ð 		
ð ¨Ø*˜jÐ*Ð*ðð ð �.Š.¨ˆ.Ñ
.Ô
.ð€Gõ
 ×$Ò$ T¨:Ñ6Ô6€GØð PØ-ˆ�ÑØ$+¨A¤JÔ$4°tÑ$;¸gÀa¼jÔ>OÑ$OˆÐ Ñ!ØÐØ".ˆ�ÑØ€NrL   c              ƒ  ó¦  K  — t          d| › �¦  «        ƒ d {V —†}|�||d<   t          t                               ¦   «         ¦  «        D �]}t                               |j        ¦  «        d| › �k    rŒ*	 t          ||¦  «        ƒ d {V —† ŒB# t          $ rº t           
                    |dd¬¦  «         t           
                    |dd¬¦  «         d |_        |j        rMt          t          ¦  «        5  |j                             d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t#          ¦   «         |_        Y �Œw xY wd S )Nræ  râ  FTr  r  r  )rd  rÚ   r    rÛ   r°   rU   re   rª   r  rÜ   râ   rÏ   rv   rh   r   r   ro   rN   rp   )rÞ   râ  r¢   r¡   s       rM   rM  rM  3  s¨  è è € õ )Ð)A°ZÐ)AÐ)AÑBÔBÐBÐBÐBÐBÐBÐB€GØÐ¸< ¨Ñ!8Ý•w—~’~Ñ'Ô'Ñ(Ô(ð )ñ )ˆÝ×Ò˜FÔ,Ñ-Ô-Ð1I¸ZÐ1IÐ1IÒIÐIØð
	)Ý  ¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øÝð 	)ð 	)ð 	)Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÐÑð	)øøøð)ð )s7   Á3B
Â
A&EÃ0"DÄEÄD"Ä"EÄ%D"Ä&$EÅErê   r   c              ƒ  óH  K  — t                                | j        ¦  «        }|�|j        sd S ddd| j        › �| j        |j        |j        |j        �|j                             ¦   «         nd dœ}t          t           	                    ¦   «         ¦  «        D �]}t                               |j        ¦  «        d| j        › �k    rŒ/	 t          ||¦  «        ƒ d {V —† ŒG# t          $ rº t                               |dd¬¦  «         t                                |dd¬¦  «         d |_        |j        rMt'          t          ¦  «        5  |j                             d¬	¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t-          ¦   «         |_        Y �Œ
w xY wd S )
NÚagent_activityr?   ræ  )ræ   r¶   r›   rÞ   Úactivity_typeÚactivityr   FTr  r  r  )rK  rU   rÞ   rØ   rï  Úactivity_updated_atr   rÚ   r    rÛ   r°   re   rª   r  rÜ   râ   rÏ   rv   rh   r   r   ro   rN   rp   )rê   r  r¢   r¡   s       rM   Úpush_selected_pi_activityrò  H  sï  è è € Ý�oŠo˜eÔ.Ñ/Ô/€GØ€˜gÔ5€Øˆà ¨4Ø0˜eÔ.Ð0Ð0ØÔ&Ø Ô.ØÔ+ð Ô*Ð6ð Ô'×1Ò1Ñ3Ô3Ð3àðð €Gõ •w—~’~Ñ'Ô'Ñ(Ô(ð )ñ )ˆÝ×Ò˜FÔ,Ñ-Ô-Ð1O¸UÔ=MÐ1OÐ1OÒOÐOØð
	)Ý  ¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øÝð 	)ð 	)ð 	)Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÐÑð	)øøøð)ð )s7   ÃCÃA&FÅ"E/Å#FÅ/E3Å3FÅ6E3Å7$FÆFc              ƒ  óÄ  K  — t          | ¦  «        }|sdddœS |\  }}	 t          |¦  «                             |¦  «        ƒ d {V —†}|dk    rEt          t          |¦  «        d¦  «        r(t          |¦  «                             |¦  «        ƒ d {V —† dt          | ¦  «        dœ|                     ¦   «         ¥}|                     dd¦  «                             d	¦  «        d
d …          	                    d	d¬¦  «        |d<   |dk    rt                               |¦  «        re|j        r^t          |¦  «        }dD ]7}|                     |¦  «        s |                     |¦  «        r||         ||<   Œ8|                     |¦  «         |S # t          $ rM |dk    r+t                               |¦  «        rt          |¦  «        cY S dt          | ¦  «        |||ddd d dœ	cY S w xY w)NÚtarget_staterà  )ræ   r›   rE   Úobserve_sessionrå  Úrecent_textrx   zutf-8i`ðÿÿÚignore)r©  r?   )rö  rß   rØ   rç  r   )	ræ   r›   r¶   rÞ   r×   rÑ   ré  rû   Úeffort)r   r´   r	  Úhasattrrõ  r   r7  rU   ÚencodeÚdecoderK  Úliverë  r<  r(   )r›   r  r¶   r  r  r¢   Úoverlayr   s           rM   rd  rd  h  s4  è è € Ý˜&Ñ!Ô!€FØð :Ø%°Ð9Ð9Ð9Ø�J€Eˆ3ðYÝ# EÑ*Ô*×6Ò6°sÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ˆØ�GÒÐ¥­°EÑ(:Ô(:Ð<MÑ NÔ NÐÝ˜eÑ$Ô$×4Ò4°SÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø'Õ1AÀ&Ñ1IÔ1IÐbÐbÈW×M_ÒM_ÑMaÔMaÐbˆØ!(§¢¨]¸2Ñ!>Ô!>×!EÒ!EÀgÑ!NÔ!NÈuÈvÈvÔ!V×!]Ò!]Ð^eÐnvÐ!]Ñ!wÔ!wˆ�ÑØ�DŠ=ˆ=�[Ÿ_š_¨SÑ1Ô1ˆ=°g´lˆ=Ý% cÑ*Ô*ˆGð Hð _ð _�Ø—{’{ 5Ñ)Ô)Ð^¨g¯kªk¸%Ñ.@Ô.@Ð^ÐPWÐX]ÔP^ÀÈÁøØ�NŠN˜7Ñ#Ô#Ð#ØˆøÝð Yð Yð YØ�DŠ=ˆ=�[Ÿ_š_¨SÑ1Ô1ˆ=Ý$ SÑ)Ô)Ð)Ð)Ð)Ø$Õ.>¸vÑ.FÔ.FÈuÐbeØ˜y¸1ÀTÐSWðYð Yð 	Yð 	Yð 	YðYøøøs   ŸE(F Æ9GÇGÇGc              ƒ  óL  K  — i }t          t                               ¦   «         ¦  «        D �]÷}t                               |j        ¦  «        }t                               |j        ¦  «        }t          |¦  «        }t          |¦  «        r|r
| r	|| |fk    rŒl	 ||vrt          |¦  «        ƒ d {V —†||<   ||         }t                               |j        ¦  «        |k    s2t                               |j        ¦  «        |k    st          |¦  «        sŒç|rst          |t          d|||d         |d         |                     d¦  «        |                     dd¦  «        |                     dd¦  «        ¬¦  «        ¦  «        ƒ d {V —† npt          ||¬	¦  «        }	|d         d
k    r0|j        dv r'|d         dv r|d                              ¦   «         |	d<   |d         |_        t          ||	¦  «        ƒ d {V —† �ŒÎ# t          $ r t                               d¦  «         Y �Œõw xY wd S )Nrî  r   r�   rï  rØ   rx   rö  )ræ   r›   r  r¶   rÞ   rï  rð  rö  ©r  rE   )ÚRUNNINGrÝ  rÑ   )ÚDONEÚFAILEDrâ  zAgent target delivery failed)rÚ   r    rÛ   r°   rU   re   rº   r   r­   rd  rª   r  ry   Úlowerr  rW   rX   )
r¶   r  rð  Úcacher¡   r›   rº   r  r¢   Úoutgoings
             rM   r&  r&  ‚  sÂ  è è € Ø€EÝ•w—~’~Ñ'Ô'Ñ(Ô(ð ;ñ ;ˆÝ×!Ò! &Ô"2Ñ3Ô3ˆÝ×*Ò*¨6Ô+;Ñ<Ô<ˆ
Ý˜fÑ%Ô%ˆÝ˜fÑ%Ô%ð 	¨Vð 	¸ð 	À&ÈUÐTWÈLÒBXÐBXØð	;Ø˜UÐ"Ð"Õ:NÈvÑ:VÔ:VÐ4VÐ4VÐ4VÐ4VÐ4VÐ4V E¨&¡MØ˜F”mˆGå×Ò Ô 0Ñ1Ô1°VÒ;Ð;½|×?VÒ?VÐW]ÔWgÑ?hÔ?hÐjtÒ?tÐ?tõ  }Kð  LRñ  }Sô  }SÐ?tð  U]Øð 	7Ý$ V­TÐ7GÈvÐhrÐyð  ABô  zCð  OUð  VWô  OXØ")§+¢+¨oÑ">Ô">ÈÏÊÐTeÐfhÑHiÔHiØ '§¢¨M¸"Ñ =Ô =ð.?ñ .?ô .?ñ @ô @ð @ð @ð @ð @ð @ð @ð @ð @õ   ¸*ÐEÑEÔE�Ø˜!”9 Ò'Ð'¨FÔ,CÐGeÐ,eÐ,eÐjqÐryÔjzð  Pð  kPð  kPØ/6°wÔ/?×/EÒ/EÑ/GÔ/G�H˜^Ñ,Ø*1°'Ô*:�Ô'Ý$ V¨XÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ùøÝð 	;ð 	;ð 	;Ý�NŠNÐ9Ñ:Ô:Ð:Ð:Ñ:ð	;øøøð+;ð ;s   ÂA9G9ÄC%G9Ç9$H!È H!c                ó|   ‡ — ˆ fd„}‰ t           vr,t                                |¦   «         ¦  «        t           ‰ <   d S d S )Nc               “  ó  •K  — 	 t          j        d¦  «        ƒ d {V —† t          d‰ ¦  «        ƒ d {V —† t          d‰ d¬¦  «        ƒ d {V —† t                               ‰ d ¦  «         d S # t                               ‰ d ¦  «         w xY w)Ng333333Ã?rE   T)rð  )rˆ   r'  r&  Ú_codex_push_tasksrJ  )r  s   €rM   Údeliverz%queue_codex_activity.<locals>.deliver¡  s°   øè è € ð	-Ý”- Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ý$ W¨cÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ý$ W¨c¸DÐAÑAÔAÐAÐAÐAÐAÐAÐAÐAå×!Ò! # tÑ,Ô,Ð,Ð,Ð,øÕ×!Ò! # tÑ,Ô,Ð,Ð,øøøs   …AA* Á*B)r  rÏ   Úspawn)r  Úmethodr	  s   `  rM   rs  rs  Ÿ  sU   ø€ ð-ð -ð -ð -ð -ð Õ#Ð#Ð#Ý!'§¢¨g¨g©i¬iÑ!8Ô!8Õ˜#ÑÐÐð $Ð#rL   z/integrations/pi/events)rt   Úx_device_lab_pi_tokenc              ƒ  óR  K  — t                                |¦  «        st          dd¬¦  «        ‚t                               | ¦  «        }| j        dv r@t                               d| j        ¦  «         t                               d| j        ¦  «         | j        dk    r5|j
        r.t          d|j        |j        |j        |j        |j        ¬¦  «         | j        dk    rt!          | ¦  «        ƒ d {V —† n t#          |j        |j
        ¦  «        ƒ d {V —† d	|                     ¦   «         d
œS )Ni‘  zinvalid Pi integration tokenr�  )Úsession_shutdownÚ	agent_endr?   r  rÖ   rð  T)r‘  r  )Úcredential_storeÚauthenticate_pir   rK  Úapplyrê   r@   Úcancel_sessionrÞ   rA   Úpending_notificationrà   rÑ   rß   r×   rØ   rò  rM  r‚   )rê   r  r  s      rM   Úpi_eventr  ¬  sA  è è € õ
 ×+Ò+Ð,AÑBÔBð TÝ¨Ð4RÐSÑSÔSÐSÝ×Ò Ñ&Ô&€GØ„{Ð7Ð7Ð7Ý× Ò   uÔ'7Ñ8Ô8Ð8Ý×"Ò" 4¨Ô(8Ñ9Ô9Ð9Ø„{�kÒ!Ð! gÔ&BÐ!Ý˜$ Ô 2°G´MÀ7ÔCUØ&œ|¸WÔ=Tð	Vñ 	Vô 	Vð 	Và„{�jÒ Ð Ý'¨Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.å& wÔ'9¸7Ô;WÑXÔXÐXÐXÐXÐXÐXÐXÐXØ¨¯ªÑ)9Ô)9Ð:Ð:Ð:rL   z/devices/{device_id}/targetre   Ú	selectionc              ƒ  ó  K  — | t           vrt          dd¬¦  «        ‚t          |j        ¦  «        }t	          |¦  «        }|rM|\  }}|dk    rt
                               |¦  «        s(t          |¦  «                             |¦  «        ƒ d {V —† t           |          }t                               | ¦  «        |k    rBt                               |¦  «         t                               |¦  «         d |_        d|_        t                               | |¦  «        }|d         }d}	t!          |¦  «        �rJ	 t#          |¦  «        ƒ d {V —†}
t                               | ¦  «        |k    rbt'          |t)          |
|¬¦  «        ¦  «        ƒ d {V —† |
                     d	d¦  «        |_        t                               |¦  «        ƒ d {V —† d
}	n³# t,          $ r¦ t                               |dd
¬¦  «         t                               |dd
¬¦  «         d |_        |j        rMt1          t,          ¦  «        5  |j                             d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        Y nw xY w| ||	dœS )Nrˆ  údevice not foundr�  r?   rx   rº   Frÿ  rÑ   Tr  r  r  )re   r›   Ú	delivered)r    r   r   r›   r   rK  rU   r´   r	  r°   rÜ   râ   rÏ   rv   ry   rŠ   r­   rd  rº   rª   r  rö   r  rh   r   r   ro   )re   r  r›   r  r¶   r  r¡   r_   rº   r  r¢   s              rM   Úselect_targetr  Á  sÅ  è è € à�ÐÐÝ¨Ð4FÐGÑGÔGÐGÝ˜iÔ.Ñ/Ô/€FÝ˜&Ñ!Ô!€FØð 6Ø‰
ˆˆsØ˜’�¥+§/¢/°#Ñ"6Ô"6�Ý˜eÑ$Ô$×0Ò0°Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ý�YÔ€FÝ×Ò˜	Ñ"Ô" fÒ,Ð,Ý�Š˜ÑÔÐÝ�Š�fÑÔÐØ!ˆÔØ"$ˆÔÝ
×
Ò
˜9 VÑ
,Ô
,€EØ�\Ô"€JØ€IÝ�fÑÔñ $ð	$Ý0°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGÝ×&Ò& yÑ1Ô1°:Ò=Ð=Ý$ V­D°È:Ð,VÑ,VÔ,VÑWÔWÐWÐWÐWÐWÐWÐWÐWØ*1¯+ª+°g¸rÑ*BÔ*B�Ô'Ý×'Ò'¨Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø �	øøÝð 	$ð 	$ð 	$Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÐÐð	$øøøð #¨fÀ9ÐMÐMÐMs8   Ä2BG ÇA&I8È."IÉI8ÉI 	É I8É#I 	É$I8É7I8z/devices/{device_id}/messagerð   c              ƒ  ó”  K  — t                                | ¦  «        }|€t          dd¬¦  «        ‚|j        r|j        €t          dd¬¦  «        ‚d|j        |j        dœ}	 t          ||¦  «        ƒ d {V —† n2# t          $ r%}d|_        d |_        t          dd	¬¦  «        |‚d }~ww xY wt           
                    d
| ¦  «         d| |dœS )Nrˆ  r  r�  r�  r¥   Údisplay_message)ræ   r–   r—   Fúdevice disconnectedz!sent display_message to device %sT)Úsentre   rð   )r    rU   r   ro   rh   r–   r—   rª   r  rW   ri  )re   rð   r¡   r¢   r  s        rM   Úsend_messager  ç  s  è è € å�[Š[˜Ñ#Ô#€FØ€~Ý¨Ð4FÐGÑGÔGÐGØŒ=ð I˜FÔ,Ð4Ý¨Ð4GÐHÑHÔHÐHà(°7´=È'Ì,ÐWÐW€GðTÝ˜V WÑ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-øÝð Tð Tð TØˆŒØˆÔÝ¨Ð4IÐJÑJÔJÐPSÐSøøøøðTøøøõ ‡K‚KÐ3°YÑ?Ô?Ð?Ø y¸WÐEÐEÐEs   Á A7 Á7
B&Â B!Â!B&z&/devices/{device_id}/test-notificationr…  c              ƒ  óš  K  — t                                | ¦  «        }|€t          dd¬¦  «        ‚|j        r|j        €t          dd¬¦  «        ‚	 t          |d|j        dœ¦  «        ƒ d {V —† n2# t          $ r%}d|_        d |_        t          dd	¬¦  «        |‚d }~ww xY wt           	                    d
|j        | ¦  «         d| |j        dœS )Nrˆ  r  r�  r�  r¥   Únotification_test)ræ   rŸ   Fr  z&sent %s notification test to device %sT)r  re   rŸ   )
r    rU   r   ro   rh   rª   rŸ   r  rW   ri  )re   r…  r¡   r  s       rM   Útest_notificationr"  ú  s  è è € å�[Š[˜Ñ#Ô#€FØ€~Ý¨Ð4FÐGÑGÔGÐGØŒ=ð I˜FÔ,Ð4Ý¨Ð4GÐHÑHÔHÐHðTÝ˜VÐ.AÈ7Ì<Ð%XÐ%XÑYÔYÐYÐYÐYÐYÐYÐYÐYÐYøÝð Tð Tð TØˆŒØˆÔÝ¨Ð4IÐJÑJÔJÐPSÐSøøøøðTøøøõ ‡K‚KÐ8¸'¼,È	ÑRÔRÐRØ y¸'¼,ÐGÐGÐGs   ÁA/ Á/
BÁ9 BÂBc                  ó>   — e Zd ZU  edd¬¦  «        Zded<   ded<   dS )	ÚSpeechSelectionr�   é¾   r�   rd   r›   z6Literal['OFF', 'MANUAL', 'AUTO_REPLY', 'AUTO_SUMMARY']rŒ  Nrœ   rK   rL   rM   r$  r$    s>   € € € € € € Ø�% 1°Ð5Ñ5Ô5€FÐ5Ð5Ð5Ñ5Ø@Ð@Ð@Ñ@Ð@Ð@rL   r$  c                  ó<   — e Zd ZU  edd¬¦  «        Zded<   ddiZdS )	Ú
SpeechTestr�   r%  r�   rd   r›   ÚextraÚforbidN)r„   r…   r†   r   r›   r‡   Úmodel_configrK   rL   rM   r'  r'    s:   € € € € € € Ø�% 1°Ð5Ñ5Ô5€FÐ5Ð5Ð5Ñ5Ø˜XÐ&€L€L€LrL   r'  z/api/devices/{device_id}/speechc              ƒ  óà  K  — t                                | ¦  «        }|st          dd¦  «        ‚t                               | ¦  «        t	          |j        ¦  «        k    rt          dd¦  «        ‚t                               |¦  «         t          j         	                    | |j        |j
        ¦  «         t                               |¦  «        ƒ d {V —† |j
        t	          |j        ¦  «        dœS )Nrˆ  úDevice not foundr�  ú Target changed; refresh settings)rŒ  r›   )r    rU   r   r°   r   r›   rÜ   râ   rØ  rŠ   rŒ  rö   ©re   r_   r¡   s      rM   Úset_speech_moder/    s×   è è € å�[Š[˜Ñ#Ô#€FØð 5Ý˜CÐ!3Ñ4Ô4Ð4Ý×Ò˜	Ñ"Ô"Õ&6°u´|Ñ&DÔ&DÒDÐDÝ˜CÐ!CÑDÔDÐDÝ‡O‚O�FÑÔÐÝÔ×Ò˜Y¨¬°e´jÑAÔAÐAÝ
×
Ò
˜FÑ
#Ô
#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ø”JÕ*:¸5¼<Ñ*HÔ*HÐIÐIÐIrL   z$/api/devices/{device_id}/speech-testc              ƒ  ó>  K  — t                                | ¦  «        }|st          dd¦  «        ‚t                               | ¦  «        t	          |j        ¦  «        k    rt          dd¦  «        ‚t                               |dd¦  «        st          dd¦  «        ‚dd	iS )
Nrˆ  r,  r�  r-  Úscreenu   è¯­éŸ³æ’­æ”¾æµ‹è¯•æˆ�åŠŸã€‚zASpeech unavailable, device busy or firmware lacks speech_playbackr‘  T)r    rU   r   r°   r   r›   rÜ   Ústartr.  s      rM   Útest_speechr3  "  s›   è è € å�[Š[˜Ñ#Ô#€FØð 5Ý˜CÐ!3Ñ4Ô4Ð4Ý×Ò˜	Ñ"Ô"Õ&6°u´|Ñ&DÔ&DÒDÐDÝ˜CÐ!CÑDÔDÐDÝ�>Š>˜& (Ð,IÑJÔJð fÝ˜CÐ!dÑeÔeÐeØ˜ÐÐrL   z
/device/wsrh   r   c              ƒ  óê   ‡K  — |                       ¦   «         ƒ d {V —† d }	 |                      ¦   «         ƒ d {V —†Št          ‰t          ¦  «        r‰                     d¦  «        dk    �rª|                      dd¬¦  «        ƒ d {V —† 	 |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S d}t3          ˆfd„|D ¦   «         ¦  «        �rª|                      dd¬¦  «        ƒ d {V —† 	 |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S ‰d         }t4                               |‰d         ¦  «        �sÅt.                               d|¦  «         |                      dd¬¦  «        ƒ d {V —† 	 |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S t                               |¦  «        }|�c|j        �\t                               |dd¬¦  «         t                               |dd¬¦  «         |j                             dd¬¦  «        ƒ d {V —† t;          |‰d         ‰d         | t          ‰                     d¦  «        t<          ¦  «        r d„ ‰                     dg ¦  «        D ¦   «         nt?          ¦   «         ¬¦  «        }|t          |<   tA          |dtC          t+          ¦   «          "                    ¦   «         dz  ¦  «        tG          ¦   «         tI          tJ          |j&        z  ¦  «        tN           (                    |¦  «        dœ¦  «        ƒ d {V —† tR          j*        ptR           +                    ¦   «         }tA          |tY          |¦  «        ¦  «        ƒ d {V —† tN                               |¦  «        }t[          |¦  «        ƒ d {V —†}tA          |t          |fi d|j&        v rdtN           (                    |¦  «        ini ¤Ž¦  «        ƒ d {V —† |                     dd ¦  «        |_.        t           /                    |¦  «        ƒ d {V —† t           0                    ¦   «          t.                               d!|j        |j1        |j2        ¦  «         	 |                      ¦   «         ƒ d {V —†}t          |t          ¦  «        r(t          |                     d¦  «        tf          ¦  «        s!t.                               d"|j        ¦  «         Œyt+          ¦   «         |_        |d          4                    d#¦  «        r
d|d         in||_5        |d          4                    d$¦  «        r#t           6                    ||¦  «        ƒ d {V —† �n¢|d          4                    d%¦  «        rI|d         d&k    rt                               |¦  «         t           6                    ||¦  «        ƒ d {V —† �n>|d         d'v rÈ|d         d(k    rt                               |¦  «         |d         d)k    rto          ||¦  «        ƒ d {V —† �nê|j8        �|j8         9                    ¦   «         r/t           :                    to          ||¦  «        ¦  «        |_8        �n›tA          |d*|                     d+¦  «        d,d-œ¦  «        ƒ d {V —† �nl|d         d.v rÒ|d         d/k    r#tv           6                    ||¦  «        ƒ d {V —† �n3|j8        �|j8         9                    ¦   «         r:t           :                    tv           6                    ||¦  «        ¦  «        |_8        �nÙtA          |t          |d         d0k    rd1nd2|                     d+¦  «        d3¬-¦  «        ¦  «        ƒ d {V —† �n�|d         d4k    rÅt                               |j        ¦  «        |u r£|j        rœ|                     d5¦  «        }	t                               |                     d6¦  «        ¦  «        }
d7|j&        vr|	d8k    r|
rd9|
j<        vrd:|
j<        v rd:}	t           =                    |                     d6¦  «        |	|j        ¬;¦  «         n¿|d         d<k    rKt.                               d=|j        |                     d>d?¦  «        |                     d@d?¦  «        ¦  «         nh|d         dAk    r5t.           >                    dB|j        |                     dC¦  «        ¦  «         n't.                               dD|j        |d         ¦  «         �Œ™# t~          $ r Y n)t&          $ r t.           @                    dE¦  «         Y nw xY w|�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S # |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�øt                               |j        ¦  «        |u rØt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         w w w xY w)FNræ   Úhelloið  zfirst message must be hello)r  ÚreasonFTr  r  r  zdevice %s offline)re   Údevice_tokenrf   rg   c              3  ó|   •K  — | ]6}t          ‰                     |¦  «        t          ¦  «         p‰|          V — Œ7d S rH   )r  rU   rd   )rü   r  r5  s     €rM   rp  z#device_websocket.<locals>.<genexpr>9  sE   øè è € ÐYÐYÈ•:˜eŸiši¨™nœn­cÑ2Ô2Ð2ÐD¸%À¼*°nÐYÐYÐYÐYÐYÐYrL   zinvalid hellore   r7  zrejected unauthorized device %szunauthorized deviceiô  zreplaced by a new connectionrf   rg   rz   c                ó<   — h | ]}t          |t          ¦  «        ¯|’ŒS rK   )r  rd   )rü   Úvs     rM   ú	<setcomp>z#device_websocket.<locals>.<setcomp>M  s)   € ÐYÐYÐY ÅjÐQRÕTWÑFXÔFXÐY˜!ÐYÐYÐYrL   )re   rf   rg   rh   rz   Ú	hello_ackiè  )ræ   Úserver_time_msÚtimezone_offset_minutesrz   r  ztarget-selectr  rÑ   rx   z%device %s online board=%s firmware=%szdevice %s sent invalid event)Úvoice_Ú	settings_Úspeech_Úuser_input_Úsession_Ú	creation_Úhistory_rA  r?  Úvoice_start)rñ   rõ   rç   rñ   rç   rî   rè   zSettings request busyrï   )Úcatalog_getÚtarget_selectÚ
target_getÚcreation_getÚsession_createÚsession_operation_getÚhistory_getÚuser_input_responserN  rM  Únavigator_errorÚhistory_errorÚBusyÚapproval_responser’   rB  rC  ÚrejectÚdeclinerâ   )Údevice_connectionÚbutton_eventz,device %s button clicked button=%s action=%sÚbuttonÚunknownÚactionÚ	heartbeatzdevice %s heartbeat uptime=%sÚuptimezdevice %s event type=%szdevice websocket failed)AÚacceptÚreceive_jsonr  r  rU   r   rÜ   râ   rÏ   rv   r@   rI  rJ  rm   rA   r    re   rh   r   r  ro   rN   rp   rW   ri  Úanyr  ÚauthenticaterX   rc   rÚ   rŠ   rª   rO   Ú	timestampra   r~   r4   rz   r°   rº   r#  r6  r$  r%  rd  ry   rö   rã   rf   rg   rd   Ú
startswithrq   Úhandlerë   ru   Údoner
  r¼   Úchoicesr’  Údebugr   Ú	exception)rh   r¡   Úrequiredre   r0  r*  r›   r¢   rê   r’   rQ  r5  s              @rM   Údevice_websocketrh  .  s  øè è € à
×
Ò
Ñ
Ô
ÐÐÐÐÐÐÐØ €Fðv?Ø×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ˆÝ˜%¥Ñ&Ô&ð 	¨%¯)ª)°FÑ*;Ô*;¸wÒ*FÑ*FØ—/’/ tÐ4Q�/ÑRÔRÐRÐRÐRÐRÐRÐRÐRØðF ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"IðO FˆÝÐYÐYÐYÐYÐPXÐYÑYÔYÑYÔYñ 	Ø—/’/ t°O�/ÑDÔDÐDÐDÐDÐDÐDÐDÐDØð| ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"IðE ˜+Ô&ˆ	Ý×,Ò,¨Y¸¸nÔ8MÑNÔNñ 	Ý�NŠNÐ<¸iÑHÔHÐHØ—/’/ tÐ4I�/ÑJÔJÐJÐJÐJÐJÐJÐJÐJØðp ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"Iõ{ —;’;˜yÑ)Ô)ˆØÐ HÔ$6Ð$BÝ�OŠO˜H¨U¸4ˆOÑ@Ô@Ð@Ý�MŠM˜(¨5¸ˆMÑ>Ô>Ð>ØÔ$×*Ò*°Ð=[Ð*Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\åØØ˜”.Ø˜:Ô&Øå˜eŸiši¨Ñ7Ô7½Ñ>Ô>ðJÐYÐY U§Y¢Y¨~¸rÑ%BÔ%BÐYÑYÔYÐYÝDGÁEÄEð
ñ 
ô 
ˆð $��	ÑÝ˜VØÝ!¥'¡)¤)×"5Ò"5Ñ"7Ô"7¸$Ñ">Ñ?Ô?Ý'FÑ'HÔ'HÝ!¥,°Ô1DÑ"DÑEÔEÝ ,× 7Ò 7¸	Ñ BÔ Bð&
ð &
ñ ô ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ $Ô*ÐHÕ.>×.FÒ.FÑ.HÔ.HˆÝ˜VÕ%<¸XÑ%FÔ%FÑGÔGÐGÐGÐGÐGÐGÐGÐGÝ×!Ò! )Ñ,Ô,ˆÝ,¨VÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆÝ˜V¥D¨ð  %að  %aÐpð  DJô  DWð  qWð  qWÐ5HÍ×I`ÒI`ÐajÑIkÔIkÐ4lÐ4lð  ]_ð  %að  %añ  bô  bð  	bð  	bð  	bð  	bð  	bð  	bð  	bØ")§+¢+¨g°rÑ":Ô":ˆÔÝ×Ò Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ý×ÒÑÔÐÝ�ŠØ3°VÔ5EÀvÄ|ÐU[ÔUdñ	
ô 	
ð 	
ð/	XØ#×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ˆEÝ˜e¥TÑ*Ô*ð µ*¸U¿YºYÀvÑ=NÔ=NÕPSÑ2TÔ2Tð Ý—’Ð=¸vÔ?OÑPÔPÐPØÝ&™yœyˆFÔà;@À¼=×;SÒ;Sð  Ueñ  <fô  <fð  !q ¨¨v¬Ð 7Ð 7ð  lqˆFÔØ�VŒ}×'Ò'¨	Ñ2Ô2ð 'XÝ—o’o f¨eÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ñ4Ø�v”×)Ò)¨(Ñ3Ô3ð %XØ˜”= MÒ1Ð1µ8·?²?À6Ñ3JÔ3JÐ3JÝ—m’m F¨EÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ñ2Ø�v”Ð"WÐWÐWØ˜”= NÒ2Ð2µH·O²OÀFÑ4KÔ4KÐ4KØ˜”=Ð$5Ò5Ð5Ý)¨&°%Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ñ8àÔ+Ð3°vÔ7K×7PÒ7PÑ7RÔ7RÐ3Ý/5¯|ª|½OÈFÐTYÑ<ZÔ<ZÑ/[Ô/[˜Ô,Ñ,å,¨VÐ=MÐ\a×\eÒ\eÐfrÑ\sÔ\sð  @Wð  6Xð  6Xñ  Yô  Yð  Yð  Yð  Yð  Yð  Yð  Yð  Yñ  YØ�v”ð  #kð  kð  kØ˜”=Ð"7Ò7Ð7½i×>NÒ>NÈvÐV[Ñ>\Ô>\Ð8\Ð8\Ð8\Ð8\Ð8\Ð8\Ð8\Ñ8\ØÔ)Ð1°VÔ5I×5NÒ5NÑ5PÔ5PÐ1Õfl×frÒfrÕs|÷  tDò  tDð  EKð  LQñ  tRô  tRñ  gSô  gSÐQWÔQeÑQeÝ)¨&µÐPUÐV\ÔP]Ð_lÒPlÐPlÐ;LÐ;Lð  sBð  NS÷  NWò  NWð  Xdñ  Neô  Neð  ntð  2uñ  2uô  2uñ  vô  vð  vð  vð  vð  vð  vð  vð  vñ  vØ�v”Ð"5Ò5Ð5Ý—;’;˜vÔ/Ñ0Ô0°FÐ:Ð:¸v¼}Ð:Ø"ŸYšY zÑ2Ô2�HÝ&Ÿ]š]¨5¯9ª9°]Ñ+CÔ+CÑDÔD�Hð -°FÔ4GÐGÐGÈHÐV^ÒL^ÐL^Ø (ð M_Ø-6¸hÔ>NÐ-NÐ-NÐS[Ð_gÔ_oÐSoÐSoØ!)˜Ý×%Ò% e§i¢i°Ñ&>Ô&>ÀØ8>Ô8Lð &ñ Nô Nð Nøà�v” .Ò0Ð0Ý—’ØBØÔ$Ø—I’I˜h¨	Ñ2Ô2Ø—I’I˜h¨	Ñ2Ô2ñ	ô ð ð ð �v” +Ò-Ð-Ý—’Ð<¸fÔ>NÐPU×PYÒPYÐZbÑPcÔPcÑdÔdÐdÐdå—’Ð5°vÔ7GÈÈvÌÑWÔWÐWñ_/	Xøõ` ð ð ð ØˆÝð 4ð 4ð 4Ý×ÒÐ2Ñ3Ô3Ð3Ð3Ð3ð4øøøð ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"Iøð ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>ð Ð"Iøøøs¾   ¡A&t' Æ"GÇGÇ	GÈ;t' Í"N
Î
NÎNÏA"t' Õ"U9Õ9U=Ö U=×]t' ô'
uô1{( ô3#uõ{( õuõ{( ù("zúzúzû(DAA2ÿ5"A@#Á@AA2Á@#A@'Á@'AA2Á@*A@'Á@+AAA2)rF   r   )rF   rO   )r¡   rc   r¢   r|   rF   r£   )r¢   r|   rF   r£   )rF   r£   rH   )r*  r,  rF   r|   )rk  r   )r  r(   )r¶   rd   )rB  rd   r_   rŒ   )r˜  r*   )r  rd   )r¶   rd   rÞ   rd   )r¶   rd   rÞ   rd   r_   r)   )r¶   rd   rÞ   rd   r_   r+   rƒ   )rF   r   )rF   r   )rF   rÔ  )rÞ   rd   râ  rã  rF   r|   )rÞ   rd   râ  rã  rF   r£   )rê   r   rF   r£   )NNF)rê   r   r  rd   rF   r|   )re   rd   r  r™   rF   r|   )re   rd   rð   r”   rF   r|   )re   rd   r…  rž   rF   r|   )re   rd   r_   r$  )re   rd   r_   r'  )rh   r   rF   r£   )«Ú
__future__r   rˆ   ÚloggingrS   Ú
contextlibr   r   Údataclassesr   r   r   r	   Útypingr
   r   Úuuidr   Úfastapir   r   r   r   r   Úfastapi.responsesr   r   r   Úpydanticr   r   Údevice_gateway.authr   Ú device_gateway.collectors.systemr   Ú$device_gateway.collectors.host_stater   Údevice_gateway.protocolr   Údevice_gateway.integrations.pir   r   Údevice_gateway.stater   r   r   Údevice_gateway.voicer    r!   Údevice_gateway.speechr"   r#   r$   r%   r&   Údevice_gateway.control.settingsr'   Údevice_gateway.control.modelsr(   r)   r*   r+   Údevice_gateway.control.projectsr,   Údevice_gateway.control.pir-   Údevice_gateway.control.codexr.   Ú device_gateway.control.approvalsr/   Ú"device_gateway.control.pi_approvalr0   Ú!device_gateway.control.user_inputr1   Ú!device_gateway.control.operationsr2   Ú device_gateway.control.navigatorr3   r4   Ú	getLoggerrW   rT   rU   r#  Úfloatr(  r9   r‡   r  r°   rÎ  rÏ  rÐ  Ú__file__rË  rK  r  r@   rA   rc  r8  rN   ra   rc   rŒ   r”   r™   rž   r    rª   r­   rÏ   rÓ   Úspeech_preferencesrÜ   rà   rä   rë   ré   r!  r+  r%  rT  rY  r[  r]  r¼   rj  r~  ÚappÚexception_handlerr†  r´   r�  Úpostr“  r•  r›  rž  rŸ  r¥  r®  r±  r´  r¹  r  r
  rÂ  rÇ  rÌ  rÑ  rÓ  rÛ  rá  rë  rM  rò  rd  r&  r  rs  r  r  r  r"  r$  r'  r/  r3  rh   rh  rK   rL   rM   ú<module>r‹     sä  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø <Ð <Ð <Ð <Ð <Ð <Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø /Ð /Ð /Ð /Ð /Ð /Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð 
ˆÔ	Ð9Ñ	:Ô	:€Ø"�?¨B¬J¯NªNÐ;PÑ,QÔ,QÐRÑRÔRÐ Ø!˜E "¤*§.¢.Ð1LÈcÑ"RÔ"RÑSÔSÐ à €Ð  Ð  Ð  Ñ  Ø(Ð(Ø„J‡N‚NØ!Ø4ñô ñô Ð ð ˆ{Ø„J‡N‚NØØ5ñô ñô €ð ”'—,’,˜rœwŸš¨xÑ8Ô8¸(ÀLÑQÔQ€ØÐÑ!Ô!€Ø"�? 2¤:§>¢>Ð2IÐKyÑ#zÔ#zÑ{Ô{Ð ØÐÑÔ€	ØˆJ‰LŒL€Øˆ:�b”j—n’nÐ%>Ð?qÑrÔrÑsÔs€
Ø�)�)Ð,¨kÀYÐ[fÐgÑgÔgÐh€Ø„:‡>‚>Ð)¨3Ñ/Ô/°3Ò6Ð6Ø$˜Ð%5ÀÐWbÐcÑcÔc€HˆWÑð&ð &ð &ð &ð
Jð 
Jð 
Jð 
Jð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ð:6ð 6ð 6ð 6ð 6�yñ 6ô 6ð 6ð4ð 4ð 4ð 4ð 4�Yñ 4ô 4ð 4ð
`ð `ð `ð `ð `�iñ `ô `ð `ð$ð $ð $ð $ð $�yñ $ô $ð $ð  €Ð Ð Ð Ñ ðGð Gð Gð Gðfð fð fð 
ˆ�n�nÑ&Ô&Ð(IÐ(IÐKkÐKkØ�>Ð"GÐ"GÐW~ÐW~Ø;Ð;ÐJoÐJoð  @jð  @jð
kñ 
kô 
k€ð
Nð Nð Nð
 'Ð& r¤z§~¢~Ð6KÐMyÑ'zÔ'zÑ{Ô{Ð Øˆ=˜˜Ñ)Ô)¨=¨=©?¬?Ð<NØ%Ð% ~°~À~ñWô W€ð EGÐXZð _ð _ð _ð _ð _ð
ð ð ð.ð .ð .ð+]ð +]ð +]ð\eð eð eð eð$7ð 7ð 7ð 7ðð ð ð ð ð(6;ð 6;ð 6;ðr&ð &ð &ðeð eð eð+ð +ð +ð +ð +ñ +ô +ð +ð Ð
Ñ
Ô
€	ðMð Mð Mð ð!ð !ð !ñ Ôð!ðH €gÐ(°'ÀHÐMÑMÔM€ð ×Ò�|Ñ$Ô$ðPð Pð Pñ %Ô$ðPðð ð ð ð ‡‚Ð	ÑÔðWð Wñ ÔðWð ‡‚Ð
1Ñ2Ô2ðeð eð eñ 3Ô2ðeð ‡‚ˆÑÔð#ð #ñ Ôð#ð ‡‚ˆ/ s€Ñ+Ô+ð)ð )ð )ñ ,Ô+ð)ð ‡‚Ð(°c€Ñ:Ô:ð(ð (ð (ñ ;Ô:ð(ð ‡‚ˆÑÔðgð gñ Ôðgð ‡‚Ð	.Ñ/Ô/ð	4ð 	4ð 	4ñ 0Ô/ð	4ð ‡‚Ð	4Ñ5Ô5ð<ð <ð <ñ 6Ô5ð<ð ‡‚Ð
<Ñ=Ô=ð\ð \ð \ñ >Ô=ð\ð
 ‡‚Ð
;È€ÑMÔMðGð Gð Gñ NÔMðGð ‡‚Ð	=Ñ>Ô>ð=ð =ð =ñ ?Ô>ð=ð ‡‚Ð
>Ñ?Ô?ðGð Gð Gñ @Ô?ðGð ‡‚ˆÑÔðsð sð sñ Ôðsð ‡‚ˆ €Ñ&Ô&ð7ð 7ð 7ñ 'Ô&ð7ð ‡‚ˆ U€Ñ+Ô+ðAð Að Añ ,Ô+ðAð ‡‚ˆ¨E€Ñ2Ô2ðrð rð rñ 3Ô2ðrð ‡‚ˆÑÔð!ð !ð !ñ Ôð!ð
 ‡‚ˆÑÔðð ð ñ Ôðð ‡‚ˆÑÔðð ð ñ Ôðð  GKðð ð ð ð ð< GKð)ð )ð )ð )ð )ð*)ð )ð )ð )ð@Yð Yð Yð4;ð ;ð ;ð ;ð6 Ð ð
9ð 
9ð 
9ð ‡‚Ð
#°u€Ñ=Ô=ð "( °Ð!3Ñ!3Ô!3ð;ð ;ð ;ð ;ñ >Ô=ð;ð( ‡‚Ð
'Ñ(Ô(ð"Nð "Nð "Nñ )Ô(ð"NðJ ‡‚Ð
(Ñ)Ô)ðFð Fð Fñ *Ô)ðFð$ ‡‚Ð
2Ñ3Ô3ðHð Hð Hñ 4Ô3ðHð Að Að Að Að A�iñ Aô Að Að
'ð 'ð 'ð 'ð '�ñ 'ô 'ð 'ð
 ‡‚Ð
+Ñ,Ô,ð	Jð 	Jð 	Jñ -Ô,ð	Jð ‡‚Ð
0Ñ1Ô1ðð ð ñ 2Ô1ðð ‡‚ˆ|ÑÔðy?ð y?ð y?ñ Ôðy?ð y?ð y?rL   