§
     ’ÞjKa  ã                   ó  — d Z ddlZddlZddlZddlZddl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 ddlmZ ddlmZmZmZmZ dd	lmZmZ d
Zddddgd„  edd¦  «        D ¦   «         ¢d‘Zd„ Zd„ Zd„ Zd„ Z  G d„ d¦  «        Z!d„ Z"d„ Z#dS )zIPersistent galleries with shared references or independently owned media.é    N)ÚCounter)ÚPath)Úread_configÚwrite_config)ÚGALLERY_SOURCESÚSOURCES)ÚMediaSettings)ÚMODESÚbundle_filesÚcopy_bundleÚ
owned_path)Úavailable_pathÚ	safe_nameÚworkspace_archive_after_days)ÚDisabledr   )z1 weeké   )z2 weeksé   )z3 weeksé   c                 ó8   — g | ]}|› d �|dk    rdndz   |dz  f‘ŒS )z monthé   ÚsÚ é   © )Ú.0Úmonthss     ú?C:\Users\johnn\OneDrive\Documents\AI\shared\utils\workspaces.pyú
<listcomp>r      s;   € Ð`Ð`Ð`Èˆ&ÐÐÐ 6¨A¢: :˜C˜C°2Ñ6¸À¹ÐDÐ`Ð`Ð`ó    r   é   )z1 yearim  c                 óf  — ddl m}  |¦   «         }t          | ¦  «        } t          ¦   «         }| | dz  fD ]û}|                     d¦  «        D ]ã}|                     ¦   «         sŒt          |¦  «        }|                     dd¦  «        dk    rt          |||¦  «         d|v rŽt          |d         ¦  «        }| 	                    ¦   «         r|n| |z  }|j
                             ¦   «         D ]D\  }\  }	}
|                     ¦   «                              |	¦  «        r|                     |¦  «         ŒEŒäŒü|S )zUConvert active and archived gallery references without reading media or chat history.r   ©ÚSessionReferencesÚarchivesú*.jsonÚstorage_modeÚsharedÚfolder)Úshared.deepy.session_storer#   r   ÚsetÚglobÚis_filer   ÚgetÚ_convert_referencesÚis_absoluteÚrecordsÚitemsÚresolveÚis_relative_toÚadd)Úrootr#   Ú
referencesÚblockedÚparentÚpathÚrecordr(   ÚidentityÚ	directoryÚ	_manifests              r   Úmigrate_session_referencesr>      sX  € à<Ð<Ð<Ð<Ð<Ð<Ø"Ð"Ñ$Ô$€JÝ�‰:Œ:€DÝ‰eŒe€GØ˜ 
Ñ*Ð+ð .ð .ˆØ—K’K Ñ)Ô)ð 	.ð 	.ˆDØ—<’<‘>”>ð ØÝ  Ñ&Ô&ˆFØ�zŠz˜.¨(Ñ3Ô3°xÒ?Ð?Ý# D¨&°*Ñ=Ô=Ð=Ø˜6Ð!Ð!Ý˜f XÔ.Ñ/Ô/�Ø#)×#5Ò#5Ñ#7Ô#7ÐJ˜˜¸TÀF¹]�Ø8BÔ8J×8PÒ8PÑ8RÔ8Rð .ð .Ñ4�HÑ4˜y¨)Ø—~’~Ñ'Ô'×6Ò6°yÑAÔAð .ØŸš HÑ-Ô-Ð-øøð	.ð €Nr   c                 óÞ   — t                                ||j        ¦  «        }||k    rF|                      ¦   «         }t	          || ¦  «         t          j        | |j        |j        f¬¦  «         |S )N)Úns)	ÚWorkspaceStoreÚ
_map_pathsÚencodeÚstatr   ÚosÚutimeÚst_atime_nsÚst_mtime_ns)r9   r:   r6   Ú	convertedrD   s        r   r.   r.   /   sh   € Ý×)Ò)¨&°*Ô2CÑDÔD€IØ�FÒÐØ�yŠy‰{Œ{ˆÝ�Y Ñ%Ô%Ð%Ý
Œ�˜4Ô+¨TÔ-=Ð>Ð?Ñ?Ô?Ð?ØÐr   c                 ój   — t          | t          ¦  «        ot          j                             | ¦  «        S ©N)Ú
isinstanceÚstrrE   r9   Úisfile©r9   s    r   Úmedia_availablerP   8   s%   € Ý�d�CÑ Ô Ð9¥R¤W§^¢^°DÑ%9Ô%9Ð9r   c                 óP   — t          | t          ¦  «        r| d         | d         fn| S )NÚdeepy_session_idr9   ©rL   ÚdictrO   s    r   Ú
_media_keyrU   <   s,   € Ý7AÀ$ÍÑ7MÔ7MÐWˆDÐ#Ô$ d¨6¤lÐ3Ð3ÐSWÐWr   c                   óì   — e Zd Zd d„Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	ed„ ¦   «         Z
d	d
œd„Zd!d„Zd„ Zd„ Zd„ Zd	d	d	d	dœd„Zd„ Zd„ Zd	dœd„Zd	dœd„Zddœd„Zd	dœd„Zd	dœd„Zd„ Zd„ Zd„ Zd	S )"rA   r'   c                 óÌ  ‡
— |t           vrt          d¦  «        ‚|| _        t          |¦  «                             ¦   «         | _        | j                             dd¬¦  «         t          j        ¦   «         | _	        i | _
        i | _        i | _        ddlm}  |¦   «         x}| _        t!          | j                             d¦  «        ¦  «        D �]�}|                     ¦   «         sŒt'          |¦  «        }t)          |t*          ¦  «        r€t)          |                     d¦  «        t.          ¦  «        rX|d         rPt)          |                     d¦  «        t.          ¦  «        r(t)          |                     d	¦  «        t*          ¦  «        st          d
|j        › �¦  «        ‚|d         | j
        v rt          d|j        › �¦  «        ‚|                     d|                     ¦   «         j        ¦  «         |                     dd¦  «         |                     dd¦  «        t           vrt          d|j        › �¦  «        ‚|                     d¦  «        dk    r/|                      |¦  «        Š
|                      |ˆ
fd„¦  «        }nt=          |||¦  «        }|}t)          |d         t>          t@          f¦  «        rt)          |d         tB          ¦  «        st          d|j        › �¦  «        ‚|| j
        |d         <   || j        |d         <   |                     d¦  «        }|�Gt)          |t.          ¦  «        r|r	|| j        v rt          d|j        › �¦  «        ‚|d         | j        |<   �ŒŸ| j
         "                    ¦   «         D ].\  }	}|  #                    | j        |	         |¦  «        | j        |	<   Œ/t!          | j        dz                       d¦  «        ¦  «        D ]f}|                     ¦   «         rPt'          |¦  «        }|                     dd¦  «        dk    rt=          |||¦  «        }|  #                    ||¦  «         Œg| j
        s|  $                    d¦  «         d S d S )Nú-Choose shared or dedicated workspace storage.T©ÚparentsÚexist_okr   r"   r%   ÚidÚnameÚgalleryzInvalid workspace: zDuplicate workspace ID: Úlast_activityÚarchive_protectedFr&   r'   zInvalid workspace storage: Ú	dedicatedc                 ó>   •— t          t          ‰| ¦  «        ¦  «        S rK   )rM   r   ©Úvaluer<   s    €r   ú<lambda>z)WorkspaceStore.__init__.<locals>.<lambda>]   s   ø€ ½sÅ:ÈiÐY^ÑC_ÔC_Ñ?`Ô?`€ r   z*Invalid workspace activity or protection: rR   z#Invalid Deepy workspace ownership: r$   ÚDefault)%r
   Ú
