§
    7xÅjÕì  ã                   óÌ  — 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ZddlZddl	Z	ddl
mZmZ ddlmZmZ ddlmZmZmZmZmZmZ  ej        e¦  «        ZeZ G d„ d¦  «        Zd„ Zd	„ Z G d
„ de¦  «        Z G d„ d¦  «        Z  G d„ de ¦  «        Z! G d„ de!¦  «        Z" G d„ de"¦  «        Z# G d„ de ¦  «        Z$ G d„ de ¦  «        Z% G d„ de ¦  «        Z& G d„ de&e$¦  «        Z' G d„ de&e!¦  «        Z( G d„ de&e%¦  «        Z) G d „ d!e$¦  «        Z* G d"„ d#e ¦  «        Z+ G d$„ d%e ¦  «        Z, G d&„ d'e+e$¦  «        Z- G d(„ d)e,e%¦  «        Z. G d*„ d+e+e!¦  «        Z/e#e"e*e-e/e.d,œZ0dS )-a»  Response parsers for the various protocol types.

The module contains classes that can take an HTTP response, and given
an output shape, parse the response into a dict according to the
rules in the output shape.

There are many similarities amongst the different protocols with regard
to response parsing, and the code is structured in a way to avoid
code duplication when possible.  The diagram below is a diagram
showing the inheritance hierarchy of the response classes.

::


                                +-------------------+
                                |   ResponseParser  |
                                +-------------------+
                                ^    ^    ^   ^   ^
                                |    |    |   |   |
                                |    |    |   |   +--------------------------------------------+
                                |    |    |   +-----------------------------+                  |
                                |    |    |                                 |                  |
           +--------------------+    |    +----------------+                |                  |
           |                         |                     |                |                  |
+----------+----------+       +------+-------+     +-------+------+  +------+-------+   +------+--------+
|BaseXMLResponseParser|       |BaseRestParser|     |BaseJSONParser|  |BaseCBORParser|   |BaseRpcV2Parser|
+---------------------+       +--------------+     +--------------+  +----------+---+   +-+-------------+
          ^         ^          ^           ^        ^        ^                  ^         ^
          |         |          |           |        |        |                  |         |
          |         |          |           |        |        |                  |         |
          |        ++----------+-+       +-+--------+---+    |              +---+---------+-+
          |        |RestXMLParser|       |RestJSONParser|    |              |RpcV2CBORParser|
    +-----+-----+  +-------------+       +--------------+    |              +---+---------+-+
    |QueryParser|                                            |
    +-----------+                                       +----+-----+
                                                        |JSONParser|
                                                        +----------+

The diagram above shows that there is a base class, ``ResponseParser`` that
contains logic that is similar amongst all the different protocols (``query``,
``json``, ``rest-json``, ``rest-xml``, ``smithy-rpc-v2-cbor``).  Amongst the various services
there is shared logic that can be grouped several ways:

* The ``query`` and ``rest-xml`` both have XML bodies that are parsed in the
  same way.
* The ``json`` and ``rest-json`` protocols both have JSON bodies that are
  parsed in the same way.
* The ``rest-json`` and ``rest-xml`` protocols have additional attributes
  besides body parameters that are parsed the same (headers, query string,
  status code).

This is reflected in the class diagram above.  The ``BaseXMLResponseParser``
and the BaseJSONParser contain logic for parsing the XML/JSON body,
and the BaseRestParser contains logic for parsing out attributes that
come from other parts of the HTTP response.  Classes like the
``RestXMLParser`` inherit from the ``BaseXMLResponseParser`` to get the
XML body parsing logic and the ``BaseRestParser`` to get the HTTP
header/status code/query string parsing.

Additionally, there are event stream parsers that are used by the other parsers
to wrap streaming bodies that represent a stream of events. The
BaseEventStreamParser extends from ResponseParser and defines the logic for
parsing values from the headers and payload of a message from the underlying
binary encoding protocol. Currently, event streams support parsing bodies
encoded as JSON and XML through the following hierarchy.


                                  +--------------+
                                  |ResponseParser|
                                  +--------------+
                                    ^    ^    ^
               +--------------------+    |    +------------------+
               |                         |                       |
    +----------+----------+   +----------+----------+    +-------+------+
    |BaseXMLResponseParser|   |BaseEventStreamParser|    |BaseJSONParser|
    +---------------------+   +---------------------+    +--------------+
                     ^                ^        ^                 ^
                     |                |        |                 |
                     |                |        |                 |
                   +-+----------------+-+    +-+-----------------+-+
                   |EventStreamXMLParser|    |EventStreamJSONParser|
                   +--------------------+    +---------------------+

Return Values
=============

Each call to ``parse()`` returns a dict has this form::

    Standard Response

    {
      "ResponseMetadata": {"RequestId": <requestid>}
      <response keys>
    }

    Error response

    {
      "ResponseMetadata": {"RequestId": <requestid>}
      "Error": {
        "Code": <string>,
        "Message": <string>,
        "Type": <string>,
        <additional keys>
      }
    }

é    N)ÚETreeÚXMLParseError)ÚEventStreamÚNoInitialResponseError)ÚCachedPropertyÚensure_booleanÚis_json_value_headerÚlowercase_dictÚmerge_dictsÚparse_timestampc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚResponseParserFactoryc                 ó   — i | _         d S ©N)Ú	_defaults©Úselfs    úAC:\Projects\Historical\venv\Lib\site-packages\botocore/parsers.pyÚ__init__zResponseParserFactory.__init__”   s   € ØˆŒˆˆó    c                 ó:   — | j                              |¦  «         dS )aO  Set default arguments when a parser instance is created.

        You can specify any kwargs that are allowed by a ResponseParser
        class.  There are currently two arguments:

            * timestamp_parser - A callable that can parse a timestamp string
            * blob_parser - A callable that can parse a blob type

        N)r   Úupdate)r   Úkwargss     r   Úset_parser_defaultsz)ResponseParserFactory.set_parser_defaults—   s    € ð 	Œ×Ò˜fÑ%Ô%Ð%Ð%Ð%r   c                 ó6   — t           |         } |di | j        ¤ŽS )N© )ÚPROTOCOL_PARSERSr   )r   Úprotocol_nameÚ
parser_clss      r   Úcreate_parserz#ResponseParserFactory.create_parser£   s$   € Ý% mÔ4ˆ
ØˆzÐ+Ð+˜DœNÐ+Ð+Ð+r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r    r   r   r   r   r   “   sA   € € € € € ðð ð ð
&ð 
&ð 
&ð,ð ,ð ,ð ,ð ,r   r   c                 óD   — t          ¦   «                              | ¦  «        S r   )r   r    )Úprotocols    r   r    r    ¨   s   € Ý Ñ"Ô"×0Ò0°Ñ:Ô:Ð:r   c                 ó   ‡ — ˆ fd„}|S )Nc                 óZ   •— t          |d¦  «        r|j        }|€d}n|} ‰| ||¦  «        S )NÚtextÚ )Úhasattrr(   )r   ÚshapeÚnode_or_stringr(   Úfuncs       €r   Ú_get_text_contentz(_text_content.<locals>._get_text_content²   sC   ø€ Ý�> 6Ñ*Ô*ð 	"Ø!Ô&ˆDØˆ|ð �øà!ˆDØˆt�D˜% Ñ&Ô&Ð&r   r   )r-   r.   s   ` r   Ú_text_contentr/   ¬   s$   ø€ ð
'ð 
'ð 
'ð 
'ð 
'ð Ðr   c                   ó   — e Zd ZdS )ÚResponseParserErrorN)r!   r"   r#   r   r   r   r1   r1   Á   s   € € € € € Ø€Dr   r1   c                   óŒ   — e Zd ZdZdZdZdZd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„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚResponseParserao  Base class for response parsing.

    This class represents the interface that all ResponseParsers for the
    various protocols must implement.

    This class will take an HTTP response and a model shape and parse the
    HTTP response into a dictionary.

    There is a single public method exposed: ``parse``.  See the ``parse``
    docstring for more info.

    úutf-8N)ÚheaderÚheadersÚ
statusCodec                 óœ   — |€t           }|| _        |€| j        }|| _        d | _        | j        �|                      ||¦  «        | _        d S d S r   )ÚDEFAULT_TIMESTAMP_PARSERÚ_timestamp_parserÚ_default_blob_parserÚ_blob_parserÚ_event_stream_parserÚEVENT_STREAM_PARSER_CLS)r   Útimestamp_parserÚblob_parsers      r   r   zResponseParser.__init__Û   sh   € ØÐ#Ý7ÐØ!1ˆÔØÐØÔ3ˆKØ'ˆÔØ$(ˆÔ!ØÔ'Ð3Ø(,×(DÒ(DØ  +ñ)ô )ˆDÔ%Ð%Ð%ð 4Ð3r   c                 ó*   — t          j        |¦  «        S r   )Úbase64Ú	b64decode©r   Úvalues     r   r;   z#ResponseParser._default_blob_parserè   s   € õ Ô Ñ&Ô&Ð&r   c                 ó¾  — t                                d|d         ¦  «         t                                d|d         ¦  «         |d         dk    ro|                      |¦  «        r|                      |¦  «        }nZ|                      |¦  «        r|                      ||¦  «        }|S |                      ||¦  «        }n|                      ||¦  «        }|r|j         	                    d¦  «        r|S t          |t          ¦  «        rV| 	                    di ¦  «        }|d         |d	<   |d         }t          |¦  «        |d
<   ||d<   |                      ||¦  «         |S )a>  Parse the HTTP response given a shape.

        :param response: The HTTP response dictionary.  This is a dictionary
            that represents the HTTP request.  The dictionary must have the
            following keys, ``body``, ``headers``, and ``status_code``.

        :param shape: The model shape describing the expected output.
        :return: Returns a dictionary representing the parsed response
            described by the model.  In addition to the shape described from
            the model, each response will also have a ``ResponseMetadata``
            which contains metadata about the response, which contains at least
            two keys containing ``RequestId`` and ``HTTPStatusCode``.  Some
            responses may populate additional keys, but ``RequestId`` will
            always be present.

        zResponse headers: %rr6   zResponse body:
%rÚbodyÚstatus_codei-  ÚeventstreamÚResponseMetadataÚHTTPStatusCodeÚHTTPHeaders)ÚLOGÚdebugÚ_is_generic_error_responseÚ_do_generic_error_parseÚ_is_modeled_error_shapeÚ_do_modeled_error_parseÚ_do_error_parseÚ	_do_parseÚserializationÚgetÚ
isinstanceÚdictr
   Ú_add_checksum_response_metadata)r   Úresponser+   ÚparsedÚresponse_metadatar6   s         r   ÚparsezResponseParser.parseî   su  € õ" 	�	Š	Ð(¨(°9Ô*=Ñ>Ô>Ð>Ý�	Š	Ð&¨°Ô(8Ñ9Ô9Ð9Ø�MÔ" cÒ)Ð)Ø×.Ò.¨xÑ8Ô8ð ?Ø×5Ò5°hÑ?Ô?��Ø×-Ò-¨eÑ4Ô4ð ?Ø×5Ò5°hÀÑFÔF�à�à×-Ò-¨h¸Ñ>Ô>��à—^’^ H¨eÑ4Ô4ˆFð ð 	�UÔ(×,Ò,¨]Ñ;Ô;ð 	ØˆMõ �f�dÑ#Ô#ð 		NØ &§
