a
    dV                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlT d dlT d dlT d dlmZ ed	Zed
ZeegZdZeZG dd deZdS )    )UUID)StringIO)Callable)Token)ATN)ATNType)*)ATNDeserializationOptionsz$AADB8D7E-AEEF-4415-AD2B-8204D6CF042Ez$59627784-3BE5-417A-B9EB-8131A7286089   c                   @   sx  e Zd ZdZdnedddZeedddZed	d
dZ	ed	ddZ
dd Zdd Zdd ZedddZedddZedddZeeeg ef dddZeeddd Zedd!d"Zedd#d$Zedd%d&Zeed'd(d)Zeed*d+d,Zedd-d.Zedd/d0Zdoed1d2d3Z d4d5 Z!d6d7 Z"d8d9 Z#d:d; Z$d<d= d>d= d?d= d@d= dAd= dBd= dCd= dDd= dEd= dFd= dGd= gZ%eeeeeeeedHdIdJZ&dKd= dLd= dMd= dNd= dOd= dPd= dQd= dRd= dSd= dTd= dUd= dVd= dWd= gZ'eedXdYdZZ(d[Z)d\Z*d]Z+d^Z,d_Z-d`Z.daZ/dbZ0dcd= ddd= ded= dfd= dgd= dhd= did= djd= gZ1eeedkdldmZ2dS )pATNDeserializer)deserializationOptionsdataposuuidN)optionsc                 C   s   |d u rt j}|| _d S N)r	   ZdefaultOptionsr   )selfr    r   c/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/antlr4/atn/ATNDeserializer.py__init__$   s    zATNDeserializer.__init__)feature
actualUuidc                 C   s(   t |}|dk rdS t |}||kS )Nr   F)SUPPORTED_UUIDSindex)r   r   r   Zidx1Zidx2r   r   r   isFeatureSupported5   s
    

z"ATNDeserializer.isFeatureSupported)r   c                 C   s   |  | |   |   |  }| | | | | | g }| ||| j | 	t
| jrr| ||| j | || | | | | | | | | | jjr|jtjkr| | | | |S r   )resetcheckVersion	checkUUIDreadATN
readStates	readRules	readModesreadSetsreadIntr   ADDED_UNICODE_SMPr   	readInt32	readEdgesreadDecisionsreadLexerActionsmarkPrecedenceDecisions	verifyATNr   generateRuleBypassTransitionsgrammarTyper   PARSER)r   r   atnsetsr   r   r   deserialize<   s,    










zATNDeserializer.deserializec                    s:   dd   fdd|D }t |d |d< || _d| _d S )Nc                 S   s    t | }|dkr|d S |d S )N      i  )ord)cvr   r   r   adjustX   s    z%ATNDeserializer.reset.<locals>.adjustc                    s   g | ]} |qS r   r   ).0r4   r6   r   r   
<listcomp>[       z)ATNDeserializer.reset.<locals>.<listcomp>r   )r3   r   r   )r   r   tempr   r8   r   r   W   s
    zATNDeserializer.resetc                 C   s4   |   }|tkr0tdt| d tt d d S )Nz'Could not deserialize ATN with version  (expected z).)r#   SERIALIZED_VERSION	Exceptionstr)r   versionr   r   r   r   a   s    zATNDeserializer.checkVersionc                 C   s>   |   }|tvr4tdt| d tt d |t|| _d S )Nz%Could not deserialize ATN with UUID: r<   z or a legacy UUID).)readUUIDr   r>   r?   SERIALIZED_UUIDr   )r   r   r   r   r   r   f   s    zATNDeserializer.checkUUIDc                 C   s$   |   }t|}|   }t||S r   )r#   r   ZfromOrdinalr   )r   idxr,   maxTokenTyper   r   r   r   m   s    