ValueErrorÚdefault_moder   r2   r5   ÚmkdirÚ	threadingÚRLockÚlockr0   Ú_pathsÚsession_workspacesr)   r#   Ú_referencesÚsortedr+   r,   r   rL   rT   r-   rM   r]   Ú
setdefaultrD   Úst_mtimeÚ
_directoryrB   r.   ÚintÚfloatÚboolr1   Ú_rename_manifestÚcreate)Úselfr5   rh   r#   r6   r9   r:   rI   Úownerr;   r<   s             @r   Ú__init__zWorkspaceStore.__init__A   s¤  ø€ Ø�uÐ$Ð$ÝÐLÑMÔMÐMØ(ˆÔÝ˜‘J”J×&Ò&Ñ(Ô(ˆŒ	ØŒ	�Š ¨tˆÑ4Ô4Ð4Ý”OÑ%Ô%ˆŒ	ØˆŒØˆŒØ"$ˆÔØ@Ð@Ð@Ð@Ð@Ð@Ø(9Ð(9Ñ(;Ô(;Ð;ˆ
�TÔ%Ý˜4œ9Ÿ>š>¨(Ñ3Ô3Ñ4Ô4ð 	>ñ 	>ˆDØ—<’<‘>”>ð ØÝ  Ñ&Ô&ˆFÝ˜f¥dÑ+Ô+ð Dµ:¸f¿jºjÈÑ>NÔ>NÕPSÑ3TÔ3Tð DÐ\bÐcgÔ\hð DÕpzð  |B÷  |Fò  |Fð  GMñ  |Nô  |Nõ  PSñ  qTô  qTð Dõ  \fð  gm÷  gqò  gqð  r{ñ  g|ô  g|õ  ~Bñ  \Cô  \Cð DÝ Ð!B°t´yÐ!BÐ!BÑCÔCÐCØ�dŒ|˜tœ|Ð+Ð+Ý Ð!G¸D¼IÐ!GÐ!GÑHÔHÐHð ×Ò˜o¨t¯yªy©{¬{Ô/CÑDÔDÐDØ×ÒÐ1°5Ñ9Ô9Ð9Ø�zŠz˜.¨(Ñ3Ô3½5Ð@Ð@Ý Ð!J¸t¼yÐ!JÐ!JÑKÔKÐKØ�zŠz˜.Ñ)Ô)¨[Ò8Ð8Ø ŸOšO¨FÑ3Ô3�	ØŸš¨Ð1`Ð1`Ð1`Ð1`ÑaÔa��å/°°f¸jÑIÔI�	Ø"�Ý˜f _Ô5½½U°|ÑDÔDð [ÍJÐW]Ð^qÔWrÕtxÑLyÔLyð [Ý Ð!YÈdÌiÐ!YÐ!YÑZÔZÐZØ)/ˆDŒL˜ œÑ&Ø(,ˆDŒK˜˜tœÑ%Ø—J’JÐ1Ñ2Ô2ˆEØÐ Ý! %­Ñ-Ô-ð X°Uð X¸eÀtÔG^Ð>^Ð>^Ý$Ð%VÈ4Ì9Ð%VÐ%VÑWÔWÐWØ17¸´�Ô'¨Ñ.ùØ $¤× 2Ò 2Ñ 4Ô 4ð 	Yð 	YÑˆH�fØ$(×$9Ò$9¸$¼+ÀhÔ:OÐQWÑ$XÔ$XˆDŒK˜Ñ!Ð!Ý˜DœI¨
Ñ2×8Ò8¸ÑBÔBÑCÔCð 	4ð 	4ˆDØ�|Š|‰~Œ~ð 4Ý$ TÑ*Ô*�Ø—:’:˜n¨hÑ7Ô7¸8ÒCÐCÝ0°°v¸zÑJÔJ�FØ×%Ò% d¨FÑ3Ô3Ð3øØŒ|ð 	#Ø�KŠK˜	Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r   c                 ó€  — t          |d         ¦  «        }| j                             |dz   ¦  «                             d¦  «        }| j        |k    s8| j        |› d|› d�k    r)|                     ¦   «         rt          |¦  «        dk    r| S t          | j        |d         d| ¬¦  «        }|                      |¦  «         |S )Nr]   z (ú)é   ú.json)ÚsuffixÚexclude)	r   ÚstemÚremoveprefixÚremovesuffixÚ	isdecimalrt   r   r8   Úrename)r9   r:   r‚   ÚnumberÚdestinations        r   rw   zWorkspaceStore._rename_manifestu   sÆ   € õ ˜ œÑ(Ô(ˆØ”×'Ò'¨¨t©Ñ4Ô4×AÒAÀ#ÑFÔFˆØŒ9˜ÒÐ ¤°Ð.BÐ.B¸Ð.BÐ.BÐ.BÒ!BÐ!BÀv×GWÒGWÑGYÔGYÐ!BÕ^aÐbhÑ^iÔ^iÐmnÒ^nÐ^nØˆKÝ$ T¤[°&¸´.ÈÐZ^Ð_Ñ_Ô_ˆØ�Š�KÑ Ô Ð ØÐr   c                 ó²  — g | j                              ¦   «         ¢d„ | j        dz                       d¦  «        D ¦   «         ¢}ddg}|D ]m}d|v rg|                      |¦  «        }|                     | j        ¦  «        r8|                     |                     | j        ¦  «        j        d         ¦  «         Œnt          | j        |d         |¬¦  «        j
        S )	Nc              3   ó\   K  — | ]'}|                      ¦   «         ¯t          |¦  «        V — Œ(d S rK   ©r,   r   ©r   r9   s     r   ú	<genexpr>z-WorkspaceStore._new_folder.<locals>.<genexpr>�   sg   è è € ð  ,Eð  ,EÀ$Ðuy÷  vBò  vBñ  vDô  vDð  ,E­K¸Ñ,=Ô,=ð  ,Eð  ,Eð  ,Eð  ,Eð  ,Eð  ,Er   r$   r%   ú.agentsr(   r   r]   )Úreserved)r0   Úvaluesr5   r+   rs   r3   ÚappendÚrelative_toÚpartsr   r]   )ry   r:   Úothersr�   Úotherr<   s         r   Ú_new_folderzWorkspaceStore._new_folder€   sö   € ð F�4”<×&Ò&Ñ(Ô(ð  Fð  ,Eð  ,EÈ4Ì9ÐWaÑKa×JgÒJgÐhpÑJqÔJqð  ,Eñ  ,Eô  ,Eð  FˆØ 	Ð*ˆØð 	Oð 	OˆEØ˜5Ð Ð Ø ŸOšO¨EÑ2Ô2�	Ø×+Ò+¨D¬IÑ6Ô6ð OØ—O’O I×$9Ò$9¸$¼)Ñ$DÔ$DÔ$JÈ1Ô$MÑNÔNÐNøÝ˜dœi¨°¬À(ÐKÑKÔKÔPÐPr   c                 ó®   — | j         5  t          | j                             ¦   «         d„ ¬¦  «        }d„ |D ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )Nc                 óH   — | d          | d                               ¦   «         fS )Nr_   r]   )Úcasefold)r:   s    r   re   z(WorkspaceStore.catalog.<locals>.<lambda>Œ   s'   € ÈÐP_ÔI`ÐH`ÐbhÐioÔbp×byÒbyÑb{Ôb{ÐG|€ r   )Úkeyc                 ó,   ‡— g | ]Šˆfd „dD ¦   «         ‘ŒS )c                 ó*   •— i | ]}|‰v ¯|‰|         “ŒS r   r   )r   rš   r:   s     €r   ú