¢
Ð+=¸rÑ BÔ BÐØ2:¸=Ô2IÐÐ.Ñ/ð ˜yÔ)ˆGÝ/=¸gÑ/FÔ/FÐ˜mÑ,Ø):ˆFÐ%Ñ&Ø×0Ò0°Ð;LÑMÔMÐMØˆr   c                 ó–   — |                      di ¦  «                              di ¦  «        }|                      d¦  «        }|r||d<   d S d S )NÚcontextÚchecksumÚresponse_algorithmÚChecksumAlgorithm©rV   )r   rZ   r\   Úchecksum_contextÚ	algorithms        r   rY   z.ResponseParser._add_checksum_response_metadata  s^   € Ø#Ÿ<š<¨	°2Ñ6Ô6×:Ò:¸:ÀrÑJÔJÐØ$×(Ò(Ð)=Ñ>Ô>ˆ	Øð 	?Ø5>ÐÐ1Ñ2Ð2Ð2ð	?ð 	?r   c                 ó@   — |d uo|j                              dd¦  «        S )NÚ	exceptionF)ÚmetadatarV   )r   r+   s     r   rQ   z&ResponseParser._is_modeled_error_shape%  s$   € Ø˜DÐ ÐK U¤^×%7Ò%7¸ÀUÑ%KÔ%KÐKr   c                 óž   — |d         dk    r@d|vs|d         €dS |d                               ¦   «         }|                     d¦  «        p| S d S )NrH   iô  rG   Ts   <html>)ÚstripÚ
startswith)r   rZ   rG   s      r   rO   z)ResponseParser._is_generic_error_response(  se   € ð �MÔ" cÒ)Ð)Ø˜XÐ%Ð%¨°&Ô)9Ð)AØ�tà˜FÔ#×)Ò)Ñ+Ô+ˆDØ—?’? 9Ñ-Ô-Ð9°T°Ð9ð *Ð)r   c                 ó¾   — t                                d¦  «         t          |d         ¦  «        t          j        j                             |d         d¦  «        dœi dœS )NzlReceived a non protocol specific error response from the service, unable to populate error code and message.rH   r)   ©ÚCodeÚMessage©ÚErrorrJ   )rM   rN   ÚstrÚhttpÚclientÚ	responsesrV   ©r   rZ   s     r   rP   z&ResponseParser._do_generic_error_parse;  sr   € õ 	�	Š	ðBñ	
ô 	
ð 	
õ ˜H ]Ô3Ñ4Ô4Ýœ;Ô0×4Ò4Ø˜]Ô+¨Rñô ðð ð !#ð
ð 
ð 	
r   c                 ó:   — t          | j        j        › d�¦  «        ‚)Nz
._do_parse©ÚNotImplementedErrorÚ	__class__r!   ©r   rZ   r+   s      r   rT   zResponseParser._do_parseL  s   € Ý! T¤^Ô%<Ð"HÐ"HÐ"HÑIÔIÐIr   c                 ó:   — t          | j        j        › d�¦  «        ‚)Nz._do_error_parserx   r{   s      r   rS   zResponseParser._do_error_parseO  s   € Ý! T¤^Ô%<Ð"NÐ"NÐ"NÑOÔOÐOr   c                 ó:   — t          | j        j        › d�¦  «        ‚)Nz._do_modeled_error_parserx   )r   rZ   r+   r[   s       r   rR   z&ResponseParser._do_modeled_error_parseR  s%   € Ý!ØŒ~Ô&Ð@Ð@Ð@ñ
ô 
ð 	
r   c                 óV   — t          | d|j        › �| j        ¦  «        } |||¦  «        S )NÚ_handle_)ÚgetattrÚ	type_nameÚ_default_handle)r   r+   ÚnodeÚhandlers       r   Ú_parse_shapezResponseParser._parse_shapeW  s:   € ÝØÐ.˜Uœ_Ð.Ð.°Ô0Dñ
ô 
ˆð ˆw�u˜dÑ#Ô#Ð#r   c                 ó¤   — g }|j         }|D ]C}|€|                     d ¦  «         Œ|                     |                      ||¦  «        ¦  «         ŒD|S r   )ÚmemberÚappendr…   )r   r+   rƒ   r[   Úmember_shapeÚitems         r   Ú_handle_listzResponseParser._handle_list]  sg   € ð ˆØ”|ˆØð 	Eð 	EˆDð ˆ|Ø—’˜dÑ#Ô#Ð#Ð#à—’˜d×/Ò/°¸dÑCÔCÑDÔDÐDÐDØˆr   c                 ó   — |S r   r   ©r   r+   rE   s      r   r‚   zResponseParser._default_handlek  s   € Øˆr   c                 óv   — | j         }|d                              d¦  «        }t          |d         |||¦  «        S )Nr_   Úoperation_namerG   )r=   rV   r   )r   rZ   r+   ÚparserÚnames        r   Ú_create_event_streamz#ResponseParser._create_event_streamn  s<   € ØÔ*ˆØ˜	Ô"×&Ò&Ð'7Ñ8Ô8ˆÝ˜8 FÔ+¨U°F¸DÑAÔAÐAr   c                 ó,   — t          |¦  «        d         S ©Nr   )ÚlistrD   s     r   Ú_get_first_keyzResponseParser._get_first_keys  s   € Ý�E‰{Œ{˜1Œ~Ðr   c                 ó�  ‡— ‰j         r½|                     ¦   «         }|                     dd ¦  «         d„ |                     ¦   «         D ¦   «         }t	          |¦  «        dk    rd}t          |‰j        z  ¦  «        ‚|                      |¦  «        }ˆfd„‰j        D ¦   «         }||vrt           
                    d|¦  «         dS dS )	NÚ__typec                 ó   — i | ]
