
XϟQc           @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z e i d j Z y d  d k	 Z Wn n Xe i
   Z e i   e i d Z e i d Z e i d Z e i d Z g  Z e d e d  D]+ Z e e j o
 e e j o e e n q [ Z d	 Z e a d
   Z d   Z d e f d     YZ d e f d     YZ d e  i i  f d     YZ! d e  i i  f d     YZ" d e  i i  f d     YZ# d e f d     YZ$ d e f d     YZ% d S(   iNt   win32i   i   i   i   i    i   i2   c           C   s!   t  i    t i  i   d a d  S(   Ng     @@(   t   timet   pygamet	   get_tickst	   time_base(    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt	   init_time<   s    c           C   s   t  t i i   d S(   Ng     @@(   R   R   R   R   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   get_time@   s    t   IgnoreEventc           B   s   e  Z d  Z RS(   so   
    Exception that is raised when we want to ignore an event, but
    also don't want to return anything.
    (   t   __name__t
   __module__t   __doc__(    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   C   s   t   absolutec           B   s   e  Z d  Z g  Z RS(   s7   
    This represents an absolute float coordinate.
    (   R   R	   R
   t	   __slots__(    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   K   s   t   Displayablec           B   s   e  Z d  Z e Z e Z d Z d Z d Z	 e Z
 d e d d  Z d   Z e d  Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d d e d  Z d   Z d   Z d   Z d   Z RS(   s   
    The base class for every object in Ren'Py that can be
    displayed to the screen.

    Drawables will be serialized to a savegame file. Therefore, they
    shouldn't store non-serializable things (like pygame surfaces) in
    their fields.
    t    t   defaultc         K   s4   t  i i | | d t |  _ | |  _ | |  _ d  S(   Nt   heavy(   t   renpyt   stylet   Stylet   Truet
   focus_nameR   (   t   selft   focusR   R   t
   properties(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   __init__g   s    	c         C   sj   |  i  p | } |  i o | |  |  n x8 |  i   D]* } | d  j o q8 n | i | |  q8 Wd  S(   N(   R   t	   focusablet   visitt   Nonet   find_focusable(   R   t   callbackR   t   i(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   l   s    
 c         C   sp   |  i  p |  i |  i d t  n | o? |  i  o4 |  i i o# t i i i	 |  i i d d ql n d S(   sD   
        Called to indicate that this widget has the focus.
        t   hover_t   channelt   soundN(
   t	   activatedt   set_style_prefixt   roleR   R   R"   R   t   audiot   musict   play(   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   z   s
    
c         C   s)   |  i  p |  i |  i d t  n d S(   sK   
        Called to indicate that this widget has become unfocused.
        t   idle_N(   R#   R$   R%   R   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   unfocus   s    
c         C   sG   t  i i i o t  i i i |  j	 o d  Sn t  i i   i i |  j S(   N(   R   t   displayR   t   grabt   gamet   contextt   scene_listst   focused(   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   is_focused   s    &c         C   sE   | |  i  i j o d Sn |  i  i |  t i i i |  d  d S(   s   
        Called to set the style prefix of this widget and its child
        widgets, if any.

        `root` - True if this is the root of a style tree, False if this
        hass been passed on to a child.
        Ni    (   R   t   prefixt
   set_prefixR   R+   t   rendert   redraw(   R   R2   t   root(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR$      s    	c         C   s7   | o, t  d d i |  d i |  f   n |  S(   s`   
        Called to parameterize this. By default, we don't take any
        parameters.
        sH   Image '%s' can't take parameters '%s'. (Perhaps you got the name wrong?)t    (   t	   Exceptiont   join(   R   t   namet
   parameters(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   parameterize   s    &c         C   s   d S(   s   
        Called to display this displayable. This is called with width
        and height parameters, which give the largest width and height
        that this drawable can be drawn to without overflowing some
        bounding box. It's also given two times. It returns a Surface
        that is the current image of this drawable.

        @param st: The time since this widget was first shown, in seconds.
        @param at: The time since a similarly named widget was first shown,
        in seconds.
        N(    (   R   t   widtht   heightt   stt   at(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR4      s    c         C   s   d S(   s  
        Called to report than an event has occured. Ev is the raw
        pygame event object representing that event. If the event
        involves the mouse, x and y are the translation of the event
        into the coordinates of this displayable. st is the time this
        widget has been shown for.

        @returns A value that should be returned from Interact, or None if
        no value is appropriate.
        N(   R   (   R   t   evt   xt   yR?   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   event   s    c         C   s   |  i  i   S(   s   
        Returns a style object containing placement information for
        this Displayable. Children are expected to overload this
        to return something more sensible.
        (   R   t   get_placement(   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRE      s    c         C   s\   |  g } xL | oD | i  d  } | d j o q n | |  | i | i    q Wd S(   sf   
        Calls the callback on this displayable and all children of this
        displayable.
        i    N(   t   popR   t   extendR   (   R   R   t   worklistt   d(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt	   visit_all   s    	

c         C   s   g  S(   s   
        Called to ask the displayable to return a list of its children
        (including children taken from styles). For convenience, this
        list may also include None values.
        (    (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR      s    c         C   s   d S(   s9   
        Called once per widget per interaction.
        N(   R   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   per_interact   s    c            s   |  i    f d    d S(   s   
        Called to ask this displayable to call the callback with all
        the images it, and its children, may want to load.
        c            s   |  i     S(    (   t   predict_one(   R   (   R   (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   <lambda>   s    N(   RJ   (   R   R   (    (   R   s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   predict   s    c         C   s   d S(   sv   
        Called to ask this displayable to call the callback with all
        the images it may want to load.
        N(    (   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRL      s    c
         C   s  |  i    \ }
 } } } } } } |
 d j o
 d }
 n | d j o
 d } n | d j o
 d } n | d j o
 d } n | i   \ } } | d j o
 |
 } n t |  t j o
 | } n d } t |  t j o
 | } n d } | | | | } | | 7} | d j o
 | } n t |  t j o
 | } n d } t |  t j o
 | } n d } | | | | } | | 7} | | 7} | | 7} | o  | i | | | f d |	 n | i | | | f d |	 | | f S(   s  
        This draws this Displayable onto a destination surface, using
        the placement style information returned by this object's
        get_placement() method.

        @param dest: The surface that this displayable will be drawn
        on.

        @param x: The minimum x coordinate on this surface that this
        Displayable will be drawn to.

        @param y: The minimum y coordinate on this surface that this
        displayable will be drawn to.

        @param width: The width of the area allocated to this
        Displayable.

        @param height: The height of the area allocated to this
        Displayable.

        @param surf: The surface returned by a previous call to
        self.render().
        i    i   t   mainN(   RE   R   t   get_sizet   typet   floatt   subpixel_blitt   blit(   R   t   destRB   RC   R=   R>   t   surft   xofft   yoffRO   t   xpost   ypost   xanchort   yanchort   xoffsett   yoffsett   subpixelt   swt   sht   xoff_mult   xanchor_mult   yoff_mult   yanchor_mul(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   place  sH    !













 c         C   sI   | |  i  j o d Sn | |  _  |  i o t i i i |  d  n d S(   sH   
        Sets the transform event of this displayable to event.
        Ni    (   t   transform_eventt   transform_event_responderR   R+   R4   R5   (   R   RD   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   set_transform_event\  s
    	
c         C   s   d S(   s   
        Returns None if this displayable is ready to be hidden, or
        a replacement displayable if it doesn't want to be hidden
        quite yet.
        N(   R   (   R   R?   R@   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   hideh  s    c         C   s   d S(   sG   
        Called when the displayable is added to a scene list.
        N(    (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   showq  s    c         C   s   |  S(   s   
        If this is a ImageReference to a parameterized image, return
        the get_parameterized() of the parameterized image. Otherwise,
        return this displayable.
        (    (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   get_parameterizedv  s    N(    R   R	   R
   t   FalseR#   R   R   t   full_focus_nameR%   Rg   Rh   R   R   R   R*   R1   R$   R<   R4   RD   RE   RJ   R   RK   RN   RL   R   Rf   Ri   Rj   Rk   Rl   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   R   s6   															T				t   ImagePredictInfoc           B   sG   e  Z d  Z d   Z d d  Z d   Z d   Z d   Z d   Z	 RS(   s?   
    This stores information involved in image prediction.
    c         C   s8   x1 t  i i t  i i D] } |  i i | h   q Wd  S(   N(   R   t   configt   layerst
   top_layerst   imagest
   setdefault(   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   after_setstate  s     c         C   s   t  t |   i   h  |  _ | d  j o2 xj t i i t i i D] } h  |  i | <q@ Wn< x8 t i i t i i D]  } | i | i	   |  i | <qr Wd  S(   N(
   t   superRo   R   Rs   R   R   Rp   Rq   Rr   t   copy(   R   t   ipiR   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s    	  c         C   s   |  i  | i | d d   } | d  j p t |  t |  j  o t Sn x2 t | |  D]! \ } } | | j o t Sq[ q[ Wt S(   Ni    (   Rs   t   getR   t   lenRm   t   zipR   (   R   t   layerR:   t   shownt   at   b(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   showing  s    & c         C   s   |  i  | i   d  S(   N(   Rs   t   clear(   R   R|   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   predict_scene  s    c         C   s   | |  i  | | d <d  S(   Ni    (   Rs   (   R   R:   R|   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   predict_show  s    c         C   s   |  i  | i | d   d  S(   N(   Rs   RF   R   (   R   t   tagR|   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   predict_hide  s    N(
   R   R	   R
   Ru   R   R   R   R   R   R   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRo     s   				t
   SceneListsc           B   s   e  Z d  Z d Z d   Z d   Z d   Z d   Z d   Z d   Z	 d d g  g  d d d d	  Z d
   Z e d  Z d   Z d   Z d   Z d   Z d   Z RS(   sd   
    This stores the current scene lists that are being used to display
    things to the user.
    i   c         C   sS   xL t  i i t  i i D]4 } | |  i j o g  |  i | <h  |  i | <q q Wd  S(   N(   R   Rp   Rq   Rr   t   at_list(   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRu     s
     c         C   s   | d j  oW h  |  _  h  |  _ xB t i i t i i D]& } h  |  i  | <d  g  f |  i | <q6 Wn | d j  o t |  _ n d  S(   Ni   i   (	   R   t   layer_at_listR   Rp   Rq   Rr   R   Rm   t   shown_window(   R   t   versionR   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   after_upgrade  s    		 c         C   sq  t  t |   i   t |  _ h  |  _ h  |  _ h  |  _ | |  _ | o x t	 i
 i t	 i
 i D]p } y | i | |  i | <Wn  t j
 o g  |  i | <n X| i | i   |  i | <| i | |  i | <q^ Wx! t	 i
 i D] } |  i |  q W|  i   d  |  _ na xK t	 i
 i t	 i
 i D]3 } g  |  i | <h  |  i | <d  g  f |  i | <q$Wd  |  _ d  |  _ d  S(   N(   Rv   R   R   Rm   R   Rq   R   R   t   image_predict_infoR   Rp   Rr   t   KeyErrorRw   t   overlay_layersR   t   replace_transientR   R0   R'   (   R   t   oldslRx   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s6    					  
 	c         C   s+   x$ t  i i D] } |  i | t  q Wd S(   s   
        Replaces the contents of the transient display list with
        a copy of the master display list. This is used after a
        scene is displayed to get rid of transitions and interface
        elements.
        N(   R   Rp   t   transient_layersR   R   (   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s     c         C   s1   x* t  i i D] } |  i | o t Sq q Wt S(   s2  
        This returns True if all transient layers are empty. This is
        used by the rollback code, as we can't start a new rollback
        if there is something in a transient layer (as things in the
        transient layer may contain objects that cannot be pickled,
        like lambdas.)
        (   R   Rp   R   Rq   Rm   R   (   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   transient_is_empty  s
    	 c         C   s   | d j o | Sn | i   } t | t i i i  p | Sn | i   } t | t i i i  p  t i i i d |  } } n | i |  | S(   sr   
        If the old thing is a transform, then move the state of that transform
        to the new thing.
        t   childN(   R   Rl   t
   isinstanceR   R+   t   motiont	   Transformt
   take_state(   R   t	   old_thingt	   new_thingt   old_transformt   new_transform(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   transform_state  s     i    c
         C   s  t  | t  p t d t |    n | |  i j o t d |   n | o | |  i | | <n | o | o | |  i i | | <n |  i | }
 d } d } | o t	 i
 i i | d | } n | d j	 od | } xq t |
  D]W \ } \ } } } } } | | j o Pn | | j o |
 i |  d } d } q q Wd } d } d } | d j	 ov |
 | d } |  i | |  } | i d  | i   | | j o! | | | | | f |
 | <d Sq|
 i |  qn d } xf t |
  D]L \ } \ } } } } } | | j o | | j o Pn | | j o PqqWt |
  } |  i |	 |  } | i d	  | i   |
 i | | | | | | f  d S(
   sR  
        This is called to add something to a layer. Layer is
        the name of the layer that we need to add the thing to,
        one of 'master' or 'transient'. Key is an optional key. Zorder
        is a place in the zorder to add the thing. Behind is a list of keys
        this thing must be placed below, within the zorder.

        If key is provided, and there exists something in the selected
        layer with the given key, and the same zorder, that entry from
        the layer is replaced with the supplied displayable. If the
        same key exists, but a different zorder, the thing with the
        old key is removed.

        Otherwise, the displayable is placed in the given zorder, behind all
        keys listed in behind. If no keys are listed in behind, the
        displayable is placed at the end of the zorder.
        s6   Attempting to show something that isn't a displayable:s3   Trying to add something to non-existent layer '%s'.R   s   hide$i   t   replaceNi    Rk   (   R   R   R8   t   reprRq   R   R   Rs   R   R   R+   R   t   ATLTransformt	   enumerateRF   R   Ri   Rk   Rz   t   insert(   R   R|   t   thingt   keyt   zordert   behindR   R:   t   atlt   default_transformt   lR@   R?   t   hidekeyt   indext   kt   zoRI   R   t
   behind_keyt	   ignore_stt	   ignore_att   ignore_thing(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   add%  s^    
 
 	
c         C   sL  | |  i  j o t d |   n |  i  | } g  } t   } x | D] } | \ } } }	 }
 } | | j p | | j o} | oo |	 p | }	 |
 p | }
 | i | |	 | |
  } | d j	 o* d | } | i | | |	 |
 | f  q qG qG n | i |  qG W| |  i  | <|  i | i | d  |  i i	 | i | d  d S(   s9  
        Thing is either a key or a displayable. This iterates through the
        named layer, searching for entries matching the thing.
        When they are found, they are removed from the displaylist.

        It's not an error to remove something that isn't in the layer in
        the first place.
        s8   Trying to remove something from non-existent layer '%s'.s   hide$N(
   Rq   R8   R   Rj   R   t   appendR   RF   R   Rs   (   R   R|   R   R   t   newlt   nowR   R   R   R?   R@   RI   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   remove  s*    
	 
$c         C   s  t    } |  i | } g  } x | D] } | \ } } }	 }
 } | oy | or |	 p | }	 |
 p | }
 | i | |	 | |
  } | d j	 o* d | } | i | | |	 |
 | f  q# q# q# q# W| |  i | <|  i | i   |  i i | i   d g  f |  i	 | <d S(   s   
        Clears the named layer, making it empty.

        If hide is True, then objects are hidden. Otherwise, they are
        totally wiped out.
        s   hide$N(
   R   Rq   Rj   R   R   R   R   R   Rs   R   (   R   R|   Rj   R   R   R   R   R   R   R?   R@   RI   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s$    	 
 c         C   s   d  t |  f |  i | <d  S(   N(   R   t   listR   (   R   R|   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   set_layer_at_list  s    c      
   C   s   x= |  i  i   D], \ } \ } } | p | | f |  i  | <q Wx |  i i   D]v } g  } x` t d t |   D]I } | | \ } } }	 }
 } | i | | |	 p | |
 p | | f  qr W| | (qP Wd S(   sm   
        This finds entries with a time of None, and replaces that
        time with the given time.
        i    N(   R   t   itemsRq   t   valuest   rangeRz   R   (   R   R   R   t   tR   t   llR   R   R   R?   R@   RI   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt	   set_times  s       .c         C   s   |  i  i | |  S(   sq   
        Returns true if something with the prefix of the given name
        is found in the scene list.
        (   R   R   (   R   R|   R:   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s    c         C   s   t  i i i d d d | |  } | i |  i |  |  i | \ } } | o~ x{ | D]o } t | t  i i i	  o | d |  } n | |  } t  i i i d d  } | i
 | | |  | } qV Wn | | _ | S(   sK   
        Creates a Fixed with the given layer name and scene_list.
        t   layoutt   fixedR   R   (   R   R+   R   t   MultiBoxt   append_scene_listRq   R   R   R   R   R   t
   layer_name(   R   R|   R   t   rvR   R   R~   t   f(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   make_layer  s    ! 	c   
      C   s   t    } x |  i D] } g  } x |  i | D] } | \ } } } } }	 | oe | i d  oU | oN | oG |	 i | | | |  }	 |	 d j o q- n | | | | |	 f } n | i |  q- W| |  i | <q Wd S(   s   
        Goes through all of the layers, and removes things that are
        hidden and are no longer being kept alive by their hide
        methods.
        s   hide$N(   R   Rq   t
   startswithRj   R   R   (
   R   R   R   R   R   R:   R   R?   R@   RI   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   remove_hidden
  s    	
  %N(   R   R	   R
   t   __version__Ru   R   R   R   R   R   R   R   R   Rm   R   R   R   R   R   R   (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s    			)			_	,#				t   Displayc           B   s}   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 e
 d  Z d	   Z d
   Z d   Z d   Z RS(   s  
    This is responsible for managing the display window.

    @ivar interface: The interface corresponding to this display.

    @ivar window: The window that is being presented to the user.

    @ivar fullscreen: Is the window in fullscreen mode?

    @ivar mouse: The mouse image, if we have one, or None if
    we do not have one.

    @ivar mouse_location: The mouse location the last time it was
    drawn, or None if it wasn't drawn the last time around.

    @ivar mouse_backing: A backing store image holding the background
    that goes behind the mouse.

    @ivar mouse_backing_pos: The position of the upper-left hand
    corner of the backing pos, relative to the window.

    @ivar full_redraw: Force a full redraw.

    @ivar next_frame: The time when the next frame should be drawn. In
    ms returned from pygame.time.get_ticks().

    @ivar window_caption: The current window caption.

    c      	   C   s
  | |  _  t i i i   t i i i d t  t i	 i
 d j  o t d   n y t i i   Wn n Xt i i   t i i   t i i i   t i i i   t i i i   t   t i i } t o t i i o t i i } n | o t i i i t i i |  | d t } | i   \ } } t | |  } t i i i | | f t  } | i | | | d | | d f  | } t o/ | i   d j o t i i i  | d  } n t i i! |  n t i" i# i$ } t i i%   }	 |	 o |	 i&   t i' @o
 t } n | |  _$ t( i) i* d t  o t } t i" i# i$ |  _$ n t i i+ }
 t i i, } d	 |  _- d	 |  _. d	 } | d
 j p | d j o xt i i/   D] \ } } d | | } | d j o qn | d
 j o | d j  o qq$n& | d j o | d j o qq$n | t i i+ j  p | t i i, j  o qn t i' } | }
 | } |
 t i i+ d |  _- | t i i, d |  _. qWn | o t i' } n t i i%   } | d  j	 o@ | i   |
 | f j o' | i&   t i' @| j o | |  _1 n% t i i i2 |
 | f | d  |  _1 d  |  _3 |  i4   t i5 i6 t  t i i7 o t |  _7 t i7 i8 t  n d  |  _7 t i7 i8 t  d  |  _9 d  |  _: d  |  _; d  |  _< t=   |  _> d  |  _? t |  _@ t |  _A d	 |  _B d  |  _C t iD iE tF tG  d  S(   NR   i   i   s$   Ren'Py requires pygame 1.8.1 to run.t   converti   i    t   RENPY_DISABLE_FULLSCREENi    t   widet   narrowg      ?g      ?(   i   i   i   (   i    i    (   i    i    (H   t	   interfaceR   R+   t	   presplasht   endt   videot
   movie_stopRm   R   R   t   vernumR8   t   macosxt   initt   fontt   scaleR&   t   joystickR   Rp   t   window_icont
   on_windowst   windows_icont   image_load_unscaledt   loadert   loadRP   t   maxt   pgrendert   surface_unscaledR   RT   t   real_smoothscalet   set_iconR-   t   preferencest
   fullscreent   get_surfacet	   get_flagst
   FULLSCREENt   ost   environRy   t   screen_widtht   screen_heightt   screen_xoffsett   screen_yoffsett
   list_modesR   t   windowt   set_modet   window_captiont   set_window_captionRD   t   set_grabt   mouset   set_visiblet   mouse_locationt   mouse_backingt   mouse_backing_post
   mouse_infoR   t   mouse_event_timet   mouse_old_visiblet   suppressed_blitt   full_redrawt
   next_framet   surftreeR   t	   set_timert   PERIODICt   PERIODIC_INTERVAL(   R   R   t   icont   imt   iwt   iht   imaxt	   square_imR   t   sR=   R>   t   fsflagt   wt   ht   ratiot
   old_window(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   F  s    		&
			 &	$	
											c         C   sT   t  i i t  i i } | |  i j o d  Sn | |  _ t i i | i	 d   d  S(   Ns   utf-8(
   R   Rp   t   window_titlet   storet   _window_subtitleR   R   R+   t   set_captiont   encode(   R   t   caption(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     s
    	c         C   s   t  i i   d  S(   N(   R   R+   t   iconify(   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR    s    c         C   s   t  i i } | d j o t Sn |  i } t i i   } d | } | | | j o
 | } n | | j  o | o t	 Sn | | } | |  _ t S(   sN   
        Uses the framerate to determine if we can and should redraw.
        g     @@N(
   R   Rp   t	   framerateR   R   R   R   R   R   Rm   (   R   t
   first_passR  R   R   t	   frametime(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   can_redraw  s    	


	c         C   s;   | i  t i j p t i p
 t i o t   |  _ n d  S(   N(   RQ   R   t   MOUSEMOTIONt   MOUSEBUTTONDOWNt   MOUSEBUTTONUPR   R   (   R   RA   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   mouse_event  s    'c         C   s   | |  _  | |  _ | \ } } } t i i i |  } | \ } } | i   \ }	 }
 | | } | | } | | f |  _ t i i i	 |	 |
 f t
  |  _ |  i i |  i d | | |	 |
 f  |  i i | | | f  | | |	 |
 f S(   s+   
        Actually shows the mouse.
        i    (   i    i    (   R   R   R   R+   R  t
   load_imageRP   R   R   t   surfaceRm   R   RT   R   (   R   t   post   infot   imgt   mxot   myoR   t   mxt   myt   mwt   mht   bxt   by(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   show_mouse  s    		

!%c         C   sT   |  i  i   } |  i i |  i  |  i  |  i | } d |  _  d |  _ d |  _ | S(   s+   
        Actually hides the mouse.
        N(   R   RP   R   RT   R   R   R   (   R   t   sizeR   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   hide_mouse-  s    			c         C   s  |  i  t i i t   j  o
 t } n t i i o t i i	 } |  i
 p5 |  i | j o t i
 i |  | |  _ n g  Sn |  i o g  Sn | o | } t i i i   p
 |  i i
 } | t i i
 j o t i i
 | } n  t i i
 t t i d d  } | |  i i t |  } t i
 i   } t i i i p
 d } n | |  i j o | o | |  i j o g  Sn g  } |  i o | i |  i    n | o4 | o- t i i i o | i |  i | |   n | S(   s   
        This draws the mouse to the screen, if necessary. It uses the
        buffer to minimize the amount of the screen that needs to be
        drawn, and only redraws if the mouse has actually been moved.
        t   default_mouseR   N(   R   R   Rp   t   mouse_hide_timeR   Rm   R  t   mouse_visibleR-   t
   less_mouseR   R   R   R   R   R+   R   t	   get_mouseR   t   getattrt   ticksRz   t   get_posR0   R   R   R   R   R.  R,  (   R   R,  t   visiblet
   mouse_kindt   animR"  R!  t   updates(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   draw_mouse>  s:    




c         C   s+   |  i    } | o t i i |  n d S(   s?   
        Draws the mouse, and then updates the screen.
        N(   R;  R   R+   t   update(   R   R:  (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   update_mouse{  s    c         C   s   t  i i i | t  i i t  i i  } | p g  } | i |  i t	   t  i i i
 |  i |  i |  i  } | o | i |  n t	 |  _ | i |  i t   t i i |  n
 t |  _ t  i i i   t  i i i   | |  _ | |  _ d S(   s#   
        Draws the screen.
        N(   R   R+   R4   t   render_screenRp   R   R   RG   R;  Rm   t   draw_screenR   R   R   R   R   R<  t   kill_old_screenR   t   take_focusesR   R   (   R   t   root_widgett   suppress_blitR   R:  t   damage(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRk     s$    	$			c         C   s?   y t  i i i |  i |  Wn t  i i o   q; n Xd S(   sE   
        Saves a full-size screenshot in the given filename.
        N(   R   R+   R   t   image_save_unscaledR   Rp   t   debug(   R   t   filename(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   save_screenshot  s    c         C   s   t  i i i |  i t  } t  i i i | |  } t  i i i | t  } t	 i
   } t  i i i | | d  | i   } | i   | S(   sS   
        Returns a string containing the contents of the window, as a PNG.
        i    (   R   R+   R   t   copy_surfaceR   R   R   t   smoothscaleRm   t	   cStringIOt   StringIOt   modulet   save_pngt   getvaluet   close(   R   R   RV   t   sioR   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   screenshot  s    
(   R   R	   R
   R   R   R  R  R  R,  R.  R   R;  R=  Rk   RH  RR  (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR   '  s   					"			=		%	t	   Interfacec           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z e d  Z	 d   Z
 e e d  Z d	   Z d
   Z d   Z d   Z d   Z d   Z e e d  Z e e e e d g  e d  Z d   Z RS(   s  
    This represents the user interface that interacts with the user.
    It manages the Display objects that display things to the user, and
    also handles accepting and responding to user input.

    @ivar display: The display that we used to display the screen.

    @ivar profile_time: The time of the last profiling.

    @ivar screenshot: A screenshot, or None if no screenshot has been
    taken.

    @ivar old_scene: The last thing that was displayed to the screen.

    @ivar transition: A map from layer name to the transition that will
    be applied the next time interact restarts.

    @ivar transition_time: A map from layer name to the time the transition
    involving that layer started.

    @ivar transition_from: A map from layer name to the scene that we're
    transitioning from on that layer.

    @ivar suppress_transition: If True, then the next transition will not
    happen.

    @ivar quick_quit: If true, a click on the delete button will
    cause an immediate quit.

    @ivar force_redraw: If True, a redraw is forced.

    @ivar restart_interaction: If True, the current interaction will
    be restarted.

    @ivar pushed_event: If not None, an event that was pushed back
    onto the stack.

    @ivar mouse: The name of the mouse cursor to use during the current
    interaction.

    @ivar ticks: The number of 20hz ticks.

    @ivar frame_time: The time at which we began drawing this frame.

    @ivar interact_time: The time of the start of the first frame of the current interact_core.

    @ivar time_event: A singleton ignored event.

    @ivar event_time: The time of the current event.

    @ivar timeout_time: The time at which the timeout will occur.

    c         C   s  t  |   |  _ t   |  _ d  |  _ h  |  _ h  |  _ h  |  _ h  |  _	 h  |  _
 t |  _ t |  _ t |  _ t |  _ d  |  _ d |  _ d |  _ d  |  _ d  |  _ d  |  _ d  |  _ t |  _ g  |  _ d |  _ d  |  _ t i i t  |  _ t  |  _! h  |  _" t |  _# x t$ i% i& t$ i% i' D] } | t$ i% i( j of t$ i% i( | \ } } } } t) d | d d d | d d d | d | d	 | d
 | d t   	|  i" | <qt)   |  i" | <qWg  |  _* d |  _+ d  S(   Ni    R   RY   R[   RZ   R\   t   xmaximumt   ymaximumt   xminimumt   yminimumt   clipping(,   R   R+   R   t   profile_timeR   RR  t	   old_scenet
   transitiont   ongoing_transitiont   transition_timet   transition_fromRm   t   suppress_transitiont
   quick_quitt   force_redrawt   restart_interactiont   pushed_eventR5  R   t   timeout_timet
   last_eventt   current_contextt   roll_forwardt   display_resett   preloadst
   frame_timet   interact_timeR   RD   t   Eventt	   TIMEEVENTt
   time_eventR   R0   t   layer_propertiesR   R   Rp   Rq   Rr   t   layer_clippingt   dictt   transition_info_stackt
   event_time(   R   R|   RB   RC   R  R  (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR     sX    																								 	c         C   s   |  i  i |  |  _ d S(   s   
        This takes a screenshot of the current screen, and stores it so
        that it can gotten using get_screenshot()
        N(   R+   RR  (   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   take_screenshotF  s    c         C   s!   |  i  p t d   n |  i  S(   su   
        Gets the current screenshot, as a string. Returns None if there isn't
        a current screenshot.
        s4   Trying to write a screenshot that hasn't been taken.(   RR  R8   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   get_screenshotO  s    
c         C   s   d |  _ d S(   s8   
        This deallocates the saved screenshot.
        N(   R   RR  (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   lose_screenshot[  s    c         C   sU   t  i i p d  Sn t  i i   i i o d  Sn t  i i o t  i i   n d  S(   N(	   R   R  t   _windowR-   R.   R/   R   Rp   t   empty_window(   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   show_windowc  s    c      	   C   s   t  i i o t  i i | |  } n | p
 |  i o |  i   t Sn7 |  i |  |  i d t d t  i i	 d d d |  Sd  S(   Nt   trans_pauset   suppress_overlayR   t   withR   (
   R   Rp   t   with_callbackR_  t	   with_noneRm   t   set_transitiont   interactR   t   overlay_during_with(   R   t   transt   pairedR   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   do_witho  s    
c         C   ss   |  i    |  i   t i i   i } |  i |  |  _ x! t i i	 D] } | i
 |  qE W| i   t | _ d S(   so   
        Implements the with None command, which sets the scene we will
        be transitioning from.
        N(   Ry  t   compute_overlayR   R-   R.   R/   t   compute_sceneRZ  Rp   R   R   R   Rm   R   (   R   R/   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR~  ~  s    

 
c         C   s+   |  i  o | o d Sn | |  i | <d S(   se   
        Sets the transition that will be performed as part of the next
        interaction.
        N(   R_  R[  (   R   R[  R|   t   force(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR    s    c         C   sY   |  i  o |  i  Sn t i i   } | i t i j o t i d  d Sn | |  _  | S(   sP   
        This peeks the next event. It returns None if no event exists.
        gMbP?N(	   Rc  R   RD   t   pollRQ   t   NOEVENTR   t   sleepR   (   R   RA   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   event_peek  s    
	c         C   s<   |  i  o |  i  } d |  _  n t i i   } | |  _ | S(   sa   
        Called to busy-wait for an event while we're waiting to
        redraw a frame.
        N(   Rc  R   R   RD   R  Re  (   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   event_poll  s    
		c         C   se   |  i  o# |  i  } d |  _  | |  _ | Sn z t i   t i i   } Wd t i   X| |  _ | S(   s~   
        This is in its own function so that we can track in the
        profiler how much time is spent in interact.
        N(	   Rc  R   Re  t   cpu_idlet   setR   RD   t   waitR   (   R   R   RA   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   event_wait  s    
			
	c         C   s   t  i i o d  Sn t  i i d  x t  i i D] } |   q2 Wt  i i   i	 i
 o" x t  i i D] } |   qf Wn t  i i   d  S(   Nt   overlay(   R   R  R{  t   uiR|   Rp   t   overlay_functionsR-   R.   R/   R   t   window_overlay_functionsRP  (   R   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR    s      c         C   s   h  } x; t  i i t  i i D]# } | i | |  i |  | | <q Wt  i i i d d  } h  | _ x6 t  i i D]( } | | | i | <| i	 | |  qr W| | d <| S(   sz   
        This converts scene lists into a dictionary mapping layer
        name to a Fixed containing that layer.
        R   R   N(   R   Rp   Rq   Rr   R   Ro  R+   R   R   R   R   (   R   R/   R   R|   R6   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR    s     !	 
c         C   sZ   t  i i i d  o1 |  i o& t |  _ t  i i d  t |  _ n t  i i    d S(   sD   
        This is called to handle the user invoking a quit.
        t   _confirm_quitN(	   R   R-   t   scriptt	   has_labelR`  R   t   call_in_new_contextRm   t   QuitException(   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt
   quit_event  s
    !	c   	   	   K   s   | p |  i    n |  i } g  |  _ zb t t i _ x t i i D] } |   qC Wt } x' | o |  i	 d | |  \ } } q] W| SWd | o  t i i
   i } | i   n h  |  _ h  |  _ h  |  _ t |  _ t t i i
   i _ Xd S(   s   
        This handles an interaction, restarting it if necessary. All of the
        keyword arguments are passed off to interact_core.
        Ri  N(   Ry  Ri  Rm   R   R-   t   after_rollbackRp   t   start_interact_callbacksR   t   interact_coreR.   R/   R   R\  R]  R^  Rb  R   (	   R   R   t   suppress_windowt   kwargsRi  R   t   repeatR   R/   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR    s*    		 
 				R   c   .         s  |  _  t i i p
 t i i  t  _ x]  i D]R } |  i	 j o q5 n  i |  i
 | < i	 |  i | <d  i | <q5 W i i    o+  i
 i    i i    i i   n | og  i
 p t d f Sn d  i
 j o t d f Sn  o t d f Sn  i	 p t d f Sq8n t  _ |  _ t   }	 |	 }
 x t i i D] } |   qfW i i   t i i i i   t i i i i   t i i t i t t t f  t i i   i!  t i i"   i# } | i$   | p  i%   n t i i i& d d  } h  | _' g   | pu x. t i i( D]  } | i) |   i* |  qHW| d j	 o3 t i i+ i, |  } | i) |   i* |  qn  i- |    t i i. o4 x1   i/   D] } | i0 t i i i i1  qWn t i i i& d d  } h  | _'      f d   } x! t i i' D] } | | |  qFWd  i
 j oS oKt i i i& d d  } h  | _' xB t i i' D]4 }  i d i' | } | | i' | <| i) |  qW i
 d d | d |  } t2 | t3  p t4 d |   n | i5    i i1 d d  } | i) | | |  | oh t i i+ i6   } | i) |   i* |  t i i+ i7 | i8  } | i) | | |   i* |  qn | i) |  x! t i i9 D] } | | |  qWt i i+ i: i   t i i; i<   | i= d       _	 t i i> i?   t i i@ iA   tB } tB } d  _C t } t } d } d } d } t iD iD iE   zm	xA	| d j o3	 i iF t i iG iF j p
  iH o" tI    _ tB } t  _H n  iJ o tB } t  _J n | o| p t i iK tL  o i iM |  ot i i; iE   }  t    _N  iC p  iN  _C n  i i5 | |   | oU | iO  iC  xB  i iP   D]- \ } }! |! d j o  iC  i | <qqWn t i iQ d 7_Q t i iR o- t   }" d	 |"  iN GHd
 |"  iS GHn | oe  iT o[ t i iU   \ }# }$ |#  i iV 8}# |$  i iW 8}$ t i i> iX  iT |# |$ d t n t } t } t iY iZ t d  t i i t g  d } n | o  i i[   n  i o tB d f Sn | p t i i@ iA   } | o  i\   o t i i. p | i0 t i i i i]  n x' | D] } | i0 t i i i i]  qkWt i i"   i0 t i i i i]  t i i i i^   tB } n | o2  i\   o$ t i iR o t    _S qqn yxd }% d }& t i i@ i_   }' |' ok | oc |' | j oR |' t   }( t` |( d  }( |( }% t iY iZ t ta tb |( d  d   |' } q	n t iY iZ t d   ic p t iY iZ t d  d }) n  ic t   }( t` |( d  }( |( }% |( d j  o) d  _c  i! }) t iY iZ t d  nE d })  ic | j o. t iY iZ t tb |( d d    ic } n | oG | o?  i\   o1 |% d j o$ |& d j o t id ie   tB } n |) d j o' | o  if   }) q
 ig   }) n |) ih t ii j o wn t i iR o t    _S n |) ih t j ob d } t i i t g   i\   }* |* o2 |* ih t ii t t t ij f j o  if   }) qn |) ih t j o d } wn |) ih t j oc d tk t i i1 t g   }+  il |+ 7_l t i im o t i im   n t iD iD in   wn t iD iD i |)  o wn  i io |)  t i ip i |)  }) |) p wn t i i+ i |)  |) ih t ij j o  iq   n |) ih t i j oK t i i1 t i g  }, tk |,  o |, d }) n tr o tB  _s qn |) ih t it j o" |) iu d @o |) iv  _s qEn tw |) d t i iU    \ }# }$ |#  i iV 8}# |$  i iW 8}$ t    _x }
 t i i> iX |) |# |$  } | d j o | i |) |# |$ d  } n | d j o t i i> iy |)  } n | d j	 o Pn t i iz o^ t i i+ iz |)  oH  i i{ i| |# |$ t i i} t i i~  }- t i i t i iz |-  n Wn& t j
 o t i i   i!  n X| t i i@ iA   O}  i o tB d f SqqW| o | o tB  _ n t | f SWd x! t i i~ D] } | i |  qWt i i i i   t iY iZ t d  t iY iZ t d  t i i"   i |
 |	 7_ tB  _ Xd S(   s  
        This handles one cycle of displaying an image to the user,
        and then responding to user input.

        @param show_mouse: Should the mouse be shown during this
        interaction? Only advisory, and usually doesn't work.

        @param trans_pause: If given, we must have a transition. Should we
        add a pause behavior during the transition?

        @param suppress_overlay: This suppresses the display of the overlay.
        @param suppress_underlay: This suppresses the display of the underlay.
        R   R   c            s    | }  i  |    i i | d   o  o   i | d   i | d |  } t | t  p t d |   n   i i | d   } |  i	 | | |  | |  i
 | <n | |  i
 | <|  i	 |  d  S(   Nt
   old_widgett
   new_widgets1   Expected transition to be a displayable, not a %r(   R   R\  Ry   R   R^  R   R   R8   R]  R   Rq   (   t   whereR|   t   scene_layerR  R]  (   R   t   sceneR_  t   focus_roots(    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt	   add_layer  s    
	R  R  s1   Expected transition to be a displayable, not a %rc         S   s
   |  i    S(    (   RK   (   R   (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRM     s    i   s    Profile: Redraw took %f seconds.s&   Profile: %f seconds to complete event.R   i    i  i  g      ?iR!  N(   Rg  R   Rp   t   skippingR-   t   less_updatesRm   R_  R[  RZ  R\  R^  R   R]  R   Rb  R   R   t   interact_callbacksR+   R   R  t   cachet   tickR   t   size_groupsR   RD   R  R  Rm  t   REDRAWt   postRn  R.   R/   R   R  R   Rq   t   underlayR   R   t   behaviort   RollForwardR  t   load_before_transitiont
   itervaluesRN   Ry   R   R   R8   Rk   t   SayBehaviort   PauseBehaviort   delayRr   t   adj_registeredR   t   early_interactRJ   R   t   before_interactR4   t   process_redrawsR   Rk  R&   R  R   R   Rh  R   Ra  t   peekt
   ALL_EVENTSR  Rj  R   t	   iteritemst   framest   profileRY  Re  R6  R   R   t   mouse_handlerR   R  R=  R  t   preload_imaget   preloadt   redraw_timet   minR   t   intRd  t   loadsavet   autosaveR  R  RQ   R  t   QUITRz   R5  t   periodic_callbackt   periodicR  R   R  R   R0   t   ACTIVEEVENTt   statet   gainR4  Rs  t   key_handlert	   inspectorR   t   main_displayables_at_pointR   R   t   invoke_in_new_contextR   t   end_tickt   runtime(.   R   R,  Rz  R{  t   suppress_underlayR   Ri  Rg  R   t
   start_timet   end_timeR   R/   RB  t   rfwR  t   layers_rootR  R|   t   old_rootRI   R  R]  t   sbt   pbt   needs_redrawR  t   did_predictiont   did_autosavet   old_timeout_timet   old_redraw_timeR   RC  t   vt   new_timeRB   RC   t	   redraw_int
   timeout_inR  t	   time_leftRA   t   ev2t   eventst   evsR   (    (   R  R   R  R_  s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyR  ?  s   		
 

			 

	  !	 	 	
 		&

 	&

 "
&

		!8
)!#+!
 c         C   sS   | d j  o d  Sn |  i  o  t |  i | |  i   |  _  n |  i | |  _  d  S(   Ni    (   Rd  R  Rs  (   R   t   offset(    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyt   timeoutT  s
    
 (   R   R	   R
   R   Rt  Ru  Rv  Ry  Rm   R  R~  R   R  R  R  R  R  R  R  R   R  R  R  (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pyRS    s4   5	G												/  (&   R   R   t   sysR   R   RK  t	   threadingt   platformR   t   pygame.macosxRl  R  R   t	   USEREVENTRm  R  t   JOYEVENTR  t   _[1]R   R   R  R  R   R   R   R   R8   R   RR   R   t   objectt   ObjectR   Ro   R   R   RS  (    (    (    s:   D:\Version 1-0-7\Games\Katawa Shoujo\renpy\display\core.pys   <module>   s@   
L		 0/ x 