<dictcomp>z5WorkspaceStore.catalog.<locals>.<listcomp>.<dictcomp>�   sL   ø€ ð  Fð  Fð  F¨#Ðwzð  Eð  xEð  xE�S˜& œ+ð  xEð  xEð  xEr   )r\   r]   rR   Úmcp_agent_idr&   r   )r   r:   s    @r   r   z*WorkspaceStore.catalog.<locals>.<listcomp>�   s[   ø€ ð  ]ð  ]ð  ]ð  KQð  Fð  Fð  Fð  FÐ1sð  Fñ  Fô  Fð  ]ð  ]ð  ]r   )rl   rp   r0   r�   )ry   r0   s     r   ÚcatalogzWorkspaceStore.catalogŠ   sË   € ØŒYð 	]ð 	]Ý˜Tœ\×0Ò0Ñ2Ô2Ð8|Ð8|Ð}Ñ}Ô}ˆGð ]ð  ]ð  U\ð  ]ñ  ]ô  ]ð	]ð 	]ð 	]ð 	]ñ 	]ô 	]ð 	]ð 	]ð 	]ð 	]ð 	]ð 	]øøøð 	]ð 	]ð 	]ð 	]ð 	]ð 	]s   ˆ5A
Á
AÁAc                 ó¼  ‡ ‡‡— |d         Št          ‰t          ¦  «        r‰st          d¦  «        ‚t          ‰¦  «        }|                     ¦   «         sWt          |j        ¦  «        dk    s&‰dv s"|j        st          ˆfd„dD ¦   «         ¦  «        rt          d¦  «        ‚‰ j	        ‰z  }| 
                    ¦   «         Š‰t          t          j                             |¦  «        ¦  «        k    rt          d¦  «        ‚‰t          ‰j        ¦  «        k    s6‰ j	                             ‰¦  «        st          ˆˆ fd„d	D ¦   «         ¦  «        rt          d
¦  «        ‚‰S )Nr(   zInvalid workspace folder.r   )ú.z..c              3   ó    •K  — | ]}|‰v V — Œ	d S rK   r   )r   Úcharr(   s     €r   r�   z,WorkspaceStore._directory.<locals>.<genexpr>•   s+   øè è € ÐQtÐQtÐeiÐRVÐZ`ÐR`ÐQtÐQtÐQtÐQtÐQtÐQtr   z/\:z?A workspace media folder cannot be a symbolic link or junction.c              3   óR   •K  — | ]!}‰                      ‰j        |z  ¦  «        V — Œ"d S rK   )r3   r5   )r   r]   r<   ry   s     €€r   r�   z,WorkspaceStore._directory.<locals>.<genexpr>›   sq   øè è € ð  ]mð  ]mð  MQÐ]f×]uÒ]uÐvzÔvð  CGñ  wGñ  ^Hô  ^Hð  ]mð  ]mð  ]mð  ]mð  ]mð  ]mr   )r$   rŽ   zIChoose a media folder outside the workspace metadata and archive folders.)rL   rM   rg   r   r/   Úlenr“   ÚdriveÚanyr5   r2   rE   r9   ÚabspathÚanchorr3   )ry   r:   r9   r<   r(   s   `  @@r   rs   zWorkspaceStore._directory�   sˆ  øøø€ Ø˜Ô!ˆÝ˜&¥#Ñ&Ô&ð 	:¨fð 	:ÝÐ8Ñ9Ô9Ð9Ý�F‰|Œ|ˆØ×ÒÑ!Ô!ð 	&Ý�4”:‰Œ !Ò#Ð# v°Ð'<Ð'<ÀÄ
Ð'<ÍcÐQtÐQtÐQtÐQtÐmsÐQtÑQtÔQtÑNtÔNtÐ'<Ý Ð!<Ñ=Ô=Ð=Ø”9˜vÑ%ˆDØ—L’L‘N”Nˆ	Ø��RœWŸ_š_¨TÑ2Ô2Ñ3Ô3Ò3Ð3ÝÐ^Ñ_Ô_Ð_Ø�˜YÔ-Ñ.Ô.Ò.Ð.°$´)×2JÒ2JÈ9Ñ2UÔ2UÐ.ÕY\ð  ]mð  ]mð  ]mð  ]mð  ]mð  Ulð  ]mñ  ]mô  ]mñ  Zmô  ZmÐ.ÝÐhÑiÔiÐiØÐr   c                 óŽ   — |                       |¦  «        }|                      dd¦  «        dk    r|                      |¦  «        nd S )Nr&   r'   ra   )r-   rs   )ry   Úworkspace_idr:   s      r   Ú	media_dirzWorkspaceStore.media_dirŸ   sD   € Ø—’˜,Ñ'Ô'ˆØ*0¯*ª*°^ÀXÑ*NÔ*NÐR]Ò*]Ð*]ˆt�Š˜vÑ&Ô&Ð&ÐcgÐgr   c                 óÊ   ‡— i | ¥dt          | d         ¦  «        i¥}t          D ]>}|j        |d         v r-ˆfd„|d         |j                 D ¦   «         |d         |j        <   Œ?|S )Nr^   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   )r   r9   Ú	transforms     €r   r   z-WorkspaceStore._map_paths.<locals>.<listcomp>¨   s!   ø€ Ð6wÐ6wÐ6wÈ4°y°yÀ±´Ð6wÐ6wÐ6wr   )rT   r   Ú	files_key)r:   r¯   ÚresultÚsources    `  r   rB   zWorkspaceStore._map_paths£   s„   ø€ à?�FÐ?˜I¥t¨F°9Ô,=Ñ'>Ô'>Ð?Ð?ˆÝ%ð 	xð 	xˆFØÔ 6¨)Ô#4Ð4Ð4Ø6wÐ6wÐ6wÐ6wÐSYÐZcÔSdÐekÔeuÔSvÐ6wÑ6wÔ6w��yÔ! &Ô"2Ñ3øØˆr   N©Úcreatedc                ó¸  — |                       |¦  «        }|€d„ |D ¦   «         S | j        5  g g }}	 |D ]?}t          ||¦  «        \  }}	|                     |	¦  «         |                     |¦  «         Œ@|�|                     |¦  «         |cd d d ¦  «         S # t
          $ r* t          |¦  «        D ]}|                     d¬¦  «         Œ‚ w xY w# 1 swxY w Y   d S )Nc                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r   ©rE   r9   r¨   rŒ   s     r   r   z(WorkspaceStore.adopt.<locals>.<listcomp>®   s&   € Ð<Ð<Ð<¨d•B”G—O’O DÑ)Ô)Ð<Ð<Ð<r   T©Ú
