-í
¡ƒæ>c       sÜ   d  k  l Z l Z l Z d k l Z d k Td k Z d k Z d k	 Z	 d f  d „  ƒ  YZ
 d e
 e i f d „  ƒ  YZ d e
 e i f d	 „  ƒ  YZ d
 e
 e i f d „  ƒ  YZ d f  d „  ƒ  YZ d e f d „  ƒ  YZ d S(   (   s   imaplibs   imaputils
   threadutil(   s   UIBase(   s   *Ns   UsefulIMAPMixInc      s,   t  Z d „  Z d „  Z d e d d „ Z RS(   Nc    s   |  i Sd  S(   N(   s   selfs   state(   s   self(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   getstate s    c    s&   |  i ƒ  d j o |  i Sn t Sd  S(   Ns   SELECTED(   s   selfs   getstates   selectedfolders   None(   s   self(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   getselectedfolder s    s   INBOXi    c    s    | o |  i ƒ  | j o | |  _ d  Sn |  i i d i |  | | ƒ } | d d j o t
 d t | ƒ ‚ n |  i ƒ  d j o | |  _ n
 t |  _ d  S(   Ni   i    s   OKs   Error from select: %ss   SELECTED(   s   forces   selfs   getselectedfolders   mailboxs   readonlys   is_readonlys	   __class__s	   __bases__s   selects   results
   ValueErrors   strs   getstates   selectedfolders   None(   s   selfs   mailboxs   readonlys   forces   result(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   select! s    	(   s   __name__s
   __module__s   getstates   getselectedfolders   Nones   select(    (    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   UsefulIMAPMixIn s   		s   UsefulIMAP4c      s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   UsefulIMAP4. s    s   UsefulIMAP4_SSLc      s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   UsefulIMAP4_SSL/ s    s   UsefulIMAP4_Tunnelc      s   t  Z RS(   N(   s   __name__s
   __module__(    (    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   UsefulIMAP4_Tunnel0 s    s
   IMAPServerc    	  sƒ   t  Z e e e e d d e d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z RS(   Ni   s   ""c    sà   | |  _  | |  _ | |  _ | |  _ t |  _ | |  _ |	 |  _ | |  _	 | |  _ t |  _ t |  _ | t j o! | o d |  _	 n
 d |  _	 n | |  _ g  |  _ g  |  _ h  |  _ t |  i ƒ |  _ t ƒ  |  _ |
 |  _ d  S(   Niá  i   (   s	   reposnames   selfs   configs   usernames   passwords   Nones   passworderrors   hostnames   tunnels   ports   ssls   usessls   delims   roots   maxconnectionss   availableconnectionss   assignedconnectionss	   lastowners   BoundedSemaphores	   semaphores   Locks   connectionlocks	   reference(   s   selfs   configs	   reposnames   usernames   passwords   hostnames   ports   ssls   maxconnectionss   tunnels	   reference(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   __init__3 s,    															c    sf   |  i t j o |  i t j o |  i Sn t i ƒ  i |  i |  i |  i ƒ |  _ t |  _ |  i Sd  S(   N(	   s   selfs   passwords   Nones   passworderrors   UIBases   getglobaluis   getpasss	   reposnames   config(   s   self(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   getpasswordO s     	c    s   |  i Sd S(   sq   Returns this server's folder delimiter.  Can only be called
        after one or more calls to acquireconnection.N(   s   selfs   delim(   s   self(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   getdelimZ s     c    s   |  i Sd S(   sl   Returns this server's folder root.  Can only be called after one
        or more calls to acquireconnection.N(   s   selfs   root(   s   self(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   getroot_ s     c    sK   |  i i ƒ  |  i i | ƒ |  i i | ƒ |  i i ƒ  |  i	 i ƒ  d  S(   N(
   s   selfs   connectionlocks   acquires   assignedconnectionss   removes
   connections   availableconnectionss   appends   releases	   semaphore(   s   selfs
   connection(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   releaseconnectione s
    c    sw   t  i ƒ  } | i ƒ  } | i d d | ƒ |  i ƒ  } |  i
 d t i | | ƒ i ƒ  } | i d d | ƒ | Sd  S(   Ns   imaps   md5handler: got challenge %ss    s   md5handler: returning %s(   s   UIBases   getglobaluis   uis   responses   strips	   challenges   debugs   selfs   getpasswords   passwds   usernames   hmacs   news	   hexdigests   retval(   s   selfs   responses   uis   passwds	   challenges   retval(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys
   md5handlerl s    #c    s3   t  i ƒ  i d d ƒ | i |  i |  i ƒ  ƒ d  S(   Ns   imaps   Attempting plain authentication(   s   UIBases   getglobaluis   debugs   imapobjs   logins   selfs   usernames   getpassword(   s   selfs   imapobj(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys	   plainauthv s    c    s‡  |  i i ƒ  |  i i ƒ  t } t |  i ƒ oÍ t i	 ƒ  } t } x] t t |  i ƒ d d d ƒ D]< } |  i | } |  i | | j o | } |  i | =Pn qb W| o |  i d } |  i d =n |  i i | ƒ t i	 ƒ  |  i | <|  i i ƒ  | Sn |  i i ƒ  d } x{| or|  i o2 t i ƒ  i d |  i ƒ t |  i ƒ } d } nq |  i o5 t i ƒ  i |  i |  i ƒ t |  i |  i ƒ } n2 t i ƒ  i |  i |  i ƒ t |  i |  i ƒ } |  i o· y€ d | i j oY t i ƒ  i d d ƒ y | i d |  i  ƒ Wn% | i! j
 o } |  i# | ƒ n Xn |  i# | ƒ d } Wn0 | i! j
 o! } t$ | ƒ |  _% t |  _& n Xn qW|  i' t j o¤ | i( |  i) d	 ƒ d } | t g j p
 | t j o | i( |  i) d
 ƒ d } n t+ i, | d ƒ d \ |  _' |  _- t+ i. |  i' ƒ |  _' t+ i. |  i- ƒ |  _- n |  i i ƒ  |  i i | ƒ t i	 ƒ  |  i | <|  i i ƒ  | Sd S(   sÖ   Fetches a connection from the pool, making sure to create a new one
        if needed, to obey the maximum connection limits, etc.
        Opens a connection to the server and returns an appropriate
        object.i   iÿÿÿÿi    s   tunnels   AUTH=CRAM-MD5s   imaps"   Attempting CRAM-MD5 authentications   CRAM-MD5s   ""s   "*"N(/   s   selfs	   semaphores   acquires   connectionlocks   Nones   imapobjs   lens   availableconnectionss   threads	   get_idents   threadids   ranges   is   tryobjs	   lastowners   assignedconnectionss   appends   releases   successs   tunnels   UIBases   getglobaluis
   connectings   UsefulIMAP4_Tunnels   usessls   hostnames   ports   UsefulIMAP4_SSLs   UsefulIMAP4s   capabilitiess   debugs   authenticates
   md5handlers   errors   vals	   plainauths   strs   passworderrors   passwords   delims   lists	   references   listress   imaputils	   imapsplits   roots   dequote(   s   selfs   vals   successs   imapobjs   is   tryobjs   threadids   listres(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   acquireconnection| sx       
	 



#c    s   t  i |  i ƒ d S(   sÎ  Waits until there is a connection available.  Note that between
        the time that a connection becomes available and the time it is
        requested, another thread may have grabbed it.  This function is
        mainly present as a way to avoid spawning thousands of threads
        to copy messages, then have them all wait for 3 available connections.
        It's OK if we have maxconnections + 1 or 2 threads, which is what
        this will help us do.N(   s
   threadutils   semaphorewaits   selfs	   semaphore(   s   self(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   connectionwaitÌ s     c    st   |  i i ƒ  t i |  i |  i ƒ x" |  i |  i D] } | i
 ƒ  q4 Wg  |  _ g  |  _ h  |  _ |  i i ƒ  d  S(   N(   s   selfs   connectionlocks   acquires
   threadutils   semaphoreresets	   semaphores   maxconnectionss   assignedconnectionss   availableconnectionss   imapobjs   logouts	   lastowners   release(   s   selfs   imapobj(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   closeÖ s     			c 
   só  t  i ƒ  } | i d d ƒ xÐd oÈ| i d d ƒ | i | ƒ | i d d ƒ | i ƒ  o | i d d ƒ d Sn | i d d ƒ |  i	 i
 ƒ  t |  i ƒ t |  i ƒ } |  i	 i ƒ  | i d d	 ƒ g  } g  }	 x¤ t | ƒ D]– } | i d d
 | | f ƒ |  i ƒ  } | i d d | ƒ |	 i | ƒ t i d | i ƒ } | i d ƒ | i ƒ  | i | ƒ | i d d ƒ qç W| i d d ƒ x | D] } | i ƒ  q˜W| i d d ƒ x |	 D] } |  i | ƒ qÃW| i d d ƒ q Wd S(   s<  Sends a NOOP to each connection recorded.   It will wait a maximum
        of timeout seconds between doing this, and will continue to do so
        until the Event object as passed is true.  This method is expected
        to be invoked in a separate thread, which should be join()'d after
        the event is set.s   imaps   keepalive thread startedi   s   keepalive: top of loops   keepalive: after waits    keepalive: event is set; exitingNs#   keepalive: acquiring connectionlocks"   keepalive: connectionlock releaseds)   keepalive: processing connection %d of %ds!   keepalive: connection %d acquireds   targets   keepalive: thread starteds   keepalive: joining threadss    keepalive: releasing connectionss   keepalive: bottom of loop(   s   UIBases   getglobaluis   uis   debugs   events   waits   timeouts   isSets   selfs   connectionlocks   acquires   lens   assignedconnectionss   availableconnectionss   numconnectionss   releases   threadss   imapobjss   ranges   is   acquireconnections   imapobjs   appends
   threadutils   ExitNotifyThreads   noops   thrs	   setDaemons   starts   joins   releaseconnection(
   s   selfs   timeouts   events   numconnectionss   imapobjs   is   thrs   uis   threadss   imapobjs(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys	   keepaliveâ sL       
  (   s   __name__s
   __module__s   Nones   __init__s   getpasswords   getdelims   getroots   releaseconnections
   md5handlers	   plainauths   acquireconnections   connectionwaits   closes	   keepalive(    (    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys
   IMAPServer2 s   !					
		P	
	s   ConfigedIMAPServerc      s   t  Z d  Z h  d „ Z RS(   s  This class is designed for easier initialization given a ConfigParser
    object and an account name.  The passwordhash is used if
    passwords for certain accounts are known.  If the password for this
    account is listed, it will be obtained from there.c    sX  | |  _ |  i i ƒ  |  _ |  i i ƒ  } | o@ |  i i ƒ  } |  i i	 ƒ  } |  i i ƒ  }
 |  i i ƒ  } n |  i i ƒ  } t } t }	 | i ƒ  | j o | | i ƒ  }	 n | o> t i |  |  i |  i i ƒ  d | d | d |  i i ƒ  ƒn\ |	 o |  i i ƒ  }	 n t i |  |  i |  i i ƒ  | |	 | |
 | |  i i ƒ  d | ƒ	d S(   sY   Initialize the object.  If the account is not a tunnel,
        the password is required.s   tunnels	   references   maxconnectionsN(   s
   repositorys   selfs   reposs	   getconfigs   configs   getpreauthtunnels	   usetunnels   gethosts   hosts   getusers   users   getports   ports   getssls   ssls   getreferences	   references   Nones   servers   passwords   getnames   passwordhashs
   IMAPServers   __init__s   getmaxconnectionss   getpassword(   s   selfs
   repositorys   passwordhashs	   references	   usetunnels   servers   ssls   hosts   users   passwords   port(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   __init__s2     	(   s   __name__s
   __module__s   __doc__s   __init__(    (    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   ConfigedIMAPServers    (   s   offlineimaps   imaplibs   imaputils
   threadutils   offlineimap.uis   UIBases	   threadings   threads   hmacs   oss   UsefulIMAPMixIns   IMAP4s   UsefulIMAP4s	   IMAP4_SSLs   UsefulIMAP4_SSLs   IMAP4_Tunnels   UsefulIMAP4_Tunnels
   IMAPServers   ConfigedIMAPServer(   s
   IMAPServers   UsefulIMAP4_Tunnels   UsefulIMAP4_SSLs   UsefulIMAP4s   ConfigedIMAPServers   imaputils   imaplibs   threads   UIBases   UsefulIMAPMixIns   oss   hmacs
   threadutil(    (    s>   /usr/pkg/lib/python2p2/site-packages/offlineimap/imapserver.pys   ? s   à