\  }}|®||“ŒS r   r   ©Ú.0ÚkÚvs      r   ú
<dictcomp>zCResponseParser._has_unknown_tagged_union_member.<locals>.<dictcomp>z  ó&   € ð ð ð Ù˜˜A¸!¸-��1¸-¸-¸-r   é   úCInvalid service response: %s must have one and only one member set.c                 ó\   •— g | ](}‰j         |         j                             d |¦  «        ‘Œ)S )r‘   )ÚmembersrU   rV   )r›   r‡   r+   s     €r   ú
<listcomp>zCResponseParser._has_unknown_tagged_union_member.<locals>.<listcomp>„  sC   ø€ ð 'ð 'ð 'àð ”˜fÔ%Ô3×7Ò7¸ÀÑGÔGð'ð 'ð 'r   zqReceived a tagged union response with member unknown to client: %s. Please upgrade SDK for full response support.TF)Úis_tagged_unionÚcopyÚpopÚitemsÚlenr1   r‘   r–   r£   rM   Úinfo)r   r+   rE   Úcleaned_valueÚ	error_msgÚtagÚserialized_member_namess    `     r   Ú _has_unknown_tagged_union_memberz/ResponseParser._has_unknown_tagged_union_memberv  s  ø€ ØÔ ð 	Ø!ŸJšJ™LœLˆMØ×Ò˜h¨Ñ-Ô-Ð-ðð Ø!.×!4Ò!4Ñ!6Ô!6ðñ ô ˆMõ �=Ñ!Ô! QÒ&Ð&ð&ð õ *¨)°e´jÑ*@ÑAÔAÐAØ×%Ò% mÑ4Ô4ˆCð'ð 'ð 'ð 'à#œmð'ñ 'ô 'Ð#ð Ð1Ð1Ð1Ý—’ðDàñô ð ð
 �tØˆur   c                 ó   — dd|iiS )NÚSDK_UNKNOWN_MEMBERr‘   r   )r   r­   s     r   Ú#_handle_unknown_tagged_union_memberz2ResponseParser._handle_unknown_tagged_union_member‘  s   € Ø$ v¨s mÐ4Ð4r   c                 ó¾   — |d         }|                      d¦  «        }t          |¦  «        dk    r,|d         r$||d         d<   |d         |d         d<   |d         S |S )	zë
        Error response may contain an x-amzn-query-error header to translate
        errors codes from former `query` services into other protocols. We use this
        to do our lookup in the errorfactory for modeled errors.
        úx-amzn-query-errorú;é   r   rq   ÚQueryErrorCoder    ÚType)Úsplitr©   )r   Úcoder6   ÚerrorÚquery_errorÚquery_error_componentss         r   Ú _do_query_compatible_error_parsez/ResponseParser._do_query_compatible_error_parse”  st   € ð Ð2Ô3ˆØ!,×!2Ò!2°3Ñ!7Ô!7ÐåÐ%Ñ&Ô&¨!Ò+Ð+Ð0FÀqÔ0IÐ+Ø/3ˆE�'ŒNÐ+Ñ,Ø%;¸AÔ%>ˆE�'ŒN˜6Ñ"Ø)¨!Ô,Ð,Øˆr   ©NN)r!   r"   r#   Ú__doc__ÚDEFAULT_ENCODINGr>   ÚKNOWN_LOCATIONSr   r;   r]   rY   rQ   rO   rP   rT   rS   rR   r…   r‹   r‚   r’   r–   r¯   r²   r¾   r   r   r   r3   r3   Å   sS  € € € € € ðð ð ÐØ"Ðð
 :€Oðð ð ð ð'ð 'ð 'ð/ð /ð /ðb?ð ?ð ?ðLð Lð Lð:ð :ð :ð&
ð 
ð 
ð"Jð Jð JðPð Pð Pð
ð 
ð 
ð
$ð $ð $ðð ð ðð ð ðBð Bð Bð
ð ð ðð ð ð65ð 5ð 5ðð ð ð ð r   r3   c                   óê   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZeZeZeZˆ xZS )ÚBaseXMLResponseParserNc                 ó~   •— t          ¦   «                              ||¦  «         t          j        d¦  «        | _        d S )Nz{.*})Úsuperr   ÚreÚcompileÚ_namespace_re)r   r?   r@   rz   s      €r   r   zBaseXMLResponseParser.__init__¥  s6   ø€ Ý‰Œ×ÒÐ)¨;Ñ7Ô7Ð7ÝœZ¨Ñ/Ô/ˆÔÐÐr   c                 óØ  — i }|j         }|j        }|j                             d¦  «        pd}|j                             d¦  «        pd}|j                             d¦  «        rt	          |t
          ¦  «        s|g}|D ]l}|D ]b}	|                      |	¦  «        }
|
|k    r|                      ||	¦  «        }Œ4|
|k    r|                      ||	¦  «        }ŒQt          d|
› �¦  «        ‚|||<   Œm|S )Nr‘   ÚkeyrE   Ú	flattenedzUnknown tag: )	rË   rE   rU   rV   rW   r•   Ú	_node_tagr…   r1   )r   r+   rƒ   r[   Ú	key_shapeÚvalue_shapeÚkey_location_nameÚvalue_location_nameÚkeyval_nodeÚsingle_pairÚtag_nameÚkey_nameÚval_names                r   Ú_handle_mapz!BaseXMLResponseParser._handle_map©  s  € ØˆØ”Iˆ	Ø”kˆØ%Ô3×7Ò7¸Ñ?Ô?ÐHÀ5ÐØ)Ô7×;Ò;¸FÑCÔCÐNÀwÐØÔ×"Ò" ;Ñ/Ô/ð 	½
À4ÍÑ8NÔ8Nð 	Ø�6ˆDØð 
	(ð 
	(ˆKØ*ð Jð J�àŸ>š>¨+Ñ6Ô6�ØÐ0Ò0Ð0Ø#×0Ò0°¸KÑHÔH�H�HØÐ!4Ò4Ð4Ø#×0Ò0°¸kÑJÔJ�H�Hå-Ð.H¸hÐ.HÐ.HÑIÔIÐIØ'ˆF�8ÑÐØˆr   c                 óB   — | j                              d|j        ¦  «        S ©Nr)   )rÉ   Úsubr­   )r   rƒ   s     r   rÍ   zBaseXMLResponseParser._node_tag¾  s   € ØÔ!×%Ò% b¨$¬(Ñ3Ô3Ð3r   c                 ó¬   •— |j                              d¦  «        rt          |t          ¦  «        s|g}t	          ¦   «                              ||¦  «        S )NrÌ   )rU   rV   rW   r•   rÆ   r‹   )r   r+   rƒ   rz   s      €r   r‹   z"BaseXMLResponseParser._handle_listÁ  sP   ø€ ð Ô×"Ò" ;Ñ/Ô/ð 	½
À4ÍÑ8NÔ8Nð 	Ø�6ˆDÝ‰wŒw×#Ò# E¨4Ñ0Ô0Ð0r   c                 óp  — i }|j         }|j                             dd¦  «        r|                      |¦  «        }|                      |¦  «        }|                      ||¦  «        r*|                      |¦  «        }|                      |¦  «        S |D �]#}||         }|j                             d¦  «        }	|	| j	        v s|j                             d¦  «        rŒI|  
                    ||¦  «        }
|                     |
¦  «        }|�|                      ||¦  «        ||<   Œ�|j                             d¦  «        ryi }|j        d         }|j                             ¦   «         D ]A\  }}| j                             |                     d¦  «        d         dz   |¦  «        }|||<   ŒB||v r||         ||<   �Œ%|S )	Nrg   FÚlocationÚeventheaderÚxmlAttributer‘   ú:r   )r£   rh   rV   Ú_get_error_rootÚ_build_name_to_xml_noder¯   r–   r²   rU   rÂ   Ú_member_key_namer…   Úattribr¨   rÉ   rÚ   r¹   )r   r+   rƒ   r[   r£   Úxml_dictr­   Úmember_namer‰   rÝ   Úxml_nameÚmember_nodeÚattribsÚlocation_namerË   rE   Únew_keys                    r   Ú_handle_structurez'BaseXMLResponseParser._handle_structureË  sì  € ØˆØ”-ˆØŒ>×Ò˜k¨5Ñ1Ô1ð 	.Ø×'Ò'¨Ñ-Ô-ˆDØ×/Ò/°Ñ5Ô5ˆØ×0Ò0°¸ÑAÔAð 	AØ×%Ò% hÑ/Ô/ˆCØ×;Ò;¸CÑ@Ô@Ð@Ø"ð 	Añ 	AˆKØ" ;Ô/ˆLØ#Ô1×5Ò5°jÑAÔAˆHà˜DÔ0Ð0Ð0ØÔ-×1Ò1°-Ñ@Ô@ð 1ð
 Ø×,Ò,¨\¸;ÑGÔGˆHØ"Ÿ,š, xÑ0Ô0ˆKØÐ&Ø&*×&7Ò&7Ø  +ñ'ô '��{Ñ#Ð#ð Ô+×/Ò/°Ñ?Ô?ð 	AØ�Ø ,Ô :¸6Ô B�Ø"&¤+×"3Ò"3Ñ"5Ô"5ð -ð -‘J�C˜Ø"Ô0×4Ò4Ø%×+Ò+¨CÑ0Ô0°Ô3°cÑ9¸3ñô �Gð (-�G˜GÑ$Ð$Ø  GÐ+Ð+Ø*1°-Ô*@�F˜;Ñ'ùØˆr   c                 ó|   — |                       |¦  «        dk    r"|D ]}|                       |¦  «        dk    r|c S Œ |S )NÚErrorResponserq   ©rÍ   )r   Úoriginal_rootÚchilds      r   rá   z%BaseXMLResponseParser._get_error_rootð  sS   € Ø�>Š>˜-Ñ(Ô(¨OÒ;Ð;Ø&ð !ð !�Ø—>’> %Ñ(Ô(¨GÒ3Ð3Ø �L�L�Lð 4àÐr   c                 óÒ   — |j         dk    r=|j                             d¦  «        r#|j        j                             d¦  «        }|�|S |j                             d¦  «        }|�|S |S )Nr•   rÌ   r‘   )r�   rU   rV   r‡   )r   r+   ræ   Úlist_member_serialized_nameÚserialized_names        r   rã   z&BaseXMLResponseParser._member_key_name÷  s{   € ð
 Œ?˜fÒ$Ð$¨Ô)<×)@Ò)@ÀÑ)MÔ)MÐ$Ø*/¬,Ô*D×*HÒ*HØñ+ô +Ð'ð +Ð6Ø2Ð2ØÔ-×1Ò1°&Ñ9Ô9ˆØÐ&Ø"Ð"ØÐr   c                 ó:  — t          |t          ¦  «        r|                      |d         ¦  «        S i }|D ]e}|                      |¦  «        }||v rEt          ||         t          ¦  «        r||                              |¦  «         ŒR||         |g||<   Œ`|||<   Œf|S r”   )rW   r•   râ   rÍ   rˆ   )r   Úparent_noderå   rŠ   rË   s        r   râ   z-BaseXMLResponseParser._build_name_to_xml_node  s¶   € õ �k¥4Ñ(Ô(ð 	@Ø×/Ò/°¸A´Ñ?Ô?Ð?ØˆØð 	%ð 	%ˆDØ—.’. Ñ&Ô&ˆCØ�hˆˆõ
 ˜h sœm­TÑ2Ô2ð :Ø˜S”M×(Ò(¨Ñ.Ô.Ð.Ð.ð &.¨c¤]°DÐ$9�H˜S‘M�Mà $�˜‘�Øˆr   c                 ó  — 	 t          j        t          j        ¦   «         | j        ¬¦  «        }|                     |¦  «         |                     ¦   «         }n'# t          $ r}t          d|› d|› �¦  «        ‚d }~ww xY w|S )N)ÚtargetÚencodingzUnable to parse response (z6), invalid XML received. Further retries may succeed:
)r   Ú	XMLParserÚTreeBuilderrÁ   ÚfeedÚcloser   r1   )r   Ú
xml_stringr�   ÚrootÚes        r   Ú_parse_xml_string_to_domz.BaseXMLResponseParser._parse_xml_string_to_dom  s¬   € ð
	Ý”_ÝÔ(Ñ*Ô*°TÔ5Jðñ ô ˆFð �KŠK˜
Ñ#Ô#Ð#Ø—<’<‘>”>ˆDˆDøÝð 	ð 	ð 	Ý%ðT¨Qð Tð TØGQðTð Tñô ð øøøøð	øøøð
 ˆs   ‚AA Á
A<Á"A7Á7A<c                 óÈ   — |                      ¦   «         D ]L\  }}t          |¦  «        r.|                      |¦  «        }|                      |¦  «        ||<   ŒB|j        ||<   ŒM|S r   )r¨   r•   râ   Ú_replace_nodesr(   )r   r[   rË   rE   Úsub_dicts        r   r  z$BaseXMLResponseParser._replace_nodes,  si   € Ø Ÿ,š,™.œ.ð 	)ð 	)‰JˆC�Ý�E‰{Œ{ð )Ø×7Ò7¸Ñ>Ô>�Ø"×1Ò1°(Ñ;Ô;��s‘�à#œj��s‘�Øˆr   c                 ó   — |dk    rdS dS )NÚtrueTFr   ©r   r+   r(   s      r   Ú_handle_booleanz%BaseXMLResponseParser._handle_boolean5  s   € à�6Š>ˆ>Ø�4à�5r   c                 ó    — t          |¦  «        S r   ©Úfloatr  s      r   Ú_handle_floatz#BaseXMLResponseParser._handle_float<  s   € å�T‰{Œ{Ðr   c                 ó,   — |                       |¦  «        S r   ©r:   r  s      r   Ú_handle_timestampz'BaseXMLResponseParser._handle_timestamp@  s   € à×%Ò% dÑ+Ô+Ð+r   c                 ó    — t          |¦  «        S r   ©Úintr  s      r   Ú_handle_integerz%BaseXMLResponseParser._handle_integerD  s   € å�4‰yŒyÐr   c                 ó   — |S r   r   r  s      r   Ú_handle_stringz$BaseXMLResponseParser._handle_stringH  s   € àˆr   c                 ó,   — |                       |¦  «        S r   ©r<   r  s      r   Ú_handle_blobz"BaseXMLResponseParser._handle_blobL  s   € à× Ò  Ñ&Ô&Ð&r   r¿   )r!   r"   r#   r   r×   rÍ   r‹   rì   rá   rã   râ   r  r  r/   r  r  r  r  r  r  Ú_handle_characterÚ_handle_doubleÚ_handle_longÚ__classcell__©rz   s   @r   rÄ   rÄ   ¤  sw  ø€ € € € € ð0ð 0ð 0ð 0ð 0ð 0ðð ð ð*4ð 4ð 4ð1ð 1ð 1ð 1ð 1ð#ð #ð #ðJð ð ðð ð ð ð ð ð.ð ð ðð ð ð ðð ñ „]ðð ðð ñ „]ðð ð,ð ,ñ „]ð,ð ðð ñ „]ðð ðð ñ „]ðð ð'ð 'ñ „]ð'ð 'ÐØ"€NØ"€L€L€L€L€Lr   rÄ   c                   ó4   — e Zd Zd„ Zd„ Zd„ Zd	d„Zd„ Zd„ ZdS )
ÚQueryParserc                 ó(  — |d         }|                       |¦  «        }|                      |¦  «        }|                      |¦  «         d|v r(|                     |                     d¦  «        ¦  «         d|v rd|                     d¦  «        i|d<   |S )NrG   ÚErrorsÚ	RequestIdrJ   )r  râ   r  r   r§   )r   rZ   r+   Úxml_contentsrÿ   r[   s         r   rS   zQueryParser._do_error_parseV  s�   € Ø Ô'ˆØ×,Ò,¨\Ñ:Ô:ˆØ×-Ò-¨dÑ3Ô3ˆØ×Ò˜FÑ#Ô#Ð#ð �vÐÐØ�MŠM˜&Ÿ*š* XÑ.Ô.Ñ/Ô/Ð/Ø˜&Ð Ð Ø*5°v·z²zÀ+Ñ7NÔ7NÐ)OˆFÐ%Ñ&Øˆr   c                 ó2   — |                       ||d¬¦  «        S )NF©Úinject_metadata©Ú_parse_body_as_xmlr{   s      r   rR   z#QueryParser._do_modeled_error_parsef  s   € Ø×&Ò& x°ÈÐ&ÑNÔNÐNr   c                 ó2   — |                       ||d¬¦  «        S )NTr%  r'  r{   s      r   rT   zQueryParser._do_parsei  s   € Ø×&Ò& x°ÈÐ&ÑMÔMÐMr   Tc                 óü   — |d         }|                       |¦  «        }i }|�B|}d|j        v r!|                      |j        d         |¦  «        }|                      ||¦  «        }|r|                      ||¦  «         |S )NrG   ÚresultWrapper)r  rU   Ú_find_result_wrapped_shaper…   Ú_inject_response_metadata)r   rZ   r+   r&  r#  rÿ   r[   Ústarts           r   r(  zQueryParser._parse_body_as_xmll  s™   € Ø Ô'ˆØ×,Ò,¨\Ñ:Ô:ˆØˆØÐØˆEØ %Ô"5Ð5Ð5Ø×7Ò7ØÔ'¨Ô8¸$ñô �ð ×&Ò& u¨eÑ4Ô4ˆFØð 	9Ø×*Ò*¨4°Ñ8Ô8Ð8Øˆr   c                 ó<   — |                       |¦  «        }||         S r   )râ   )r   Úelement_nameÚxml_root_nodeÚmappings       r   r,  z&QueryParser._find_result_wrapped_shape{  s    € Ø×.Ò.¨}Ñ=Ô=ˆØ�|Ô$Ð$r   c                 óÞ   — |                       |¦  «        }|                     d¦  «        }|�@|                       |¦  «        }|                     ¦   «         D ]\  }}|j        ||<   Œ||d<   d S d S ©NrJ   )râ   rV   r¨   r(   )r   rƒ   Úinject_intor2  Ú
child_nodeÚsub_mappingrË   rE   s           r   r-  z%QueryParser._inject_response_metadata  s‡   € Ø×.Ò.¨tÑ4Ô4ˆØ—[’[Ð!3Ñ4Ô4ˆ
ØÐ!Ø×6Ò6°zÑBÔBˆKØ)×/Ò/Ñ1Ô1ð .ð .‘
��UØ#(¤:�˜CÑ Ð Ø.9ˆKÐ*Ñ+Ð+Ð+ð	 "Ð!r   N)T)	r!   r"   r#   rS   rR   rT   r(  r,  r-  r   r   r   r  r  U  sy   € € € € € ðð ð ð Oð Oð OðNð Nð Nðð ð ð ð%ð %ð %ð:ð :ð :ð :ð :r   r  c                   ó*   ‡ — e Zd Zd„ Zˆ fd„Zd„ Zˆ xZS )ÚEC2QueryParserc                 óz   — |                       |¦  «        }|                     d¦  «        }|�d|j        i|d<   d S d S )NÚ	requestIdr"  rJ   )râ   rV   r(   )r   rƒ   r5  r2  r6  s        r   r-  z(EC2QueryParser._inject_response_metadataŠ  sL   € Ø×.Ò.¨tÑ4Ô4ˆØ—[’[ Ñ-Ô-ˆ
ØÐ!Ø/:¸J¼OÐ.LˆKÐ*Ñ+Ð+Ð+ð "Ð!r   c                 óˆ   •— t          ¦   «                              ||¦  «        }d|v rd|                     d¦  «        i|d<   |S )NÚ	RequestIDr"  rJ   )rÆ   rS   r§   )r   rZ   r+   Úoriginalrz   s       €r   rS   zEC2QueryParser._do_error_parse�  sN   ø€ õ ‘7”7×*Ò*¨8°UÑ;Ô;ˆØ˜(Ð"Ð"à˜XŸ\š\¨+Ñ6Ô6ð,ˆHÐ'Ñ(ð ˆr   c                 óŠ   — |D ]?}|                       |¦  «        dk    r$|D ]!}|                       |¦  «        dk    r|c c S Œ"Œ@|S )Nr!  rq   rï   )r   rð   rñ   Úerrors_childs       r   rá   zEC2QueryParser._get_error_root¤  sl   € Ø"ð 	,ð 	,ˆEØ�~Š~˜eÑ$Ô$¨Ò0Ð0Ø$)ð ,ð ,�LØ—~’~ lÑ3Ô3°wÒ>Ð>Ø+Ð+Ð+Ð+Ð+Ð+ð ?øàÐr   )r!   r"   r#   r-  rS   rá   r  r  s   @r   r9  r9  ‰  sY   ø€ € € € € ðMð Mð Mðð ð ð ð ð(ð ð ð ð ð ð r   r9  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚBaseJSONParserc                 ót  — i }|j         r|}n«|j        }|€d S i }|                      ||¦  «        r*|                      |¦  «        }|                      |¦  «        S |D ][}||         }|j                             d|¦  «        }|                     |¦  «        }	|	�|                      ||         |	¦  «        ||<   Œ\|S )Nr‘   )Úis_document_typer£   r¯   r–   r²   rU   rV   r…   )
r   r+   rE   Úfinal_parsedÚmember_shapesr­   ræ   r‰   Ú	json_nameÚ	raw_values
             r   rì   z BaseJSONParser._handle_structure®  sæ   € ØˆØÔ!ð 	Ø ˆLˆLà!œMˆMØˆ}ð �tØˆLØ×4Ò4°U¸EÑBÔBð EØ×)Ò)¨%Ñ0Ô0�Ø×?Ò?ÀÑDÔDÐDØ,ð ð �Ø,¨[Ô9�Ø(Ô6×:Ò:¸6À;ÑOÔO�	Ø!ŸIšI iÑ0Ô0�	ØÐ(Ø04×0AÒ0AØ% kÔ2°Iñ1ô 1�L Ñ-øð Ðr   c                 ó¼   — i }|j         }|j        }|                     ¦   «         D ]6\  }}|                      ||¦  «        }|                      ||¦  «        }|||<   Œ7|S r   )rË   rE   r¨   r…   )	r   r+   rE   r[   rÎ   rÏ   rË   Ú
actual_keyÚactual_values	            r   r×   zBaseJSONParser._handle_mapÇ  sl   € ØˆØ”Iˆ	Ø”kˆØŸ+š+™-œ-ð 	.ð 	.‰JˆC�Ø×*Ò*¨9°cÑ:Ô:ˆJØ×,Ò,¨[¸%Ñ@Ô@ˆLØ!-ˆF�:ÑÐØˆr   c                 ó,   — |                       |¦  «        S r   r  r�   s      r   r  zBaseJSONParser._handle_blobÑ  s   € Ø× Ò  Ñ'Ô'Ð'r   c                 ó,   — |                       |¦  «        S r   r  r�   s      r   r  z BaseJSONParser._handle_timestampÔ  s   € Ø×%Ò% eÑ,Ô,Ð,r   c                 ó>  — |                       |d         ¦  «        }dddœi dœ}|d         }|                     d|                     dd¦  «        ¦  «        |d         d<   |                     d	¦  «        }|                     d
|ot          |¦  «        ¦  «        }|�fd|v r|                     dd¦  «        d         }d|v r|                     dd¦  «        d         }d|v r|                      |||¦  «        }||d         d<   |                      ||d         ¦  «         |S )NrG   r)   ©ro   rn   rp   r6   Úmessagero   rq   rH   r˜   rà   r    r   ú#r´   rn   )Ú_parse_body_as_jsonrV   rr   r¹   Úrsplitr¾   r-  )r   rZ   r+   rG   r»   r6   Úresponse_coderº   s           r   rS   zBaseJSONParser._do_error_parse×  s>  € Ø×'Ò'¨°Ô(8Ñ9Ô9ˆØ&(°"Ð5Ð5È2ÐNÐNˆØ˜9Ô%ˆð %)§H¢HØ�t—x’x 	¨2Ñ.Ô.ñ%
ô %
ˆˆgŒ�yÑ!ð
 !Ÿš ]Ñ3Ô3ˆà�xŠx˜ -Ð"FµC¸Ñ4FÔ4FÑGÔGˆØÐð �dˆ{ˆ{Ø—z’z # qÑ)Ô)¨!Ô,�Ø�dˆ{ˆ{Ø—{’{ 3¨Ñ*Ô*¨1Ô-�Ø# wÐ.Ð.Ø×<Ò<Ø˜' 5ñô �ð &*ˆE�'ŒN˜6Ñ"Ø×&Ò& u¨h°yÔ.AÑBÔBÐBØˆr   c                 óP   — d|v r!|d         |                      di ¦  «        d<   d S d S )Núx-amzn-requestidrJ   r"  )Ú