missing_ok)r¬   rl   r   Úextendr‘   ÚBaseExceptionÚreversedÚunlink)
ry   r«   Úpathsr´   r<   Úcopiedr±   r9   rˆ   Úfiless
             r   ÚadoptzWorkspaceStore.adopt«   sZ  € Ø—N’N <Ñ0Ô0ˆ	ØÐØ<Ð<°eÐ<Ñ<Ô<Ð<ØŒYð 	ð 	Ø �FˆFðØ!ð /ð /�DÝ)4°T¸9Ñ)EÔ)EÑ&�K Ø—M’M %Ñ(Ô(Ð(Ø—M’M +Ñ.Ô.Ð.Ð.ØÐ&Ø—N’N 6Ñ*Ô*Ð*Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	øõ !ð ð ð Ý$ VÑ,Ô,ð 1ð 1�DØ—K’K¨4�KÑ0Ô0Ð0Ð0Øðøøøð	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s#   «C±ABÂ4CÃCÃCÃCc                 ót  ‡‡— t          ‰t          ¦  «        r9‰                     ¦   «         r%t          ‰                     ¦   «         ¦  «        dk    rt	          d¦  «        ‚‰                     ¦   «         Š|sBt          ˆˆfd„| j                             ¦   «         D ¦   «         ¦  «        rt	          d¦  «        ‚‰S )Néx   z4Enter a workspace name between 1 and 120 characters.c              3   óæ   •K  — | ]k}|d          ‰k    oZ|                      d¦  «        p|                      d¦  «         o/|d                              ¦   «         ‰                     ¦   «         k    V — ŒldS )r\   rR   rž   r]   N)r-   r™   )r   r:   Ú	excludingr]   s     €€r   r�   z'WorkspaceStore._name.<locals>.<genexpr>Â   s×   øè è € ð  Tð  Tð  tz˜V Dœ\¨YÒ6ð  oÀÇ
Â
ÐK]Ñ@^Ô@^Ð@|Ðbh×blÒblÐm{Ñb|Ôb|Ð;}ð  oð  CIð  JPô  CQ÷  CZò  CZñ  C\ô  C\ð  `d÷  `mò  `mñ  `oô  `oò  Coð  Tð  Tð  Tð  Tð  Tð  Tr   z*A workspace with this name already exists.)rL   rM   Ústripr¥   rg   r§   r0   r�   )ry   r]   rÅ   rz   s    `` r   Ú_namezWorkspaceStore._name¾   sé   øø€ Ý˜$¥Ñ$Ô$ð 	U¨D¯JªJ©L¬Lð 	U½CÀÇ
Â
ÁÄÑ<MÔ<MÐPSÒ<SÐ<SÝÐSÑTÔTÐTØ�zŠz‰|Œ|ˆØð 	K�ð  Tð  Tð  Tð  Tð  Tð  ~Bô  ~J÷  ~Qò  ~Qñ  ~Sô  ~Sð  Tñ  Tô  Tñ  Tô  Tð 	KÝÐIÑJÔJÐJØˆr   c                 ó  ‡— t          |t          ¦  «        r	|| j        vrt          d¦  «        ‚| j        |         Št	          ˆfd„t
          D ¦   «         ¦  «        r)ddlm} |                      ‰ |¦   «         j	        ¦  «        Š‰S )Nz This workspace no longer exists.c              3   óŠ   •K  — | ]=}‰d                                |j        g ¦  «        D ]}t          |t          ¦  «        V — ŒŒ>dS ©r^   N)r-   r°   rL   rT   ©r   r²   r9   r:   s      €r   r�   z%WorkspaceStore.get.<locals>.<genexpr>Ê   sV   øè è € Ð|Ð|¨&ÐPVÐW`ÔPa×PeÒPeÐflÔfvÐxzÑP{ÔP{Ð|Ð|È�z˜$¥Ñ%Ô%Ð|Ð|Ð|Ð|Ð|Ð|Ð|r   r   r"   )
rL   rM   r0   rg   r§   r   r)   r#   rB   r9   )ry   r«   r#   r:   s      @r   r-   zWorkspaceStore.getÆ   sš   ø€ Ý˜,­Ñ,Ô,ð 	A°ÀDÄLÐ0PÐ0PÝÐ?Ñ@Ô@Ð@Ø”˜lÔ+ˆÝÐ|Ð|Ð|Ð|µOÐ|Ñ|Ô|Ñ|Ô|ð 	GØDÐDÐDÐDÐDÐDØ—_’_ VÐ->Ð->Ñ-@Ô-@Ô-EÑFÔFˆFØˆr   c                 ó0  ‡— |}|                      d¦  «        dk    r/|                      |¦  «        Š|                      |ˆfd„¦  «        }nLddlm}  |¦   «         }i | j        j        ¥|j        ¥|_        || _        |                      ||j        ¦  «        }| j                              |d         ¦  «        }|pt          | j
        |d         d¬	¦  «        }|�9| j        |d                  d         |d         k    r|                      ||¦  «        }	 t          ||¦  «         n6# t          $ r) |�%|j        |j        k    r|                     |¦  «         ‚ w xY w|| j        |d         <   |                      dd
¦  «        d
k    r|n|| j        |d         <   d S )Nr&   ra   c                 ó�   •— t          | ¦  «                             ¦   «                              ‰¦  «                             ¦   «         S rK   )r   r2   r’   Úas_posixrc   s    €r   re   z'WorkspaceStore._write.<locals>.<lambda>Ó   s4   ø€ ½$¸u¹+¼+×:MÒ:MÑ:OÔ:O×:[Ò:[Ð\eÑ:fÔ:f×:oÒ:oÑ:qÔ:q€ r   r   r"   r\   r]   r   ©r€   r'   )r-   rs   rB   r)   r#   ro   ÚrootsrC   rm   r   r5   r0   rw   r   r»   r]   r†   )ry   r:   Úsavedr#   r6   Úpreviousr9   r<   s          @r   Ú_writezWorkspaceStore._writeÏ   sº  ø€ ØˆØ�:Š:�nÑ%Ô%¨Ò4Ð4ØŸš¨Ñ/Ô/ˆIØ—O’O FÐ,qÐ,qÐ,qÐ,qÑrÔrˆEˆEàDÐDÐDÐDÐDÐDØ*Ð*Ñ,Ô,ˆJàM $Ô"2Ô"8ÐM¸JÔ<LÐMˆJÔØ)ˆDÔØ—O’O F¨JÔ,=Ñ>Ô>ˆEØ”;—?’? 6¨$¤<Ñ0Ô0ˆØÐT�>¨$¬)°V¸F´^ÈGÐTÑTÔTˆØÐ D¤L°¸´Ô$>¸vÔ$FÈ&ÐQWÌ.Ò$XÐ$XØ×(Ò(¨°6Ñ:Ô:ˆDð	Ý˜ Ñ%Ô%Ð%Ð%øÝð 	ð 	ð 	ØÐ#¨¬	°X´]Ò(BÐ(BØ—’˜HÑ%Ô%Ð%Øð	øøøð %)ˆŒ�F˜4”LÑ!Ø.4¯jªj¸ÈÑ.RÔ.RÐV^Ò.^Ð.^ U UÐdjˆŒ�V˜D”\Ñ"Ð"Ð"s   ÄD$ Ä$3Ec                 óª   — | j         5  | j                             |¦  «        }|r|                      |¦  «        nd cd d d ¦  «         S # 1 swxY w Y   d S rK   )rl   rn   r-   )ry   Ú
session_idr«   s      r   Úfor_sessionzWorkspaceStore.for_sessionè   s±   € ØŒYð 	Dð 	DØÔ2×6Ò6°zÑBÔBˆLØ-9ÐC�4—8’8˜LÑ)Ô)Ð)¸tð	Dð 	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð 	Dð 	Ds   ˆ3AÁAÁA)rR   rž   r&   r(   c                ó¢  — | j         5  |r|| j        v rt          d¦  «        ‚|�dn|p| j        }|t          vrt          d¦  «        ‚t          j        ¦   «         j        |                      ||p|¬¦  «        i t          j	        ¦   «         ddœ}|dk    rg| 
                    ||€|                      |¦  «        nt          |¦  «        ¬¦  «         |                      |¦  «                             d	|du¬