zATNDeserializer.readATN)r.   c                 C   sD  g }g }|   }td|D ]}|   }|tjkr<|d  q|   }|dkrPd}| ||}|tjkr~|   }	|||	f n t|t	r|   }
|||
f || q|D ]}|j
|d  |d _q|D ]}|j
|d  |d _q|   }td|D ]}|   }d|j
| _q|   }td|D ]}|   }d|j
| _q$d S )Nr     r1   T)r#   rangeATNStateZINVALID_TYPEaddStatestateFactoryZLOOP_ENDappend
isinstanceBlockStartStatestatesloopBackStateendState	nonGreedyisPrecedenceRule)r   r.   ZloopBackStateNumbersZendStateNumbersZnstatesistype	ruleIndexsZloopBackStateNumberZendStateNumberpairZnumNonGreedyStatesZstateNumberZnumPrecedenceStatesr   r   r   r   s   s>    



zATNDeserializer.readStatesc                 C   s   |   }|jtjkr dg| |_dg| |_td|D ]L}|   }|j| }||j|< |jtjkr6|   }|dkrxtj	}||j|< q6dg| |_
|jD ]*}t|tsq||j
|j< ||j|j _qd S )Nr   rE   )r#   r,   r   LEXERruleToTokenTyperuleToStartStaterG   rN   r   EOFruleToStopStaterL   RuleStopStaterU   	stopState)r   r.   ZnrulesrS   rV   
startState	tokenTypestater   r   r   r       s&    



zATNDeserializer.readRulesc                 C   s6   |   }td|D ]}|   }|j|j|  qd S Nr   )r#   rG   ZmodeToStartStaterK   rN   )r   r.   ZnmodesrS   rV   r   r   r   r!      s    zATNDeserializer.readModes)r.   r/   readUnicodec                 C   s~   |   }td|D ]f}t }|| |   }|   }|dkrH|d td|D ]$}	| }
| }|t|
|d  qRqd S )Nr   rF   r1   )r#   rG   ZIntervalSetrK   ZaddOneZaddRange)r   r.   r/   rc   mrS   ZisetnZcontainsEofji1i2r   r   r   r"      s    

zATNDeserializer.readSets)r.   r/   c                 C   s  |   }td|D ]`}|   }|   }|   }|   }|   }	|   }
| ||||||	|
|}|j| }|| q|jD ]v}tdt|jD ]`}|j| }t|tsqd}|j	|j
j jr|jdkr|j
j}t|j|}|j|j
j | qqz|jD ]}t|tr:|jd u rtd|jjd ur2td||j_t|tr~tdt|jD ]$}|j| j
}t|trV||_qVqt|trtdt|jD ]$}|j| j
}t|tr||_qqd S )Nr   rF   IllegalState)r#   rG   edgeFactoryrN   addTransitionlentransitionsrL   RuleTransitionrZ   targetrU   rR   
precedenceEpsilonTransitionZfollowStater\   rM   rP   r>   r_   PlusLoopbackStatePlusBlockStartStaterO   StarLoopbackStateStarLoopEntryState)r   r.   r/   ZnedgesrS   srctrgttypearg1arg2arg3ZtransZsrcStatera   tZoutermostPrecedenceReturnro   r   r   r   r&      sN    






zATNDeserializer.readEdgesc                 C   s@   |   }td|D ](}|   }|j| }|j| ||_qd S rb   )r#   rG   rN   ZdecisionToStaterK   decision)r   r.   Z
ndecisionsrS   rV   ZdecStater   r   r   r'      s    
zATNDeserializer.readDecisionsc                 C   s|   |j tjkrx|  }d g| |_td|D ]L}|  }|  }|dkrJd}|  }|dkr^d}| |||}||j|< q*d S )Nr   rE   rF   )r,   r   rX   r#   ZlexerActionsrG   lexerActionFactory)r   r.   countrS   Z
actionTypedata1data2ZlexerActionr   r   r   r(      s    z ATNDeserializer.readLexerActionsc                 C   sZ   t |j}dg| |_td|D ]}|j| d |j|< q td|D ]}| || qDd S )Nr   r1   )rl   rZ   rY   rG   rD   generateRuleBypassTransition)r   r.   r   rS   r   r   r   r+     s    
z-ATNDeserializer.generateRuleBypassTransitions)r.   rC   c                 C   sf  t  }||_|| t }||_|| ||_|| ||_d }|j| jrd }|j	D ]$}| 
||r\|}|jjd } qq\|d u rtdn
|j| }|j	D ]*}|jD ]}||krq|j|kr||_qq|j| }	t|	j}
|
dkr||	j|
d   |	jd= q|j| t| |t| t }|| |t||j|  |t| d S )Nr   zDCouldn't identify final state of the precedence rule prefix section.r1   rF   )BasicBlockStartStaterU   rI   BlockEndStaterP   ZdefineDecisionStater_   rZ   rR   rN   stateIsEndStateForrO   rm   r>   r\   ro   rl   rk   rq   
BasicStateAtomTransitionrY   )r   r.   rC   ZbypassStartZ
bypassStopZexcludeTransitionrP   ra   Z
transitionrZ   r   Z
matchStater   r   r   r     sJ    