setdefault)r   r[   r6   s      r   r-  z(BaseJSONParser._inject_response_metadataû  s?   € Ø Ð(Ð(ØELØ"ôFˆF×ÒÐ0°"Ñ5Ô5°kÑBÐBÐBð )Ð(r   c                 ó”   — |si S |                      | j        ¦  «        }	 t          j        |¦  «        }|S # t          $ r d|icY S w xY w)NrP  )ÚdecoderÁ   ÚjsonÚloadsÚ
ValueError)r   Úbody_contentsrG   Úoriginal_parseds       r   rR  z"BaseJSONParser._parse_body_as_json  sm   € Øð 	ØˆIØ×#Ò# DÔ$9Ñ:Ô:ˆð	%Ý"œj¨Ñ.Ô.ˆOØ"Ð"øÝð 	%ð 	%ð 	%ð ˜tÐ$Ð$Ð$Ð$ð	%øøøs    6 ¶AÁAN)
r!   r"   r#   rì   r×   r  r  rS   r-  rR  r   r   r   rB  rB  ­  s~   € € € € € ðð ð ð2ð ð ð(ð (ð (ð-ð -ð -ð"ð "ð "ðHð ð ð
%ð 
%ð 
%ð 
%ð 
%r   rB  c                   ó†   — e Zd Z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„ Zd„ Zd„ ZdS )ÚBaseCBORParseré   éÿ   c           	      óh   — | j         | j        | j        | j        | j        | j        | j        | j        dœS )N)r   r    r¶   é   é   é   é   é   )Ú_parse_unsigned_integerÚ_parse_negative_integerÚ_parse_byte_stringÚ_parse_text_stringÚ_parse_arrayÚ
_parse_mapÚ
_parse_tagÚ_parse_simple_and_floatr   s    r   Ú major_type_to_parsing_method_mapz/BaseCBORParser.major_type_to_parsing_method_map  sA   € ð Ô+ØÔ+ØÔ&ØÔ&ØÔ ØŒØŒØÔ+ð	
ð 	
ð 		
r   c                 óN   — t          j        t          j        |¦  «        ¦  «        S r   )ÚioÚBufferedReaderÚBytesIO)r   Úbytess     r   Úget_peekable_stream_from_bytesz-BaseCBORParser.get_peekable_stream_from_bytes  s   € ÝÔ ¥¤¨EÑ!2Ô!2Ñ3Ô3Ð3r   c                 ó°   — |                       |d¦  «        }|dz	  }|dz  }|| j        v r| j        |         } |||¦  «        S t          d|› d|› �¦  «        ‚)Nr    rf  ra  z8Unsupported inital byte found for data item- Major type:z, Additional info: )Ú_read_bytes_as_intrq  r1   )r   ÚstreamÚinitial_byteÚ
major_typeÚadditional_infoÚmethods         r   Úparse_data_itemzBaseCBORParser.parse_data_item"  s�   € ð ×.Ò.¨v°qÑ9Ô9ˆà! QÑ&ˆ
ð '¨Ñ3ˆà˜Ô>Ð>Ð>ØÔ:¸:ÔFˆFØ�6˜& /Ñ2Ô2Ð2å%ð%Ø(ð%ð %à"ð%ð %ñô ð r   c                 óˆ   — dddddœ}|dk     r|S ||v r||         }|                       ||¦  «        S t          d|› �¦  «        ‚)Nr    r¶   re  é   )é   é   é   é   r‚  zhInvalid CBOR integer returned from the service; unparsable additional info found for major type 0 or 1: )ry  r1   )r   rz  r}  Úadditional_info_to_num_bytesÚ	num_bytess        r   ri  z&BaseCBORParser._parse_unsigned_integer7  s�   € àØØØð	(
ð (
Ð$ð ˜RÒÐØ"Ð"ØÐ <Ð<Ð<Ø4°_ÔEˆIØ×*Ò*¨6°9Ñ=Ô=Ð=å%ðRØ@OðRð Rñô ð r   c                 ó4   — d|                       ||¦  «        z
  S )Néÿÿÿÿ)ri  ©r   rz  r}  s      r   rj  z&BaseCBORParser._parse_negative_integerL  s   € Ø�D×0Ò0°¸ÑIÔIÑIÐIr   c                 ó‚  — || j         k    r,|                      ||¦  «        }|                      ||¦  «        S g }	 |                      |¦  «        rn[|                      |d¦  «        }|dz  }|                      ||¦  «        }|                     |                      ||¦  «        ¦  «         Œqd                     |¦  «        S )NTr    ra  r   )ÚINDEFINITE_ITEM_ADDITIONAL_INFOri  Ú_read_from_streamÚ_handle_break_codery  rˆ   Újoin)r   rz  r}  ÚlengthÚchunksr{  s         r   rk  z!BaseCBORParser._parse_byte_stringP  sÏ   € Ø˜dÔBÒBÐBØ×1Ò1°&¸/ÑJÔJˆFØ×)Ò)¨&°&Ñ9Ô9Ð9àˆFðFØ×*Ò*¨6Ñ2Ô2ð ØØ#×6Ò6°v¸qÑAÔA�Ø".°Ñ";�Ø×5Ò5°f¸oÑNÔN�Ø—’˜d×4Ò4°V¸VÑDÔDÑEÔEÐEðFð —8’8˜FÑ#Ô#Ð#r   c                 óT   — |                       ||¦  «                             d¦  «        S )Nr4   )rk  rY  rŠ  s      r   rl  z!BaseCBORParser._parse_text_string`  s&   € Ø×&Ò& v¨Ñ?Ô?×FÒFÀwÑOÔOÐOr   c                 ó,  ‡ ‡— |‰ j         k    r2‰                      ‰|¦  «        }ˆ ˆfd„t          |¦  «        D ¦   «         S g }‰                      ‰¦  «        s=|                     ‰                      ‰¦  «        ¦  «         ‰                      ‰¦  «        ¯=|S )Nc                 ó:   •— g | ]}‰                      ‰¦  «        ‘ŒS r   ©r  )r›   Ú_r   rz  s     €€r   r¤   z/BaseCBORParser._parse_array.<locals>.<listcomp>g  s'   ø€ ÐHÐHÐH°Q�D×(Ò(¨Ñ0Ô0ÐHÐHÐHr   )rŒ  ri  ÚrangerŽ  rˆ   r  )r   rz  r}  r�  r¨   s   ``   r   rm  zBaseCBORParser._parse_arrayd  s¢   øø€ Ø˜dÔBÒBÐBØ×1Ò1°&¸/ÑJÔJˆFØHÐHÐHÐHÐH½%À¹-¼-ÐHÑHÔHÐHàˆEØ×-Ò-¨fÑ5Ô5ð ;Ø—’˜T×1Ò1°&Ñ9Ô9Ñ:Ô:Ð:ð ×-Ò-¨fÑ5Ô5ð ;àˆLr   c                 ó   — i }|| j         k    r@|                      ||¦  «        }t          |¦  «        D ]}|                      ||¦  «         Œ|S |                      |¦  «        s+|                      ||¦  «         |                      |¦  «        ¯+|S r   )rŒ  ri  r—  Ú_parse_key_value_pairrŽ  )r   rz  r}  r¨   r�  r–  s         r   rn  zBaseCBORParser._parse_mapo  s¨   € ØˆØ˜dÔBÒBÐBØ×1Ò1°&¸/ÑJÔJˆFÝ˜6‘]”]ð :ð :�Ø×*Ò*¨6°5Ñ9Ô9Ð9Ð9ØˆLð ×-Ò-¨fÑ5Ô5ð :Ø×*Ò*¨6°5Ñ9Ô9Ð9ð ×-Ò-¨fÑ5Ô5ð :àˆLr   c                 ól   — |                       |¦  «        }|                       |¦  «        }|�|||<   d S d S r   r•  )r   rz  r¨   rË   rE   s        r   r™  z$BaseCBORParser._parse_key_value_pair|  sC   € Ø×"Ò" 6Ñ*Ô*ˆØ×$Ò$ VÑ,Ô,ˆØÐØˆE�#‰JˆJˆJð Ðr   c                 ó²   — |                       ||¦  «        }|                      |¦  «        }|dk    r|                      |¦  «        S t          d|› �¦  «        ‚)Nr    z*Found CBOR tag not supported by botocore: )ri  r  Ú_parse_datetimer1   )r   rz  r}  r­   rE   s        r   ro  zBaseCBORParser._parse_tag„  sd   € Ø×*Ò*¨6°?ÑCÔCˆØ×$Ò$ VÑ,Ô,ˆØ�!Š8ˆ8Ø×'Ò'¨Ñ.Ô.Ð.å%ØB¸SÐBÐBñô ð r   c                 óˆ   — t          |t          t          f¦  «        r|                      |¦  «        S t	          d|› �¦  «        ‚)Nz Unable to parse datetime value: )rW   r  r  r:   r1   rD   s     r   rœ  zBaseCBORParser._parse_datetimeŽ  sI   € Ý�e�c¥5˜\Ñ*Ô*ð 	Ø×)Ò)¨%Ñ0Ô0Ð0å%Ø:°5Ð:Ð:ñô ð r   c                 óÖ   — ddd d dœ}||v r||         S ddddœ}||v r:||         \  }}t          j        ||                      ||¦  «        ¦  «        d         S t          d	|› d