¦  «         |r||d<   |r||d<   |                      |¦  «         |r|d         | j        |<   |d         cddd¦  «         S # 1 swxY w Y   dS )zwA given absolute folder (a plugin's Deepy session folder) makes the workspace dedicated and may already hold its media.z5This Deepy session already has a dedicated workspace.Nra   rX   )rz   F)r\   r]   r^   r_   r`   )r&   r(   TrY   rž   rR   r\   )rl   rn   rg   rh   r
   ÚuuidÚuuid4ÚhexrÇ   ÚtimeÚupdater–   rM   rs   ri   rÓ   )ry   r]   rR   rž   r&   r(   Úmoder:   s           r   rx   zWorkspaceStore.createí   så  € àŒYð 	 ð 	 Øð ZÐ$4¸Ô8OÐ$OÐ$OÝ Ð!XÑYÔYÐYØ"(Ð"4�;�;¸,Ð:[È$ÔJ[ˆDØ�5Ð Ð Ý Ð!PÑQÔQÐQÝ œJ™LœLÔ,°d·j²jÀÐM]ÐMmÐam°jÑ6nÔ6nÐ{}õ  QUô  QZñ  Q\ô  Q\ð  sxð  yð  yˆFØ�{Ò"Ð"Ø—’¨4ÐTZÐTb¸×8HÒ8HÈÑ8PÔ8PÐ8PÕhkÐlrÑhsÔhs�ÑtÔtÐtØ—’ Ñ'Ô'×-Ò-°dÀVÐSWÐEWÐ-ÑXÔXÐXØð 6Ø)5��~Ñ&Øð >Ø-=�Ð)Ñ*Ø�KŠK˜ÑÔÐØð IØ<BÀ4¼L�Ô'Ð(8Ñ9Ø˜$”<ð#	 ð 	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ˆD/EÅEÅEc                 ó´   — | j         5  |                      |¦  «         || j        v rt          d¦  «        ‚|| j        |<   ddd¦  «         dS # 1 swxY w Y   dS )zYAssign a workspace to a Deepy session for a plugin job without recording it as its owner.z+This Deepy session already has a workspace.N)rl   r-   rn   rg   )ry   r«   rR   s      r   ÚleasezWorkspaceStore.lease  s¿   € àŒYð 	Eð 	EØ�HŠH�\Ñ"Ô"Ð"Ø 4Ô#:Ð:Ð:Ý Ð!NÑOÔOÐOØ8DˆDÔ#Ð$4Ñ5ð		Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Es   ˆ8AÁAÁAc                 óV   — | j         5  | j        |= d d d ¦  «         d S # 1 swxY w Y   d S rK   )rl   rn   )ry   rR   s     r   Ú	end_leasezWorkspaceStore.end_lease
  sz   € ØŒYð 	:ð 	:ØÔ'Ð(8Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ˆ	ž"¥")rR   c                ó€  — | j         5  |                      |¦  «        }|                     d¦  «        r|d         |k    rt          d¦  «        ‚|                      i |¥d|                      |||                     d¦  «        p|                     d¦  «        ¦  «        i¥¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrR   z0Rename this workspace through its Deepy session.r]   rž   )rl   r-   rg   rÓ   rÇ   )ry   r«   r]   rR   r:   s        r   r†   zWorkspaceStore.rename  sH  € ØŒYð 	Jð 	JØ—X’X˜lÑ+Ô+ˆFØ�zŠzÐ,Ñ-Ô-ð U°&Ð9KÔ2LÐP`Ò2`Ð2`Ý Ð!SÑTÔTÐTØ�KŠKð  I˜6ð  I 6¨4¯:ª:°d¸LÈ&Ï*Ê*ÐUgÑJhÔJhð  KGÐlr×lvÒlvð  xFñ  mGô  mGñ  ,Hô  ,Hð  Ið  Iñ  Jô  Jð  Jð		Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jð 	Jð 	Js   ˆBB3Â3B7Â:B7c                ór  — | j         5  |                      |¦  «        }|                     d¦  «        }|r||k    rt          d¦  «        ‚| j        |                              ¦   «          | j        |= | j        |= |r| j        |= | j        s|                      d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrR   z0Delete this workspace through its Deepy session.rf   )rl   r-   rg   rm   r½   r0   rn   rx   )ry   r«   rR   r:   rz   s        r   ÚdeletezWorkspaceStore.delete  s  € ØŒYð 	'ð 	'Ø—X’X˜lÑ+Ô+ˆFØ—J’JÐ1Ñ2Ô2ˆEØð U˜Ð"2Ò2Ð2Ý Ð!SÑTÔTÐTØŒK˜Ô%×,Ò,Ñ.Ô.Ð.Ø”˜LÐ)Ø”˜\Ð*Øð 3ØÔ+¨EÐ2Ø”<ð 'Ø—’˜IÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   ˆBB,Â,B0Â3B0T)Úretain_missingc          	      ób  ‡ ‡‡‡‡— ‰ j         5  ‰                      ‰¦  «        Šg Š	 t          j        ‰¦  «        Š|�r`t          D �]W}|j        ‰vr|j        ‰d         vrŒ‰                     |j        g ¦  «        }‰                     |j        d¦  «        }t          t          t          |¦  «        ¦  «        t          ¦   «         }}t          ‰d                              |j        g ¦  «        ¦  «        D ]“\  }	}
t          |
¦  «        }||xx         dz  cc<   t          |
¦  «        s`||         ||         k     rNt          |	t          |¦  «        ¦  «        }|                     ||
¦  «         ||xx         dz  cc<   ||k    r|dz  }Œ”|j        ‰v r
|‰|j        <   �ŒY‰                     d¦  «        dk    r6t          D ].}|j        ‰v r#ˆˆ ˆfd„‰|j                 D ¦   «         ‰|j        <   Œ/‰d         ‰k    rft!          ˆˆfd„t          D ¦   «         ¦  «        }‰                      i ‰¥‰|rt%          j        ¦   «         n‰d         d	œ¥¦  «         |cd d d ¦  «         S n7# t&          $ r* t)          ‰¦  «        D ]}
|
                     d