z,ATNDeserializer.generateRuleBypassTransition)ra   rC   c                 C   sd   |j |krd S t|tsd S |jt|jd  j}t|ts@d S |jr\t|jd jtr\|S d S d S )Nr1   r   )	rU   rL   ru   rm   rl   ro   LoopEndStateepsilonOnlyTransitionsr]   )r   ra   rC   maybeLoopEndStater   r   r   r   R  s    


z"ATNDeserializer.stateIsEndStateForc                 C   sh   |j D ]\}t|tsq|j|j jr|jt|jd  j}t|t	r|j
rt|jd jtrd|_qd S )Nr1   r   T)rN   rL   ru   rZ   rU   rR   rm   rl   ro   r   r   r]   ZisPrecedenceDecision)r   r.   ra   r   r   r   r   r)   j  s    


z'ATNDeserializer.markPrecedenceDecisionsc                 C   s  | j jsd S |jD ]}|d u r"q| |jp8t|jdk t|trV| |j	d u t|t
r| |j	d u | t|jdk t|jd jtr| t|jd jt | |j  n@t|jd jtr| t|jd jt | |j ntdt|tr6| t|jdk | t|jd jt
 t|trR| |j	d u t|trn| |jd u t|tr| |jd u t|tr| |jd u t|tr| t|jdkp|jdk q| t|jdkpt|t qd S )Nr1   r2   r   ri   )r   r*   rN   checkConditionr   rl   rm   rL   rs   rO   ru   ro   StarBlockStartStater   rQ   r>   rt   RuleStartStater^   rM   rP   r   r_   ZDecisionStater}   r]   )r   r.   ra   r   r   r   r*   z  s@    

"zATNDeserializer.verifyATN)	conditionc                 C   s   |s|d u rd}t |d S )Nri   )r>   )r   r   messager   r   r   r     s    zATNDeserializer.checkConditionc                 C   s   | j | j }|  jd7  _|S )Nr1   )r   r   )r   rS   r   r   r   r#     s    zATNDeserializer.readIntc                 C   s   |   }|   }||d> B S )N   )r#   r   lowhighr   r   r   r%     s    zATNDeserializer.readInt32c                 C   s    |   }|   }|d@ |d> B S )Nl        )r%   r   r   r   r   readLong  s    zATNDeserializer.readLongc                 C   s*   |   }|   }|d@ |d> B }t|dS )Nl    @   )int)r   r   )r   r   r   ZallBitsr   r   r   rA     s    zATNDeserializer.readUUIDc                 C   s   d S r   r   )argsr   r   r   <lambda>  r:   zATNDeserializer.<lambda>c                 C   s   t |S r   )rq   r.   rv   rw   ry   rz   r{   r/   ro   r   r   r   r     r:   c                 C   s"   |dkrt |tj|S t |||S rb   )ZRangeTransitionr   r[   r   r   r   r   r     s    c                 C   s   t | j| |||S r   )rn   rN   r   r   r   r   r     s    c                 C   s   t ||||dkS rb   )ZPredicateTransitionr   r   r   r   r     s    c                 C   s   |dkrt |tjS t ||S rb   )r   r   r[   r   r   r   r   r     s    c                 C   s   t ||||dkS rb   )ZActionTransitionr   r   r   r   r     s    c                 C   s   t ||| S r   )ZSetTransitionr   r   r   r   r     s    c                 C   s   t ||| S r   )ZNotSetTransitionr   r   r   r   r     s    c                 C   s   t |S r   )ZWildcardTransitionr   r   r   r   r     s    c                 C   s
   t ||S r   )ZPrecedencePredicateTransitionr   r   r   r   r     s    )r.   typerv   rw   ry   rz   r{   r/   c	           
   	   C   s\   |j | }	|t| jks&| j| d u r<tdt| d n| j| ||||||||	S d S )NzThe specified transition type:  is not valid.)rN   rl   edgeFactoriesr>   r?   )