�¦  «        ‚)NFT)é   é   é   é   )z>er¶   )z>fre  )z>dr�  )rƒ  r„  r…  r   z0Invalid additional info found for major type 7: zI.  This indicates an unsupported simple type or an indefinite float value)ÚstructÚunpackr�  r1   )r   rz  r}  Úadditional_info_simple_valuesÚfloat_formatsÚfloat_formatr‡  s          r   rp  z&BaseCBORParser._parse_simple_and_float™  sÈ   € ð ØØØð	)
ð )
Ð%ð Ð;Ð;Ð;Ø0°ÔAÐAð
 ØØð
ð 
ˆð ˜mÐ+Ð+Ø&3°OÔ&DÑ#ˆL˜)Ý”=Ø˜d×4Ò4°V¸YÑGÔGñô àôð õ "ðV¸ð Vð Vð Vñ
ô 
ð 	
r   c                 óÈ   — t                                |                     d¦  «        d d…         d¦  «        | j        k    r"|                     dt
          j        ¦  «         dS d S )Nr    ÚbigT)r  Ú
from_bytesÚpeekÚ
BREAK_CODEÚseekÚosÚSEEK_CUR)r   rz  s     r   rŽ  z!BaseCBORParser._handle_break_code»  sT   € Ý�>Š>˜&Ÿ+š+ a™.œ.¨¨!¨Ô,¨eÑ4Ô4¸¼ÒGÐGØ�KŠK˜�2œ;Ñ'Ô'Ð'Ø�4ð HÐGr   c                 ód   — |                       ||¦  «        }t                               |d¦  «        S )Nr©  )r�  r  rª  )r   rz  r‡  Úbytes       r   ry  z!BaseCBORParser._read_bytes_as_intÀ  s+   € Ø×%Ò% f¨iÑ8Ô8ˆÝ�~Š~˜d EÑ*Ô*Ð*r   c                 ót   — |                      |¦  «        }t          |¦  «        |k    rt          d¦  «        ‚|S )NzgEnd of stream reached; this indicates a malformed CBOR response from the server or an issue in botocore)Úreadr©   r1   )r   rz  r‡  rE   s       r   r�  z BaseCBORParser._read_from_streamÄ  sB   € Ø—’˜IÑ&Ô&ˆÝˆu‰:Œ:˜Ò"Ð"Ý%ð$ñô ð ð
 ˆr   N)r!   r"   r#   rŒ  r¬  r   rq  rw  r  ri  rj  rk  rl  rm  rn  r™  ro  rœ  rp  rŽ  ry  r�  r   r   r   r`  r`    s   € € € € € Ø&(Ð#Ø€Jàð

ð 

ñ „^ð