¬¦  «         Œ‚ w xY w	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr^   éÿÿÿÿr   r&   ra   c                 óp   •— g | ]2}t          |¦  «        r‰                     ‰|g‰¬ ¦  «        d         n|‘Œ3S )r³   r   )rP   rÁ   )r   r9   r´   ry   r«   s     €€€r   r   z'WorkspaceStore.save.<locals>.<listcomp>?  sy   ø€ ð  9xð  9xð  9xð  VZõ  rAð  BFñ  rGô  rGð  :Q¸¿ºÀLÐSWÐRXÐbi¸Ñ9jÔ9jÐklÔ9mÐ9mð  MQð  9xð  9xð  9xr   c              3   ó”   •K  — | ]B}‰d                                |j        g ¦  «        ‰                      |j        g ¦  «        k    V — ŒCdS rÊ   )r-   r°   )r   r²   r^   r:   s     €€r   r�   z&WorkspaceStore.save.<locals>.<genexpr>A  so   øè è € ð  "Rð  "RÐw} &¨Ô"3×"7Ò"7¸Ô8HÈ"Ñ"MÔ"MÐQX×Q\ÒQ\Ð]cÔ]mÐoqÑQrÔQrÒ"rð  "Rð  "Rð  "Rð  "Rð  "Rð  "Rr   r_   )r^   r_   Tr¸   )rl   r-   ÚcopyÚdeepcopyr   r°   rq   Úselected_keyr   ÚmaprU   Ú	enumeraterP   Úminr¥   Úinsertr§   rÓ   rÛ   r»   r¼   r½   )ry   r«   r^   rå   r²   r¾   ÚselectedÚcountsÚprevious_countsÚindexr9   rš   ÚpositionÚchangedr´   r:   s   ```           @@r   ÚsavezWorkspaceStore.save#  sð  øøøøø€ ØŒYð #	ð #	Ø—X’X˜lÑ+Ô+ˆFØˆGð Ýœ-¨Ñ0Ô0�Ø!ñ Då"1ð Dñ D˜Ø!Ô+°7Ð:Ð:¸vÔ?OÐW]Ð^gÔWhÐ?hÐ?hØ$Ø '× 2Ò 2°6Ô3CÀRÑ HÔ H˜Ø#*§;¢;¨vÔ/BÀBÑ#GÔ#G˜Ý29½#½jÈ%Ñ:PÔ:PÑ2QÔ2QÕSZÑS\ÔS\ ˜Ý+4°V¸IÔ5F×5JÒ5JÈ6ÔK[Ð]_Ñ5`Ô5`Ñ+aÔ+að 2ð 2™K˜E 4Ý",¨TÑ"2Ô"2˜CØ+¨CÐ0Ð0Ô0°AÑ5Ð0Ð0Ñ0Ý#2°4Ñ#8Ô#8ð 2¸VÀC¼[È?Ð[^ÔK_Ò=_Ð=_Ý+.¨uµc¸%±j´jÑ+AÔ+A Ø %§¢¨X°tÑ <Ô <Ð <Ø & s  ¤¨qÑ 0  ¡Ø#+¨xÒ#7Ð#7Ø$,°¡M HøØ!Ô.°'Ð9Ð9Ø;C˜G FÔ$7Ñ8ùØ—:’:˜nÑ-Ô-°Ò<Ð<Ý"1ð xð x˜Ø!Ô+¨wÐ6Ð6ð 9xð  9xð  9xð  9xð  9xð  9xð  ^eð  flô  fvô  ^wð  9xñ  9xô  9x˜G FÔ$4Ñ5øØ˜)Ô$¨Ò/Ð/Ý!ð  "Rð  "Rð  "Rð  "Rð  "Rõ  BQð  "Rñ  "Rô  "Rñ  Rô  R�GØ—K’Kð  !E 6ð  !E°gÐ_fð  QDÕPTÔPYÑP[ÔP[ÐP[Ðlrð  tCô  mDð  !Eð  !Eð  !Eñ  Fô  Fð  FØ"ð?#	ð #	ð #	ð #	ñ #	ô #	ð #	ð #	ð8 0øõ !ð ð ð Ý$ WÑ-Ô-ð 1ð 1�DØ—K’K¨4�KÑ0Ô0Ð0Ð0Øðøøøð	 0ð9#	ð #	ð #	ñ #	ô #	ð #	ð #	ð #	ð #	ð #	ð #	ð #	øøøð #	ð #	ð #	ð #	ð #	ð #	s)   �J$¦H+IÉJ$É4JÊJ$Ê$J(Ê+J(©r(   c          
      ón  ‡‡— |t           vrt          d¦  «        ‚|                      |¦  «        Š|�K|dk    s6t          |t          ¦  «        r!t          |¦  «                             ¦   «         st          d¦  «        ‚d }|dk    �ry|                      i ‰¥d|�|n)‰                     d¦  «        p|                      ‰¦  «        i¥¦  «        }| 	                    ¦   «         r#| 
                    ¦   «         st          d¦  «        ‚g | j                             ¦   «         ¢d„ | j        dz                       d¦  «        D ¦   «         ¢}|D ]`}|d	         |k    rRd|v rN|                      |¦  «        }|                     |¦  «        s|                     |¦  «        rt          d
¦  «        ‚Œa|                      |¦  «        }|r?||k    r9|                     |¦  «        s|                     |¦  «        rt          d¦  «        ‚t#          ˆfd„t$          D ¦   «                              ¦   «         ¦  «        }	d„ |	D ¦   «         Šˆfd„|	D ¦   «         }
||‰                     dd¦  «        |rt	          |¦  «        nd t'          |	¦  «        t'          |
¦  «        t)          d„ |
D ¦   «         ¦  «        d„ ‰D ¦   «         ddœ	S )NrX   ra   z;Enter an absolute server folder path for dedicated storage.r(   z The target path is not a folder.c              3   ó\   K  — | ]'}|                      ¦   «         ¯t          |¦  «        V — Œ(d S rK   r‹   rŒ   s     r   r�   z3WorkspaceStore.migration_preview.<locals>.<genexpr>T  sg   è è € ð  0Ið  0IÀdÐy}÷  zFò  zFñ  zHô  zHð  0Iµ¸DÑ0AÔ0Að  0Ið  0Ið  0Ið  0Ið  0Ið  0Ir   r$   r%   r\   zGThe target overlaps another workspace folder. Choose a separate folder.zHThe new folder cannot contain or be inside the current workspace folder.c                 óx   •— i | ]6}‰d                                |j        g ¦  «        D ]}t          |¦  «        |“ŒŒ7S )r^   )r-   r°   rU   rË   s      €r   r�   z4WorkspaceStore.migration_preview.<locals>.<dictcomp>]  ss   ø€ ð  Dð  Dð  D°ÐW]Ð^gÔWh×WlÒWlÐmsÔm}ð  @Bñ  XCô  XCð  Dð  DÈt•j Ñ&Ô&¨ð  Dð  Dð  Dð  Dr   c                 ó0   — g | ]}t          |¦  «        °|‘ŒS r   ©rP   rŒ   s     r   r   z4WorkspaceStore.migration_preview.<locals>.<listcomp>^  s%   € ÐGÐGÐG˜DµÀÑ1FÔ1FÐG�4ÐGÐGÐGr   c                 ód   •— h | ],}|‰v¯t          |¦  «                             ¦   «         D ]}|’ŒŒ-S r   )r   r�   )r   r9   ÚfileÚmissings      €r   ú	<setcomp>z3WorkspaceStore.migration_preview.<locals>.<setcomp>_  sE   ø€ ÐgÐgÐg˜$¨4°wÐ+>Ð+>Í<ÐX\ÑK]ÔK]×KdÒKdÑKfÔKfÐ+>Ð+>À4�Ð+>Ð+>Ð+>Ð+>r   r&   r'   c              3   óH   K  — | ]}|                      ¦   «         j        V — Œd S rK   )rD   Úst_size)r   rÿ   s     r   r�   z3WorkspaceStore.migration_preview.<locals>.<genexpr>`  so   è è € ð  bIð  bIð  {ð  cg÷  clò  clñ  cnô  cnô  cvð  bIð  bIð  bIð  bIð  bIð  bIr   c                 ód   — g | ]-}t          |t          ¦  «        rd |d         › d|d         › �n|‘Œ.S )zDeepy rR   z: r9   rS   rŒ   s     r   r   z4WorkspaceStore.migration_preview.<locals>.<listcomp>`  s¸   € ð  VCð  VCð  VCð  swõ  NXð  Y]õ  _cñ  Ndô  Ndð  Wnð  WJð  `dð  ewô  `xð  WJð  WJð  |@ð  AGô  |Hð  WJð  WJð  WJð  jnð  VCð  VCð  VCr   T)	Ú	workspacerÝ   Úcurrent_moder(   Úmedia_countÚ
file_countÚbytesr   Úkeeps_sources)r
   rg   r-   rL   rM   r   r/   rs   r–   ÚexistsÚis_dirr0   r�   r5   r+   r3   r¬   Úlistr   r¥   Úsum)ry   r«   rÝ   r(   r<   r”   r•   Ú	other_dirÚcurrentr¾   rÀ   r   r:   s              @@r   Úmigration_previewz WorkspaceStore.migration_previewI  sï  øø€ Ø•uÐÐÝÐLÑMÔMÐMØ—’˜,Ñ'Ô'ˆØÐ 4¨;Ò#6Ð#6½jÈÕQTÑ>UÔ>UÐ#6Õ]aÐbhÑ]iÔ]i×]uÒ]uÑ]wÔ]wÐ#6ÝÐZÑ[Ô[Ð[Øˆ	Ø�;ÒÑØŸšð  )Q¨6ð  )Q°8ÀvÐGY¸V¸VÐ_e×_iÒ_iÐjrÑ_sÔ_sð  `PÐw{÷  xHò  xHð  IOñ  xPô  xPð  )Qð  )Qñ  Rô  RˆIØ×ÒÑ!Ô!ð E¨)×*:Ò*:Ñ*<Ô*<ð EÝ Ð!CÑDÔDÐDð J�t”|×*Ò*Ñ,Ô,ð  Jð  0Ið  0IÈtÌyÐ[eÑOe×NkÒNkÐltÑNuÔNuð  0Iñ  0Iô  0Ið  JˆFØð tð t�Ø˜”; ,Ò.Ð.°8¸uÐ3DÐ3DØ $§¢°Ñ 6Ô 6�IØ ×/Ò/°	Ñ:Ô:ð t¸i×>VÒ>VÐW`Ñ>aÔ>að tÝ(Ð)rÑsÔsÐsøØ—n’n \Ñ2Ô2ˆGØð m˜7 iÒ/Ð/°Y×5MÒ5MÈgÑ5VÔ5VÐ/ÐZa×ZpÒZpÐqzÑZ{ÔZ{Ð/Ý Ð!kÑlÔlÐlÝð  Dð  Dð  Dð  D½?ð  Dñ  Dô  D÷  Kò  Kñ  Mô  Mñ  Nô  NˆØGÐG EÐGÑGÔGˆØgÐgÐgÐg %ÐgÑgÔgˆØ)°4ÈÏÊÐTbÐdlÑImÔImð  LUð  z_Õy|ð  ~Gñ  zHô  zHð  zHð  [_õ  psð  tyñ  pzô  pzõ  JMð  NSñ  JTô  JTõ  _bð  bIð  bIð  CHð  bIñ  bIô  bIñ  _Iô  _Ið  VCð  VCð  {Bð  VCñ  VCô  VCð  VZð  [ð  [ð  	[r   c                ó  — | j         5  |                      |||¬¦  «        }|d         rt          d¦  «        ‚|d         |k    r@|dk    s,|                      |¦  «        t	          |d         ¦  «        k    r|cd d d ¦  «         S t          j        |                      |¦  «        ¦  «        }||d<   g }	 |dk    râ|�|d         |d<   n.|                     dt	          |d         ¦  «        j	        ¦  «         |  
                    |¦  «        }|                     d	d	¬
¦  «         i }t          D ]U}	|d                              |	j        g ¦  «        D ]1}
|
|vr+t          |
|¦  «        \  ||
<   }|                     |¦  «         Œ2ŒV|                      ||j        ¦  «        }|                      |¦  «         n7# t&          $ r* t)          |¦  «        D ]}
|
                     d	¬¦  «         Œ‚ w xY w|cd d d ¦  «         S # 1 swxY w Y   d S )Nrø   r   z7Restore missing media before converting this workspace.r  r'   r(   r&   ra   TrY   r^   r¸   )rl   r  rg   r¬   r   rê   rë   r-   rq   r]   rs   ri   r   r°   r   rº   rB   Ú__getitem__rÓ   r»   r¼   r½   )ry   r«   rÝ   r(   Úpreviewr:   r´   r<   Úmappingr²   r9   rÀ   s               r   ÚmigratezWorkspaceStore.migrateb  s¦  € ØŒYð 	ð 	Ø×,Ò,¨\¸4ÈÐ,ÑOÔOˆGØ�yÔ!ð \Ý Ð!ZÑ[Ô[Ð[Ø�~Ô&¨$Ò.Ð.°D¸HÒ4DÐ4DÈÏÊÐWcÑHdÔHdÕhlÐmtÐu}Ôm~ÑhÔhÒHÐHØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	õ ”] 4§8¢8¨LÑ#9Ô#9Ñ:Ô:ˆFØ%)ˆF�>Ñ"ØˆGðØ˜;Ò&Ð&ØÐ)Ø+2°8Ô+<˜˜xÑ(Ð(à×)Ò)¨(µD¸ÀÔ9JÑ4KÔ4KÔ4PÑQÔQÐQØ $§¢°Ñ 7Ô 7�IØ—O’O¨D¸4�OÑ@Ô@Ð@Ø �GÝ"1ð 6ð 6˜Ø$*¨9Ô$5×$9Ò$9¸&Ô:JÈBÑ$OÔ$Oð 6ð 6˜DØ#¨7Ð2Ð2Ý7BÀ4ÈÑ7SÔ7SÑ 4 ¨¡¨uØ '§¢¨uÑ 5Ô 5Ð 5øð6ð "Ÿ_š_¨V°WÔ5HÑIÔI�FØ—’˜FÑ#Ô#Ð#Ð#øÝ ð ð ð Ý$ WÑ-Ô-ð 1ð 1�DØ—K’K¨4�KÑ0Ô0Ð0Ð0Øðøøøð ð;	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s1   ˆA/G6Â.G6Â3C=F1Æ0G6Æ14G%Ç%G6Ç6G:Ç=G:c                 ó¾   — | j         5  |                      |¦  «        }|d         |k    r|                      i |¥d|i¥¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr`   )rl   r-   rÓ   )ry   r«   Ú	protectedr:   s       r   ÚprotectzWorkspaceStore.protect‚  sÇ   € ØŒYð 	Hð 	HØ—X’X˜lÑ+Ô+ˆFØÐ)Ô*¨iÒ7Ð7Ø—’ÐF˜vÐFÐ':¸IÐFÐFÑGÔGÐGð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hs   ˆ=AÁAÁAc                 ó:  ‡— t          |¦  «        t          us|d„ t          D ¦   «         vrt          d¦  «        ‚|sg S t	          j        ¦   «         |dz  z
  Š| j        5  ˆfd„| j                             ¦   «         D ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )Nc                 ó   — h | ]\  }}|’ŒS r   r   )r   Ú_rd   s      r   r  z)WorkspaceStore.expired.<locals>.<setcomp>‰  s   € Ð0WÐ0WÐ0W¹8¸1¸e°Ð0WÐ0WÐ0Wr   z,Choose a supported workspace archive period.i€Q c                 óH   •— g | ]}|d          °