r   r.   r   rv   rw   ry   rz   r{   r/   ro   r   r   r   rj     s    
zATNDeserializer.edgeFactoryc                   C   s   d S r   r   r   r   r   r   r     r:   c                   C   s   t  S r   )r   r   r   r   r   r     r:   c                   C   s   t  S r   )r   r   r   r   r   r     r:   c                   C   s   t  S r   )r   r   r   r   r   r     r:   c                   C   s   t  S r   )rs   r   r   r   r   r     r:   c                   C   s   t  S r   )r   r   r   r   r   r     r:   c                   C   s   t  S r   )ZTokensStartStater   r   r   r   r     r:   c                   C   s   t  S r   )r]   r   r   r   r   r     r:   c                   C   s   t  S r   )r   r   r   r   r   r     r:   c                   C   s   t  S r   )rt   r   r   r   r   r     r:   c                   C   s   t  S r   )ru   r   r   r   r   r     r:   c                   C   s   t  S r   )rr   r   r   r   r   r     r:   c                   C   s   t  S r   )r   r   r   r   r   r     r:   )r   rU   c                 C   sP   |t | jks| j| d u r2tdt| d n| j|  }|d urL||_|S )NzThe specified state type r   )rl   stateFactoriesr>   r?   rU   )r   r   rU   rV   r   r   r   rJ     s    zATNDeserializer.stateFactoryr   r1   r2   r
               c                 C   s   t | S r   )ZLexerChannelActionr   r   r   r   r   r     r:   c                 C   s
   t | |S r   )ZLexerCustomActionr   r   r   r   r     r:   c                 C   s   t | S r   )ZLexerModeActionr   r   r   r   r     r:   c                 C   s   t jS r   )ZLexerMoreActionINSTANCEr   r   r   r   r     r:   c                 C   s   t jS r   )ZLexerPopModeActionr   r   r   r   r   r     r:   c                 C   s   t | S r   )ZLexerPushModeActionr   r   r   r   r     r:   c                 C   s   t jS r   )ZLexerSkipActionr   r   r   r   r   r     r:   c                 C   s   t | S r   )ZLexerTypeActionr   r   r   r   r   	  r:   )r   r   r   c                 C   sF   |t | jks| j| d u r2tdt| d n| j| ||S d S )Nz The specified lexer action type r   )rl   actionFactoriesr>   r?   )r   r   r   r   r   r   r   r~     s    z"ATNDeserializer.lexerActionFactory)N)N)3__name__
__module____qualname__	__slots__r	   r   r   r   r?   r0   r   r   r   r   r   r   r    r!   listr   r   r"   r&   r'   r(   r+   r   rH   r   r)   r*   boolr   r#   r%   r   rA   r   rj   r   rJ   ZCHANNELZCUSTOMZMODEZMOREZPOP_MODEZ	PUSH_MODEZSKIPZTYPEr   r~   r   r   r   r   r   !   s   
)/
:/	
r   N)r   r   ior   typingr   Zantlr4.Tokenr   Zantlr4.atn.ATNr   Zantlr4.atn.ATNTyper   Zantlr4.atn.ATNStateZantlr4.atn.TransitionZantlr4.atn.LexerActionZ$antlr4.atn.ATNDeserializationOptionsr	   ZBASE_SERIALIZED_UUIDr$   r   r=   rB   objectr   r   r   r   r   <module>   s   