ð4ð 4ð 4ðð ð ð*ð ð ð*Jð Jð Jð$ð $ð $ð Pð Pð Pðð ð ðð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ðDð ð ð
+ð +ð +ðð ð ð ð r   r`  c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚBaseEventStreamParserc                 óT  — i }|j                              d¦  «        rQ|d                              d¦  «        }|j                             |¦  «        }|r|                      ||¦  «        ||<   n:|                      |||j        |¦  «         |                      |||j        |¦  «         |S )NrI   r6   z:event-type)rU   rV   r£   rT   Ú_parse_non_payload_attrsÚ_parse_payload)r   rZ   r+   rE  Ú
event_typeÚevent_shapes         r   rT   zBaseEventStreamParser._do_parseÐ  s½   € ØˆØÔ×"Ò" =Ñ1Ô1ð 	NØ! )Ô,×0Ò0°Ñ?Ô?ˆJØœ-×+Ò+¨JÑ7Ô7ˆKØð Ø+/¯>ª>Ø˜kñ,ô ,�˜ZÑ(øð ×)Ò)Ø˜% ¤°ñô ð ð ×Ò ¨%°´ÀÑMÔMÐMØÐr   c           	      ó¬  — |d                               d¦  «        }|j                              |¦  «        }|�a|                      |d         ¦  «        }|                      ||¦  «        }d||                      d|                      dd¦  «        ¦  «        dœi}n;d|d                               d	d¦  «        |d                               d
d¦  «        dœi}|S )Nr6   z:exception-typerG   rq   ro   rP  r)   rm   z:error-codez:error-message)rV   r£   Ú_initial_body_parser…   )r   rZ   r+   Úexception_typeÚexception_shaper^  rG   r»   s           r   rS   z%BaseEventStreamParser._do_error_parseà  sé   € Ø! )Ô,×0Ò0Ð1BÑCÔCˆØœ-×+Ò+¨NÑ;Ô;ˆØÐ&Ø"×6Ò6°xÀÔ7GÑHÔHˆOØ×$Ò$ _°oÑFÔFˆDàØ*Ø#Ÿxšx¨	°4·8²8¸IÀrÑ3JÔ3JÑKÔKðð ðˆEˆEð Ø$ YÔ/×3Ò3°MÀ2ÑFÔFØ'¨	Ô2×6Ò6Ð7GÈÑLÔLðð ðˆEð ˆr   c                 óö  — |j                              d¦  «        rÞ|D ]“}||         }|j                              d¦  «        ro|d         }|j        dk    r|}nQ|j        dk    r|                     | j        ¦  «        }n+|                      |¦  «        }	|                      ||	¦  «        }|||<    d S Œ”|                      |d         ¦  «        }
|                      ||
¦  «        }|                     |¦  «         d S d S )NÚeventÚeventpayloadrG   ÚblobÚstring)rU   rV   r�   rY  rÁ   r¼  r…   r   )r   rZ   r+   rF  rE  r‘   r‰   rG   Úparsed_bodyÚ	raw_parser^  Úbody_parseds               r   r¸  z$BaseEventStreamParser._parse_payloadõ  s(  € ØÔ×"Ò" 7Ñ+Ô+ð 	-Ø%ð ð �Ø,¨TÔ2�ØÔ-×1Ò1°.ÑAÔAð Ø# FÔ+�DØ#Ô-°Ò7Ð7Ø&*˜˜Ø%Ô/°8Ò;Ð;Ø&*§k¢k°$Ô2GÑ&HÔ&H˜˜à$(×$<Ò$<¸TÑ$BÔ$B˜	Ø&*×&7Ò&7Ø(¨)ñ'ô '˜ð *5�L Ñ&Ø�F�Fðð #×6Ò6°xÀÔ7GÑHÔHˆOØ×+Ò+¨E°?ÑCÔCˆKØ×Ò Ñ,Ô,Ð,Ð,Ð,ð'	-ð 	-r   c                 óÌ   — |d         }|D ]X}||         }|j                              d¦  «        r4||v r0||         }|j        dk    r|                      |dz  ¦  «        }|||<   ŒYd S )Nr6   rÞ   Ú	timestampg     @�@)rU   rV   r�   r:   )	r   rZ   r+   rF  rE  r6   r‘   r‰   rE   s	            r   r·  z.BaseEventStreamParser._parse_non_payload_attrs  sŽ   € ð ˜9Ô%ˆØ!ð 		/ð 		/ˆDØ(¨Ô.ˆLØÔ)×-Ò-¨mÑ<Ô<ð /Ø˜7�?�?Ø# DœM�EØ#Ô-°Ò<Ð<ð !%× 6Ò 6°u¸v±~Ñ FÔ F˜Ø).�L Ñ&øð		/ð 		/r   c                 ó    — t          d¦  «        ‚©Nr¼  ©ry   ©r   r]  s     r   r¼  z)BaseEventStreamParser._initial_body_parse  ó   € õ
 "Ð"7Ñ8Ô8Ð8r   N)r!   r"   r#   rT   rS   r¸  r·  r¼  r   r   r   rµ  rµ  Ï  s_   € € € € € ðð ð ð ð ð ð*-ð -ð -ð,/ð /ð /ð9ð 9ð 9ð 9ð 9r   rµ  c                   ó   — e Zd Zd„ ZdS )ÚEventStreamJSONParserc                 ó,   — |                       |¦  «        S r   ©rR  rÌ  s     r   r¼  z)EventStreamJSONParser._initial_body_parse#  ó   € Ø×'Ò'¨Ñ6Ô6Ð6r   N©r!   r"   r#   r¼  r   r   r   rÏ  rÏ  "  s#   € € € € € ð7ð 7ð 7ð 7ð 7r   rÏ  c                   ó   — e Zd Zd„ ZdS )ÚEventStreamXMLParserc                 óX   — |st          j        d¦  «        S |                      |¦  «        S rÙ   ©r   ÚElementr  ©r   rþ   s     r   r¼  z(EventStreamXMLParser._initial_body_parse(  ó.   € Øð 	%Ý”= Ñ$Ô$Ð$Ø×,Ò,¨ZÑ8Ô8Ð8r   NrÓ  r   r   r   rÕ  rÕ  '  s#   € € € € € ð9ð 9ð 9ð 9ð 9r   rÕ  c                   ó   — e Zd Zd„ ZdS )ÚEventStreamCBORParserc                 ób   — |dk    ri S |                       |                      |¦  «        ¦  «        S ©Nr   )r  rw  rÌ  s     r   r¼  z)EventStreamCBORParser._initial_body_parse/  s;   € Ø˜CÒÐØˆIØ×#Ò#Ø×/Ò/°Ñ>Ô>ñ
ô 
ð 	
r   NrÓ  r   r   r   rÜ  rÜ  .  s#   € € € € € ð
ð 
ð 
ð 
ð 
r   rÜ  c                   ó,   — e Zd ZeZ	 d„ Zd„ Zd„ Zd„ ZdS )Ú
JSONParserc                 óÀ   — i }|�=|j         }|r|                      |||¦  «        }n|                      |d         |¦  «        }|                      ||d         ¦  «         |S )NrG   r6   )Úevent_stream_nameÚ_handle_event_streamÚ_handle_json_bodyr-  )r   rZ   r+   r[   Ú
event_names        r   rT   zJSONParser._do_parse<  sq   € ØˆØÐØÔ0ˆJØð IØ×2Ò2°8¸UÀJÑOÔO��à×/Ò/°¸Ô0@À%ÑHÔH�Ø×&Ò& v¨x¸	Ô/BÑCÔCÐCØˆr   c                 ó:   — |                       |d         |¦  «        S ©NrG   )rä  r{   s      r   rR   z"JSONParser._do_modeled_error_parseG  s   € Ø×%Ò% h¨vÔ&6¸Ñ>Ô>Ð>r   c                 óö   — |j         |         }|                      ||¦  «        }	 |                     ¦   «         }n# t          $ r d}t	          |¦  «        ‚w xY w|                      |j        |¦  «        }|||<   |S ©Nz,First event was not of type initial-response)r£   r’   Úget_initial_responser   r1   rä  Úpayload©	r   rZ   r+   rå  Úevent_stream_shapeÚevent_streamrÀ  r¬   r[   s	            r   rã  zJSONParser._handle_event_streamJ  s“   € Ø"œ]¨:Ô6ÐØ×0Ò0°Ð;MÑNÔNˆð	1Ø ×5Ò5Ñ7Ô7ˆEˆEøÝ%ð 	1ð 	1ð 	1ØFˆIÝ% iÑ0Ô0Ð0ð	1øøøð ×'Ò'¨¬°uÑ=Ô=ˆØ)ˆˆzÑØˆó	   ¥: ºAc                 óX   — |                       |¦  «        }|                      ||¦  «        S r   )rR  r…   )r   Úraw_bodyr+   Úparsed_jsons       r   rä  zJSONParser._handle_json_bodyV  s-   € ð ×.Ò.¨xÑ8Ô8ˆØ× Ò  ¨Ñ4Ô4Ð4r   N)	r!   r"   r#   rÏ  r>   rT   rR   rã  rä  r   r   r   rà  rà  7  sY   € € € € € Ø3Ðà2ð	ð 	ð 	ð?ð ?ð ?ð
ð 
ð 
ð5ð 5ð 5ð 5ð 5r   rà  c                   óT   ‡ — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zˆ fd
„Zˆ xZS )ÚBaseRestParserc                 óh   — i }|                       |¦  «        |d<   |                      |||¦  «         |S r4  )Ú_populate_response_metadataÚ_add_modeled_parse©r   rZ   r+   rE  s       r   rT   zBaseRestParser._do_parse_  sE   € ØˆØ+/×+KÒ+KØñ,
ô ,
ˆÐ'Ñ(ð 	×Ò ¨%°Ñ>Ô>Ð>ØÐr   c                 ó|   — |€|S |j         }|                      ||||¦  «         |                      ||||¦  «         d S r   )r£   r·  r¸  )r   rZ   r+   rE  rF  s        r   r÷  z!BaseRestParser._add_modeled_parseg  sW   € Øˆ=ØÐØœˆØ×%Ò%Ø�e˜]¨Lñ	
ô 	
ð 	
ð 	×Ò˜H e¨]¸LÑIÔIÐIÐIÐIr   c                 ó8   — i }|                       |||¦  «         |S r   ©r÷  rø  s       r   rR   z&BaseRestParser._do_modeled_error_parsep  ó%   € ØˆØ×Ò ¨%°Ñ>Ô>Ð>ØÐr   c                 óŠ   — i }|d         }d|v r|d         |d<   n(d|v r$|d         |d<   |                      dd¦  «        |d<   |S )Nr6   rV  r"  úx-amz-request-idú
x-amz-id-2r)   ÚHostIdrc   ©r   rZ   rh   r6   s       r   rö  z*BaseRestParser._populate_response_metadatau  si   € ØˆØ˜9Ô%ˆØ Ð(Ð(Ø$+Ð,>Ô$?ˆH�[Ñ!Ð!Ø 7Ð*Ð*Ø$+Ð,>Ô$?ˆH�[Ñ!ð ")§¢¨\¸2Ñ!>Ô!>ˆH�XÑØˆr   c                 ó6  — d|j         v rÉ|j         d         }||         }|j                              d¦  «        r|                      ||¦  «        }|||<   d S |j        dv r>|d         }t	          |t
          ¦  «        r|                     | j        ¦  «        }|||<   d S |                      |d         ¦  «        }|  	                    ||¦  «        ||<   d S |                      |d         ¦  «        }|  	                    ||¦  «        }	| 
                    |	¦  «         d S )Nrë  rI   )rÃ  rÂ  rG   )rU   rV   r’   r�   rW   rv  rY  rÁ   r¼  r…   r   )
r   rZ   r+   rF  rE  Úpayload_member_nameÚ
body_shaperG   r^  rÆ  s
             r   r¸  zBaseRestParser._parse_payload‚  sA  € Ø˜Ô+Ð+Ð+ð #(Ô"5°iÔ"@ÐØ&Ð':Ô;ˆJØÔ'×+Ò+¨MÑ:Ô:ð Ø×0Ò0°¸:ÑFÔF�Ø48�Ð0Ñ1Ð1Ð1ØÔ%Ð);Ð;Ð;à Ô'�Ý˜d¥EÑ*Ô*ð >ØŸ;š; tÔ'<Ñ=Ô=�DØ48�Ð0Ñ1Ð1Ð1à"&×":Ò":¸8ÀFÔ;KÑ"LÔ"L�Ø48×4EÒ4EØ ñ5ô 5�Ð0Ñ1Ð1Ð1ð #×6Ò6°xÀÔ7GÑHÔHˆOØ×+Ò+¨E°?ÑCÔCˆKØ×Ò Ñ,Ô,Ð,Ð,Ð,r   c                 ó~  — |d         }|D ]±}||         }|j                              d¦  «        }|€Œ'|dk    r |                      ||d         ¦  «        ||<   ŒM|dk    r|                      ||¦  «        ||<   Œm|dk    r>|j                              d|¦  «        }	|	|v r|                      |||	         ¦  «        ||<   Œ²d S )Nr6   rÝ   r7   rH   r5   r‘   )rU   rV   r…   Ú_parse_header_map)
r   rZ   r+   rF  rE  r6   r‘   r‰   rÝ   Úheader_names
             r   r·  z'BaseRestParser._parse_non_payload_attrs›  s  € ð ˜9Ô%ˆØ!ð 	ð 	ˆDØ(¨Ô.ˆLØ#Ô1×5Ò5°jÑAÔAˆHØÐØØ˜\Ò)Ð)Ø%)×%6Ò%6Ø  (¨=Ô"9ñ&ô &�˜TÑ"Ð"ð ˜YÒ&Ð&Ø%)×%;Ò%;Ø  'ñ&ô &�˜TÑ"Ð"ð ˜XÒ%Ð%Ø*Ô8×<Ò<¸VÀTÑJÔJ�Ø 'Ð)Ð)Ø)-×):Ò):Ø$ g¨kÔ&:ñ*ô *�L Ñ&øð!	ð 	r   c                 ó   — i }|j                              dd¦  «                             ¦   «         }|D ]K}|                     ¦   «                              |¦  «        r"|t	          |¦  «        d …         }||         ||<   ŒL|S )Nr‘   r)   )rU   rV   Úlowerrk   r©   )r   r+   r6   r[   Úprefixr  r‘   s          r   r  z BaseRestParser._parse_header_map³  sˆ   € ð ˆØÔ$×(Ò(¨°Ñ4Ô4×:Ò:Ñ<Ô<ˆØ"ð 	4ð 	4ˆKØ× Ò Ñ"Ô"×-Ò-¨fÑ5Ô5ð 4ð #¥3 v¡;¤; = =Ô1�Ø& {Ô3��t‘øØˆr   c                 ó    — t          d¦  «        ‚rÊ  rË  rÌ  s     r   r¼  z"BaseRestParser._initial_body_parseÀ  rÍ  r   c                 ó¨   — |}t          |¦  «        r@t          j        |¦  «                             | j        ¦  «        }t          j        |¦  «        }|S r   )r	   rB   rC   rY  rÁ   rZ  r[  )r   r+   rE   r[   Údecodeds        r   r  zBaseRestParser._handle_stringÇ  sL   € ØˆÝ Ñ&Ô&ð 	)ÝÔ& uÑ-Ô-×4Ò4°TÔ5JÑKÔKˆGÝ”Z Ñ(Ô(ˆFØˆr   c                 óð   •— |j                              d¦  «        }|dk    r4t          |t          ¦  «        sd„ |                     d¦  «        D ¦   «         }t          ¦   «                              ||¦  «        S )NrÝ   r5   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )rj   )r›   r   s     r   r¤   z/BaseRestParser._handle_list.<locals>.<listcomp>Ò  s    € Ð7Ð7Ð7 !�A—G’G‘I”IÐ7Ð7Ð7r   ú,)rU   rV   rW   r•   r¹   rÆ   r‹   )r   r+   rƒ   rÝ   rz   s       €r   r‹   zBaseRestParser._handle_listÎ  sj   ø€ ØÔ&×*Ò*¨:Ñ6Ô6ˆØ�xÒÐ­
°4½Ñ(>Ô(>Ðà7Ð7 t§z¢z°#¡¤Ð7Ñ7Ô7ˆDÝ‰wŒw×#Ò# E¨4Ñ0Ô0Ð0r   )r!   r"   r#   rT   r÷  rR   rö  r¸  r·  r  r¼  r  r‹   r  r  s   @r   rô  rô  ^  sÂ   ø€ € € € € ðð ð ðJð Jð Jðð ð ð
ð ð ð-ð -ð -ð2ð ð ð0ð ð ð9ð 9ð 9ðð ð ð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1r   rô  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚBaseRpcV2Parserc                 ó²   — i }|�R|j         }|r|                      |||¦  «        }ni }|                      |||¦  «         |                      |¦  «        |d<   |S r4  )râ  rã  r¸  rö  )r   rZ   r+   r[   râ  s        r   rT   zBaseRpcV2Parser._do_parse×  s�   € ØˆØÐØ %Ô 7ÐØ ð =Ø×2Ò2Ø˜eÐ%6ñô ��ð �Ø×#Ò# H¨e°VÑ<Ô<Ð<Ø)-×)IÒ)IØñ*ô *ˆFÐ%Ñ&ð ˆr   c                 ó<   — |€|S |                       |||¦  «         d S r   )r¸  rø  s       r   r÷  z"BaseRpcV2Parser._add_modeled_parseç  s+   € Øˆ=ØÐØ×Ò˜H e¨\Ñ:Ô:Ð:Ð:Ð:r   c                 ó8   — i }|                       |||¦  «         |S r   rû  rø  s       r   rR   z'BaseRpcV2Parser._do_modeled_error_parseì  rü  r   c                 ó8   — i }|d         }d|v r|d         |d<   |S )Nr6   rV  r"  r   r  s       r   rö  z+BaseRpcV2Parser._populate_response_metadatañ  s1   € ØˆØ˜9Ô%ˆØ Ð(Ð(Ø$+Ð,>Ô$?ˆH�[Ñ!Øˆr   c                 óˆ  — i }|j         }|j        rt|                     ¦   «         }|                     dd ¦  «         d„ |                     ¦   «         D ¦   «         }t          |¦  «        dk    rd}t          ||j        z  ¦  «        ‚|D ]:}||         }|                     |¦  «        }	|	�|  	                    ||	¦  «        ||<   Œ;|S )Nr˜   c                 ó   — i | ]
\  }}|®||“ŒS r   r   rš   s      r   rž   z5BaseRpcV2Parser._handle_structure.<locals>.<dictcomp>þ  rŸ   r   r    r¡   )
r£   r¥   r¦   r§   r¨   r©   r1   r‘   rV   r…   )
r   r+   rƒ   r[   r£   r«   r¬   ræ   r‰   rè   s
             r   rì   z!BaseRpcV2Parser._handle_structureø  sô   € ØˆØ”-ˆØÔ ð 	BØ ŸIšI™KœKˆMØ×Ò˜h¨Ñ-Ô-Ð-ðð Ø!.×!4Ò!4Ñ!6Ô!6ðñ ô ˆMõ �=Ñ!Ô! QÒ&Ð&ð&ð õ *¨)°e´jÑ*@ÑAÔAÐAØ"ð 	ð 	ˆKØ" ;Ô/ˆLØŸ(š( ;Ñ/Ô/ˆKØÐ&Ø&*×&7Ò&7Ø  +ñ'ô '��{Ñ#øð ˆr   c                 ó’   — |                       |d         ¦  «        }|                      ||¦  «        }|                     |¦  «         d S rç  )r¼  r…   r   )r   rZ   r+   rE  r^  rÆ  s         r   r¸  zBaseRpcV2Parser._parse_payload  sI   € Ø×2Ò2°8¸FÔ3CÑDÔDˆØ×'Ò'¨¨Ñ?Ô?ˆØ×Ò˜KÑ(Ô(Ð(Ð(Ð(r   c                 ó    — t          d¦  «        ‚rÊ  rË  rÌ  s     r   r¼  z#BaseRpcV2Parser._initial_body_parse  rÍ  r   N)
r!   r"   r#   rT   r÷  rR   rö  rì   r¸  r¼  r   r   r   r  r  Ö  s}   € € € € € ðð ð ð ;ð ;ð ;ð
ð ð ð
ð ð ðð ð ð0)ð )ð )ð
9ð 9ð 9ð 9ð 9r   r  c                   óH   ‡ — e Zd ZeZd„ Zˆ fd„Zd„ Zd„ Zd„ Z	d„ Z
e	Ze
Zˆ xZS )ÚRestJSONParserc                 ó,   — |                       |¦  «        S r   rÑ  rÌ  s     r   r¼  z"RestJSONParser._initial_body_parse   rÒ  r   c                 óx   •— t          ¦   «                              ||¦  «        }|                      ||¦  «         |S r   )rÆ   rS   Ú_inject_error_code)r   rZ   r+   r»   rz   s       €r   rS   zRestJSONParser._do_error_parse#  s7   ø€ Ý‘”×'Ò'¨°%Ñ8Ô8ˆØ×Ò  xÑ0Ô0Ð0Øˆr   c                 óŠ  — |                       |d         ¦  «        }d }d|d         v r|d         d         }n2d|v sd|v r*|                     d|                     dd¦  «        ¦  «        }|€d S t          |t          ¦  «        r6|                     dd¦  «        d	                              d
d¦  «        d         }||d         d<   d S )NrG   zx-amzn-errortyper6   rº   rn   r)   rà   r    r   rQ  r‰  rq   )r¼  rV   rW   rr   r¹   rS  )r   r»   rZ   rG   rº   s        r   r  z!RestJSONParser._inject_error_code(  sÒ   € ð ×'Ò'¨°Ô(8Ñ9Ô9ˆØˆØ ¨)Ô!4Ð4Ð4Ø˜IÔ&Ð'9Ô:ˆDˆDØ�tˆ^ˆ^˜v¨˜~˜~Ø—8’8˜F D§H¢H¨V°RÑ$8Ô$8Ñ9Ô9ˆDØˆ<ØˆFÝ�d�CÑ Ô ð 	<Ø—:’:˜c 1Ñ%Ô% aÔ(×/Ò/°°QÑ7Ô7¸Ô;ˆDØ!%ˆˆgŒ�vÑÐÐr   c                 ó    — t          |¦  «        S r   )r   r�   s      r   r  zRestJSONParser._handle_boolean7  s   € Ý˜eÑ$Ô$Ð$r   c                 ó    — t          |¦  «        S r   r  r�   s      r   r  zRestJSONParser._handle_integer:  s   € Ý�5‰zŒzÐr   c                 ó    — t          |¦  «        S r   r
  r�   s      r   r  zRestJSONParser._handle_float=  s   € Ý�U‰|Œ|Ðr   )r!   r"   r#   rÏ  r>   r¼  rS   r  r  r  r  r  r  r  r  s   @r   r  r    s‰   ø€ € € € € Ø3Ðð7ð 7ð 7ðð ð ð ð ð
&ð &ð &ð%ð %ð %ðð ð ðð ð ð #€LØ"€N€N€N€N€Nr   r  c                   ó$   — e Zd ZeZd„ Zd„ Zd„ ZdS )ÚRpcV2CBORParserc                 óf   — |dk    r|S |                       |¦  «        }|                      |¦  «        S rÞ  )rw  r  )r   r]  Úbody_contents_streams      r   r¼  z#RpcV2CBORParser._initial_body_parseG  sC   € Ø˜CÒÐØ Ð Ø#×BÒBØñ 
ô  
Ðð ×#Ò#Ð$8Ñ9Ô9Ð9r   c                 ó<  — |                       |d         ¦  «        }|                     d|                     dd¦  «        ¦  «        ddœi dœ}|d         }|                     d¦  «        }|€&|                     d	¦  «        }|�t          |¦  «        }|�fd
|v r|                     d
d¦  «        d         }d|v r|                     dd¦  «        d         }d|v r|                      |||¦  «        }||d         d<   d|v r|d         |                     di ¦  «        d<   |S )NrG   rP  ro   r)   rO  rp   r6   r˜   rH   rà   r    r   rQ  r´   rq   rn   rV  rJ   r"  )r¼  rV   rr   r¹   rS  r¾   rW  )r   rZ   r+   rG   r»   r6   rº   rT  s           r   rS   zRpcV2CBORParser._do_error_parseO  sT  € Ø×'Ò'¨°Ô(8Ñ9Ô9ˆð  Ÿ8š8 I¨t¯xªx¸	À2Ñ/FÔ/FÑGÔGØðð ð !#ð
ð 
ˆð ˜9Ô%ˆà�xŠx˜Ñ!Ô!ˆØˆ<Ø$ŸLšL¨Ñ7Ô7ˆMØÐ(Ý˜=Ñ)Ô)�ØÐØ�dˆ{ˆ{Ø—z’z # qÑ)Ô)¨!Ô,�Ø�dˆ{ˆ{Ø—{’{ 3¨Ñ*Ô*¨1Ô-�Ø# wÐ.Ð.Ø×<Ò<Ø˜' 5ñô �ð &*ˆE�'ŒN˜6Ñ"Ø Ð(Ð(ØDKØ"ôEˆE×ÒÐ/°Ñ4Ô4°[ÑAð ˆr   c                 óô   — |j         |         }|                      ||¦  «        }	 |                     ¦   «         }n# t          $ r d}t	          |¦  «        ‚w xY w|                      |j        ¦  «        }|||<   |S ré  )r£   r’   rê  r   r1   r¼  rë  rì  s	            r   rã  z$RpcV2CBORParser._handle_event_streamo  s‘   € Ø"œ]¨:Ô6ÐØ×0Ò0°Ð;MÑNÔNˆð	1Ø ×5Ò5Ñ7Ô7ˆEˆEøÝ%ð 	1ð 	1ð 	1ØFˆIÝ% iÑ0Ô0Ð0ð	1øøøð ×)Ò)¨%¬-Ñ8Ô8ˆØ)ˆˆzÑØˆrï  N)r!   r"   r#   rÜ  r>   r¼  rS   rã  r   r   r   r%  r%  D  sH   € € € € € Ø3Ðð:ð :ð :ðð ð ð@
ð 
ð 
ð 
ð 
r   r%  c                   óJ   ‡ — e Zd ZeZd„ Zd„ Zd„ Zd„ Ze	ˆ fd„¦   «         Z
ˆ xZS )ÚRestXMLParserc                 óX   — |st          j        d¦  «        S |                      |¦  «        S rÙ   r×  rÙ  s     r   r¼  z!RestXMLParser._initial_body_parse  rÚ  r   c                 óÀ   — |d         rB	 |                       |¦  «        S # t          $ r t                               dd¬¦  «         Y nw xY w|                      |¦  «        S )NrG   z2Exception caught when parsing error response body:T)Úexc_info)Ú_parse_error_from_bodyr1   rM   rN   Ú_parse_error_from_http_statusr{   s      r   rS   zRestXMLParser._do_error_parse„  s†   € ð �FÔð 
	ðØ×2Ò2°8Ñ<Ô<Ð<øÝ&ð ð ð Ý—	’	ØHØ!ð ñ ô ð ð ð ðøøøð
 ×1Ò1°(Ñ;Ô;Ð;s   Š Ÿ&AÁAc                 óø   — t          |d         ¦  «        t          j        j                             |d         d¦  «        dœ|d                              dd¦  «        |d                              dd¦  «        dœdœS )	NrH   r)   rm   r6   rþ  rÿ  )r"  r   rp   )rr   rs   rt   ru   rV   rv   s     r   r0  z+RestXMLParser._parse_error_from_http_statusŸ  sŒ   € õ ˜H ]Ô3Ñ4Ô4Ýœ;Ô0×4Ò4Ø˜]Ô+¨Rñô ðð ð & iÔ0×4Ò4Ð5GÈÑLÔLØ" 9Ô-×1Ò1°,ÀÑCÔCð!ð !ð
ð 
ð 	
r   c                 ó   — |d         }|                       |¦  «        }|                      |¦  «        }|                      |¦  «         |j        dk    rF|                      |¦  «        }|                     dd¦  «         |                     dd¦  «         ||dœS d|v rd|                     d¦  «        i|d<   ddddœi}t          ||¦  «         |S )	NrG   rq   r"  r)   r   rp   rJ   rO  )r  râ   r  r­   rö  r§   r   )r   rZ   r#  rÿ   r[   rh   Údefaults          r   r/  z$RestXMLParser._parse_error_from_body­  sî   € Ø Ô'ˆØ×,Ò,¨\Ñ:Ô:ˆØ×-Ò-¨dÑ3Ô3ˆØ×Ò˜FÑ#Ô#Ð#ØŒ8�wÒÐð ×7Ò7¸ÑAÔAˆHð
 �JŠJ�{ BÑ'Ô'Ð'Ø�JŠJ�x Ñ$Ô$Ð$Ø#¸ÐBÐBÐBØ˜FÐ"Ð"à*5°v·z²zÀ+Ñ7NÔ7NÐ)OˆFÐ%Ñ&Ø¨°BÐ7Ð7Ð8ˆÝ�G˜VÑ$Ô$Ð$Øˆr   c                 óL   •— t          ¦   «                              ||¦  «        }|S r   )rÆ   r  )r   r+   r(   rz   s      €r   r  zRestXMLParser._handle_stringÄ  s!   ø€ å‰wŒw×%Ò% e¨TÑ2Ô2ˆØˆr   )r!   r"   r#   rÕ  r>   r¼  rS   r0  r/  r/   r  r  r  s   @r   r+  r+  |  s†   ø€ € € € € Ø2Ðð9ð 9ð 9ð
<ð <ð <ð6
ð 
ð 
ðð ð ð. ðð ð ð ñ „]ðð ð ð ð r   r+  )Úec2ÚqueryrZ  z	rest-jsonzrest-xmlzsmithy-rpc-v2-cbor)1rÀ   rB   Úhttp.clientrs   rs  rZ  Úloggingr®  rÇ   r£  Úbotocore.compatr   r   Úbotocore.eventstreamr   r   Úbotocore.utilsr   r   r	   r
   r   r   Ú	getLoggerr!   rM   r9   r   r    r/   Ú	Exceptionr1   r3   rÄ   r  r9  rB  r`  rµ  rÏ  rÕ  rÜ  rà  rô  r  r  r%  r+  r   r   r   r   ú<module>r>     s�  ððkð kðZ €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €gÔ˜Ñ!Ô!€à*Ð ð,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð*;ð ;ð ;ðð ð ð*	ð 	ð 	ð 	ð 	˜)ñ 	ô 	ð 	ð\ð \ð \ð \ð \ñ \ô \ð \ð~n#ð n#ð n#ð n#ð n#˜Nñ n#ô n#ð n#ðb1:ð 1:ð 1:ð 1:ð 1:Ð'ñ 1:ô 1:ð 1:ðh!ð !ð !ð !ð !�[ñ !ô !ð !ðH^%ð ^%ð ^%ð ^%ð ^%�^ñ ^%ô ^%ð ^%ðB~ð ~ð ~ð ~ð ~�^ñ ~ô ~ð ~ðBP9ð P9ð P9ð P9ð P9˜Nñ P9ô P9ð P9ðf7ð 7ð 7ð 7ð 7Ð1°>ñ 7ô 7ð 7ð
9ð 9ð 9ð 9ð 9Ð0Ð2Gñ 9ô 9ð 9ð
ð 
ð 
ð 
ð 
Ð1°>ñ 
ô 
ð 
ð$5ð $5ð $5ð $5ð $5�ñ $5ô $5ð $5ðNu1ð u1ð u1ð u1ð u1�^ñ u1ô u1ð u1ðpD9ð D9ð D9ð D9ð D9�nñ D9ô D9ð D9ðN$#ð $#ð $#ð $#ð $#�^ ^ñ $#ô $#ð $#ðN5ð 5ð 5ð 5ð 5�o ~ñ 5ô 5ð 5ðpKð Kð Kð Kð K�NÐ$9ñ Kô Kð Kð^ ØØØØØ)ðð Ð Ð Ð r   