|d         ‰k    ¯|d         ‘ŒS )r`   r_   r\   r   )r   r:   Úcutoffs     €r   r   z*WorkspaceStore.expired.<locals>.<listcomp>�  sf   ø€ ð  Oð  Oð  O VÈFÐSfÔLgð  OÐlrð  tCô  mDð  HNò  mNð  mN�F˜4”Lð  mNð  mNð  mNr   )Útypert   ÚARCHIVE_PERIODSrg   rÛ   rl   r0   r�   )ry   Údaysr  s     @r   ÚexpiredzWorkspaceStore.expiredˆ  s  ø€ Ý�‰:Œ:�SÐ Ð  DÐ0WÐ0WÅÐ0WÑ0WÔ0WÐ$WÐ$WÝÐKÑLÔLÐLØð 	ØˆIÝ”‘”˜t e™|Ñ+ˆØŒYð 	Oð 	Oð Oð  Oð  Oð  O¨t¬|×/BÒ/BÑ/DÔ/Dð  Oñ  Oô  Oð	Oð 	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð 	Oð 	Os   Á%BÂBÂBc                 ó  ‡— | j         5  |                      ‰¦  «        }| j        dz  }|                     d¬¦  «         t	          ˆfd„|                     d¦  «        D ¦   «         ¦  «        rt          d|d         › d�¦  «        ‚t          ||d         d	¬
¦  «        }| j        ‰          	                    |¦  «         | j        ‰= | j
        ‰= |                     d¦  «        r| j        |d         = d d d ¦  «         d S # 1 swxY w Y   d S )Nr$   T)r[   c              3   ór   •K  — | ]1}|                      ¦   «         ¯t          |¦  «        d          ‰k    V — Œ2dS )r\   Nr‹   )r   r9   r«   s     €r   r�   z)WorkspaceStore.archive.<locals>.<genexpr>–  sG   øè è € ÐqÐq¸tÐbf×bnÒbnÑbpÔbpÐq•;˜tÑ$Ô$ TÔ*¨lÒ:ÐqÐqÐqÐqÐqÐqr   r%   z(An archive already exists for workspace r]   r¡   r   rÏ   rR   )rl   r-   r5   ri   r§   r+   rg   r   rm   r†   r0   rn   )ry   r«   r:   r$   rˆ   s    `   r   ÚarchivezWorkspaceStore.archive‘  st  ø€ ØŒYð 	Hð 	HØ—X’X˜lÑ+Ô+ˆFØ”y :Ñ-ˆHØ�NŠN DˆNÑ)Ô)Ð)ÝÐqÐqÐqÐqÀxÇ}Â}ÐU]ÑG^ÔG^ÐqÑqÔqÑqÔqð _Ý Ð!]ÈFÐSYÌNÐ!]Ð!]Ð!]Ñ^Ô^Ð^Ý(¨°6¸&´>È'ÐRÑRÔRˆKØŒK˜Ô%×,Ò,¨[Ñ9Ô9Ð9Ø”˜LÐ)Ø”˜\Ð*Ø�zŠzÐ,Ñ-Ô-ð HØÔ+¨FÐ3EÔ,FÐGð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hs   ‰C(C>Ã>DÄD)r'   )NN)Ú__name__Ú
__module__Ú__qualname__r{   Ústaticmethodrw   r–   rŸ   rs   r¬   rB   rÁ   rÇ   r-   rÓ   rÖ   rx   rß   rá   r†   rä   r÷   r  r  r  r"  r%  r   r   r   rA   rA   @   s-  € € € € € ð2#ð 2#ð 2#ð 2#ðh ðð ñ „\ððQð Qð Qð]ð ]ð ]ð
ð ð ð hð hð hð ðð ñ „\ðð 59ð ð ð ð ð ð&ð ð ð ðð ð ðkð kð kð2Dð Dð Dð
 04À$ÐUYÐbfð  ð  ð  ð  ð  ð*Eð Eð Eð:ð :ð :ð >Bð Jð Jð Jð Jð Jð 8<ð 'ð 'ð 'ð 'ð 'ð =Að $ð $ð $ð $ð $ðL ?Cð [ð [ð [ð [ð [ð2 59ð ð ð ð ð ð@Hð Hð HðOð Oð OðHð Hð Hð Hð Hr   rA   c           
      óâ   ‡ — ˆ fd„dD ¦   «         }t           D ]W}|                     |j        d„ ‰ |j                 D ¦   «         |j        ‰ |j                 |j        ‰ |j                 i¦  «         ŒX|S )Nc                 ó"   •— i | ]}|‰|         “ŒS r   r   )r   rš   Úgens     €r   r�   z#capture_gallery.<locals>.<dictcomp>¡  s   ø€ ÐZÐZÐZ ˆs�C˜”HÐZÐZÐZr   ©Úcurrent_gallery_sourceÚselected_video_timec                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r   r·   rŒ   s     r   r   z#capture_gallery.<locals>.<listcomp>£  s&   € Ð*cÐ*cÐ*cÀT­2¬7¯?ª?¸4Ñ+@Ô+@Ð*cÐ*cÐ*cr   )r   rÜ   r°   rì   Úlast_selected_key)r,  r^   r²   s   `  r   Úcapture_galleryr2     s¿   ø€ ØZÐZÐZÐZÐ(YÐZÑZÔZ€GÝ!ð Nð NˆØ�Š˜Ô(Ð*cÐ*cÈSÐQWÔQaÔMbÐ*cÑ*cÔ*cÐekÔexÐz}ð  Eô  Rô  {Sð  U[ô  Umð  orð  syô  sKô  oLð  Mñ  	Nô  	Nð  	Nð  	NØ€Nr   c                 óð  ‡
— ddl m} d Š
| d         }|                     dd¦  «        |                     d¦  «        dœ}|d         t          vrt	          d¦  «        ‚d	„ t
          D ¦   «         D �]‡}|                     |d
z   g ¦  «        }t          |t          ¦  «        st	          d¦  «        ‚t          d„ |D ¦   «         ¦  «        r‰
p	 |¦   «         Š
ˆ
fd„|D ¦   «         }n(t          d„ |D ¦   «         ¦  «        rt	          d¦  «        ‚|                     |dz   d¦  «        }t          |t          ¦  «        st	          d¦  «        ‚d|cxk    rt          |¦  «        k     rn n||         nd }d„ |D ¦   «         }	|	||d
z   <   t          |	|¦  «        ||dz   <   ||	v r|	                     |¦  «        nt          |	¦  «        dz
  ||dz   <   t          |                     |dz   d¦  «        ¦  «        ||dz   <   �Œ‰|S )Nr   r"   r^   r.  Úvideor/  r-  zInvalid workspace gallery tab.c              3   ó$   K  — | ]}|j         V — Œd S rK   )Úprefix)r   r²   s     r   r�   zload_gallery.<locals>.<genexpr>¯  s$   è è € Ð?Ð? V�6”=Ð?Ð?Ð?Ð?Ð?Ð?r   Ú	file_listzInvalid workspace media paths.c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rK   rS   rŒ   s     r   r�   zload_gallery.<locals>.<genexpr>³  s,   è è € Ð8Ð8¨$�z˜$¥Ñ%Ô%Ð8Ð8Ð8Ð8Ð8Ð8r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   rO   )r   r9   r6   s     €r   r   z load_gallery.<locals>.<listcomp>µ  s%   ø€ Ð=Ð=Ð=¨t�Z—_’_ TÑ*Ô*Ð=Ð=Ð=r   c              3   óB   K  — | ]}t          |t          ¦  «         V — Œd S rK   )rL   rM   rŒ   s     r   r�   zload_gallery.<locals>.<genexpr>¶  s/   è è € Ð=Ð=¨t•Z ¥cÑ*Ô*Ð*Ð=Ð=Ð=Ð=Ð=Ð=r   rñ   rç   z"Invalid workspace media selection.c                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS r   rý   rŒ   s     r   r   z load_gallery.<locals>.<listcomp>¼  s%   € ÐDÐDÐD˜T­o¸dÑ.CÔ.CÐD�DÐDÐDÐDr   Úfile_settings_listr   Úlast_selectedT)r)   r#   r-   r   rg   r   rL   r  r§   rt   r¥   r	   rô   rv   )r:   Úread_settingsr#   rÑ   r±   r6  r¾   rñ   Úselected_pathÚexistingr6   s             @r   Úload_galleryrA  §  sn  ø€ Ø<Ð<Ð<Ð<Ð<Ð<Ø€JØ�9Ô€EØ(-¯	ª	Ð2JÈGÑ(TÔ(TÐmr×mvÒmvð  xMñ  nNô  nNð  Oð  O€FØÐ&Ô'­wÐ6Ð6ÝÐ9Ñ:Ô:Ð:à?Ð?­Ð?Ñ?Ô?ð [ñ [ˆØ—	’	˜& ;Ñ.°Ñ3Ô3ˆÝ˜%¥Ñ&Ô&ð 	?ÝÐ=Ñ>Ô>Ð>ÝÐ8Ð8°%Ð8Ñ8Ô8Ñ8Ô8ð 	?Ø#Ð:Ð'8Ð'8Ñ':Ô':ˆJØ=Ð=Ð=Ð=°uÐ=Ñ=Ô=ˆEˆEÝÐ=Ð=°uÐ=Ñ=Ô=Ñ=Ô=ð 	?ÝÐ=Ñ>Ô>Ð>Ø—9’9˜V jÑ0°"Ñ5Ô5ˆÝ˜(¥CÑ(Ô(ð 	CÝÐAÑBÔBÐBØ+,°Ð+EÐ+EÒ+EÐ+E½3¸u¹:¼:Ò+EÐ+EÐ+EÐ+EÐ+E˜˜hœ˜È4ˆØDÐD UÐDÑDÔDˆØ'/ˆˆv˜Ñ#Ñ$Ý0=¸hÈÑ0VÔ0VˆˆvÐ,Ñ,Ñ-ØGTÐX`ÐG`ÐG` h§n¢n°]Ñ&CÔ&CÐ&CÕfiÐjrÑfsÔfsÐvwÑfwˆˆv˜
Ñ"Ñ#Ý+/°·	²	¸&À?Ñ:RÐTXÑ0YÔ0YÑ+ZÔ+Zˆˆv˜Ñ'Ñ(Ñ(Ø€Mr   )$Ú__doc__rE   rj   rÛ   rØ   rê   Úcollectionsr   Úpathlibr   Úshared.utils.config_storer   r   Úshared.utils.gallery_sourcesr   r   Úshared.utils.media_settingsr	   Úshared.utils.workspace_storager
   r   r   r   Úshared.utils.readable_pathsr   r   ÚARCHIVE_AFTER_DAYS_KEYÚranger   r>   r.   rP   rU   rA   r2  rA  r   r   r   ú<module>rL     sÃ  ðà OÐ OØ 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WÐ WØ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Að 8Ð à�] O°_ðà`Ð`ÐSXÐSXÐYZÐ\^ÑS_ÔS_Ð`Ñ`Ô`ðàbqð€ðð ð ð,ð ð ð:ð :ð :ðXð Xð Xð]Hð ]Hð ]Hð ]Hð ]Hñ ]Hô ]Hð ]Hð@ð ð ðð ð ð ð r   